diff options
| author | ruki <[email protected]> | 2017-08-14 15:35:31 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2017-08-14 15:35:43 +0800 |
| commit | 06aaf7d5a583fd5a6574661e4b58fbd9f431817a (patch) | |
| tree | 42742b32d29d776c9420e201e7b9095d9f54317f /xmake/core/project/project.lua | |
| parent | dba45d143d8aff047da82cbe1a881056e6e4bc00 (diff) | |
fix target deps
Diffstat (limited to 'xmake/core/project/project.lua')
| -rw-r--r-- | xmake/core/project/project.lua | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua index d57721d76..5d9170e1e 100644 --- a/xmake/core/project/project.lua +++ b/xmake/core/project/project.lua @@ -401,6 +401,22 @@ function project.get(name) end end +-- load deps for option and target +function project._load_deps(target, targets, deps, orderdeps) + + -- get dep targets + for _, dep in ipairs(table.wrap(target:get("deps"))) do + local deptarget = targets[dep] + if deptarget then + project._load_deps(deptarget, targets, deps, orderdeps) + if not deps[dep] then + deps[dep] = deptarget + table.insert(orderdeps, deptarget) + end + end + end +end + -- load targets function project._load_targets() @@ -434,10 +450,9 @@ function project._load_targets() -- load and attach target deps for _, target in pairs(targets) do - target._DEPS = {} - for _, dep in ipairs(table.wrap(target:get("deps"))) do - target._DEPS[dep] = targets[dep] - end + target._DEPS = target._DEPS or {} + target._ORDERDEPS = target._ORDERDEPS or {} + project._load_deps(target, targets, target._DEPS, target._ORDERDEPS) end -- enter toolchains environment @@ -517,10 +532,9 @@ function project._load_options(disable_filter) -- load and attach options deps for _, opt in pairs(options) do - opt._DEPS = {} - for _, dep in ipairs(table.wrap(opt:get("deps"))) do - opt._DEPS[dep] = options[dep] - end + opt._DEPS = opt._DEPS or {} + opt._ORDERDEPS = opt._ORDERDEPS or {} + project._load_deps(opt, options, opt._DEPS, opt._ORDERDEPS) end -- ok? |
