diff options
| author | ruki <[email protected]> | 2022-10-08 00:53:01 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-10-08 00:53:01 +0800 |
| commit | 452ada3fd46143d8428eb7eb5186a41e795b6339 (patch) | |
| tree | f139e5c4d582eb92642c6883a837d7c36990f022 | |
| parent | 29a3268fbf174eafd0b01bc4731a81f72a98570d (diff) | |
load package rules
| -rw-r--r-- | xmake/actions/config/main.lua | 35 | ||||
| -rw-r--r-- | xmake/core/project/package.lua | 6 |
2 files changed, 34 insertions, 7 deletions
diff --git a/xmake/actions/config/main.lua b/xmake/actions/config/main.lua index 1ee187c78..062e21696 100644 --- a/xmake/actions/config/main.lua +++ b/xmake/actions/config/main.lua @@ -196,11 +196,32 @@ function _config_targets(targetname) end end --- load rules in the required packages -function _load_package_rules() - for _, pkginfo in pairs(project.required_packages()) do - print(pkginfo:name()) - print(table.keys(pkginfo:rules())) +-- load rules in the required packages for target +function _load_package_rules_for_target(target, packages) + for _, rulename in ipairs(target:get("rules")) do + local packagename = rulename:match("@(.-)/") + if packagename then + local pkginfo = packages[packagename] + if pkginfo then + local r = pkginfo:rule(rulename) + if r then + target:rule_add(r) + end + end + end + end +end + +-- load rules in the required packages for targets +function _load_package_rules_for_targets() + local packages = project.required_packages() + if not packages then + return + end + for _, target in ipairs(project.ordertargets()) do + if target:is_enabled() then + _load_package_rules_for_target(target, packages) + end end end @@ -450,8 +471,8 @@ force to build in current directory via run `xmake -P .`]], os.projectdir()) _check_target_toolchains() end - -- load package rules - _load_package_rules() + -- load package rules for targets + _load_package_rules_for_targets() -- config targets _config_targets(targetname) diff --git a/xmake/core/project/package.lua b/xmake/core/project/package.lua index 8b4e6a28b..388862d91 100644 --- a/xmake/core/project/package.lua +++ b/xmake/core/project/package.lua @@ -166,6 +166,11 @@ function _instance:enable(enabled) self:set("__enabled", enabled) end +-- get the given rule +function _instance:rule(name) + return self:rules()[name] +end + -- get package rules function _instance:rules() local rules = self._RULES @@ -190,6 +195,7 @@ function _instance:rules() -- make rule instances rules = {} for rulename, ruleinfo in pairs(ruleinfos) do + rulename = "@" .. self:name() .. "/" .. rulename local instance = rule.new(rulename, ruleinfo) rules[rulename] = instance end |
