summaryrefslogtreecommitdiff
path: root/xmake/core/project/rule.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2022-09-27 00:42:29 +0800
committerruki <[email protected]>2022-09-27 00:42:29 +0800
commit411e455ba256d4f67289a267f62a74930212c8f9 (patch)
tree37f7de08a517453c1370fa5541d880690598fa1b /xmake/core/project/rule.lua
parent76bced915dfb870a34528270a02236a3f5f6ff4e (diff)
add set_base to rules
Diffstat (limited to 'xmake/core/project/rule.lua')
-rw-r--r--xmake/core/project/rule.lua22
1 files changed, 20 insertions, 2 deletions
diff --git a/xmake/core/project/rule.lua b/xmake/core/project/rule.lua
index 599294a45..841203c9d 100644
--- a/xmake/core/project/rule.lua
+++ b/xmake/core/project/rule.lua
@@ -150,6 +150,7 @@ function rule.apis()
"rule.set_extensions"
, "rule.set_sourcekinds"
, "rule.set_kind"
+ , "rule.set_base"
-- rule.add_xxx
, "rule.add_deps"
, "rule.add_imports"
@@ -214,14 +215,31 @@ function rule.new(name, info)
return instance
end
+-- get the base rule
+function rule:base()
+ return self._BASE
+end
+
-- get the rule info
function rule:get(name)
- return self._INFO:get(name)
+ local value = self._INFO:get(name)
+ if value == nil and self:base() then
+ value = self:base():get(name)
+ end
+ if value ~= nil then
+ return value
+ end
end
-- get the extra configuration
function rule:extraconf(name, item, key)
- return self._INFO:extraconf(name, item, key)
+ local value = self._INFO:extraconf(name, item, key)
+ if value == nil and self:base() then
+ value = self:base():extraconf(name)
+ end
+ if value ~= nil then
+ return value
+ end
end
-- get the rule name