diff options
| author | ruki <[email protected]> | 2021-01-19 00:42:52 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-01-19 00:42:52 +0800 |
| commit | abd2bcb586035ac27358e7c6f31f446284ae36be (patch) | |
| tree | 6fd96f66e45df1ae191858660b78c6248949c37e /xmake/core | |
| parent | 3ce4a0366dc45361ee2ed1881391589cdf1b5c26 (diff) | |
add rule kind
Diffstat (limited to 'xmake/core')
| -rw-r--r-- | xmake/core/project/project.lua | 17 | ||||
| -rw-r--r-- | xmake/core/project/rule.lua | 11 |
2 files changed, 21 insertions, 7 deletions
diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua index 60ba7a0ea..bb96c79f0 100644 --- a/xmake/core/project/project.lua +++ b/xmake/core/project/project.lua @@ -462,15 +462,18 @@ function project._load_targets() for _, rulename in ipairs(rulenames) do local r = project.rule(rulename) or rule.rule(rulename) if r then - t._RULES[rulename] = r - for _, deprule in ipairs(r:orderdeps()) do - local name = deprule:name() - if not t._RULES[name] then - t._RULES[name] = deprule - table.insert(t._ORDERULES, deprule) + -- only add target rules + if r:kind() == "target" then + t._RULES[rulename] = r + for _, deprule in ipairs(r:orderdeps()) do + local name = deprule:name() + if not t._RULES[name] then + t._RULES[name] = deprule + table.insert(t._ORDERULES, deprule) + end end + table.insert(t._ORDERULES, r) end - table.insert(t._ORDERULES, r) else return nil, string.format("unknown rule(%s) in target(%s)!", rulename, t:name()) end diff --git a/xmake/core/project/rule.lua b/xmake/core/project/rule.lua index 7b984a3f4..53c1a9854 100644 --- a/xmake/core/project/rule.lua +++ b/xmake/core/project/rule.lua @@ -155,6 +155,7 @@ function rule.apis() -- rule.set_xxx "rule.set_extensions" , "rule.set_sourcekinds" + , "rule.set_kind" -- rule.add_xxx , "rule.add_deps" , "rule.add_imports" @@ -221,6 +222,16 @@ function rule:name() return self._NAME end +-- get the rule kind +-- +-- current supported kind: +-- - target: default, only for each target +-- - project: global rule, for whole project +-- +function rule:kind() + return self:get("kind") or "target" +end + -- get the given dependent rule function rule:dep(name) local deps = self:deps() |
