summaryrefslogtreecommitdiff
path: root/xmake/core/project/target.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2020-05-02 21:36:40 +0800
committerruki <[email protected]>2020-05-02 21:42:01 +0800
commit6f2c2183fb68dba467e8b0b781d8ecb9054ee716 (patch)
tree3f1ce560c82e89fa2e24324ae391ca091791bde9 /xmake/core/project/target.lua
parent5a60c8f0d02f3624909f85dff8d5231af63807d3 (diff)
add target:get_from_xxx
Diffstat (limited to 'xmake/core/project/target.lua')
-rw-r--r--xmake/core/project/target.lua41
1 files changed, 41 insertions, 0 deletions
diff --git a/xmake/core/project/target.lua b/xmake/core/project/target.lua
index f5b69de76..5e67d0f7e 100644
--- a/xmake/core/project/target.lua
+++ b/xmake/core/project/target.lua
@@ -305,6 +305,47 @@ function _instance:get(name, opt)
end
end
+-- get values from target dependencies
+function _instance:get_from_deps(name, opt)
+ local values = {}
+ local orderdeps = self:orderdeps()
+ local total = #orderdeps
+ for idx, _ in ipairs(orderdeps) do
+ local dep = orderdeps[total + 1 - idx]
+ local depinherit = self:extraconf("deps", dep:name(), "inherit")
+ if depinherit == nil or depinherit then
+ table.join2(values, dep:get(name, opt))
+ end
+ end
+ return values
+end
+
+-- get values from target options
+function _instance:get_from_opts(name)
+ local values = {}
+ for _, opt in ipairs(self:orderopts()) do
+ table.join2(values, table.wrap(opt:get(name)))
+ end
+ return values
+end
+
+-- get values from target packages
+function _instance:get_from_pkgs(name)
+ local values = {}
+ for _, pkg in ipairs(self:orderpkgs()) do
+ -- uses them instead of the builtin configs if exists extra package config
+ -- e.g. `add_packages("xxx", {links = "xxx"})`
+ local configinfo = self:pkgconfig(pkg:name())
+ if configinfo and configinfo[name] then
+ table.join2(values, configinfo[name])
+ else
+ -- uses the builtin package configs
+ table.join2(values, pkg:get(name))
+ end
+ end
+ return values
+end
+
-- set the value to the target info
function _instance:set(name, ...)
self._INFO:apival_set(name, ...)