summaryrefslogtreecommitdiff
path: root/xmake/core/project/project.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2022-09-27 22:37:12 +0800
committerruki <[email protected]>2022-09-27 22:37:12 +0800
commit466896dac3710e145baa671c95af27a97dbb5ebe (patch)
treee79248fb230c650f55f964bfe8ee0ecd4b3dfc1d /xmake/core/project/project.lua
parent701f42aec0dd4acb291a7c69582823687a5edf85 (diff)
impl target:rule_set
Diffstat (limited to 'xmake/core/project/project.lua')
-rw-r--r--xmake/core/project/project.lua40
1 files changed, 4 insertions, 36 deletions
diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua
index 3c4c39232..62e180a87 100644
--- a/xmake/core/project/project.lua
+++ b/xmake/core/project/project.lua
@@ -34,6 +34,7 @@ local hashset = require("base/hashset")
local baseoption = require("base/option")
local deprecated = require("base/deprecated")
local interpreter = require("base/interpreter")
+local instance_deps = require("base/private/instance_deps")
local memcache = require("cache/memcache")
local rule = require("project/rule")
local target = require("project/target")
@@ -207,39 +208,6 @@ function project._load(force, disable_filter)
return true
end
--- load deps for instance: e.g. option, target and rule
---
--- e.g.
---
--- a.deps = b
--- b.deps = c
---
--- orderdeps: c -> b -> a
---
-function project._load_deps(instance, instances, deps, orderdeps, depspath)
- for _, dep in ipairs(table.wrap(instance:get("deps"))) do
- local depinst = instances[dep]
- if depinst then
- local depspath_sub
- if depspath then
- for idx, name in ipairs(depspath) do
- if name == dep then
- local circular_deps = table.slice(depspath, idx)
- table.insert(circular_deps, dep)
- os.raise("circular dependency(%s) detected!", table.concat(circular_deps, ", "))
- end
- end
- depspath_sub = table.join(depspath, dep)
- end
- project._load_deps(depinst, instances, deps, orderdeps, depspath_sub)
- if not deps[dep] then
- deps[dep] = depinst
- table.insert(orderdeps, depinst)
- end
- end
- end
-end
-
-- load scope from the project file
function project._load_scope(scope_kind, deduplicate, enable_filter)
@@ -330,7 +298,7 @@ function project._load_rules()
if base then
instance._BASE = instances[base]
end
- project._load_deps(instance, instances, instance._DEPS, instance._ORDERDEPS, {instance:name()})
+ instance_deps.load_deps(instance, instances, instance._DEPS, instance._ORDERDEPS, {instance:name()})
end
return rules
end
@@ -452,7 +420,7 @@ function project._load_targets()
-- load deps
t._DEPS = t._DEPS or {}
t._ORDERDEPS = t._ORDERDEPS or {}
- project._load_deps(t, targets, t._DEPS, t._ORDERDEPS, {t:name()})
+ instance_deps.load_deps(t, targets, t._DEPS, t._ORDERDEPS, {t:name()})
end
-- sort targets for all deps
@@ -545,7 +513,7 @@ function project._load_options(disable_filter)
for _, opt in pairs(options) do
opt._DEPS = opt._DEPS or {}
opt._ORDERDEPS = opt._ORDERDEPS or {}
- project._load_deps(opt, options, opt._DEPS, opt._ORDERDEPS, {opt:name()})
+ instance_deps.load_deps(opt, options, opt._DEPS, opt._ORDERDEPS, {opt:name()})
end
return options
end