summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-03-14 22:50:28 +0800
committerruki <[email protected]>2019-03-14 11:02:51 +0800
commitfbf5ca5b9f93713dd2d7017674aebcdd31aaa2aa (patch)
tree89f1bd9604f4f2bf58fe99b3fe67655c6d2f652f
parentdd6aeb6af01259e38472228ecc1aa7c9fc96f7bd (diff)
add_configs for package
-rw-r--r--xmake/actions/require/impl/package.lua3
-rw-r--r--xmake/actions/require/info.lua28
-rw-r--r--xmake/core/package/package.lua26
3 files changed, 46 insertions, 11 deletions
diff --git a/xmake/actions/require/impl/package.lua b/xmake/actions/require/impl/package.lua
index 6a1b0c986..b7945d5d4 100644
--- a/xmake/actions/require/impl/package.lua
+++ b/xmake/actions/require/impl/package.lua
@@ -128,7 +128,8 @@ function _parse_require(require_str, requires_extra, parentinfo)
group = require_extra.group, -- only uses the first package in same group
system = require_extra.system, -- default: true, we can set it to disable system package manually
option = require_extra.option, -- set and attach option
- config = require_extra.config, -- the build configuration of package
+ configs = require_extra.configs or -- the build configuration of package
+ require_extra.config, -- TODO deprecated
default = require_extra.default, -- default: true, we can set it to disable package manually
optional = parentinfo.optional or require_extra.optional -- default: false, inherit parentinfo.optional
}
diff --git a/xmake/actions/require/info.lua b/xmake/actions/require/info.lua
index a6fc25000..75c171559 100644
--- a/xmake/actions/require/info.lua
+++ b/xmake/actions/require/info.lua
@@ -154,6 +154,34 @@ function main(package_names)
end
end
+ -- show requires
+ cprint(" -> ${magenta}requires${clear}:")
+ cprint(" -> ${cyan}plat${clear}: %s", instance:plat())
+ cprint(" -> ${cyan}arch${clear}: %s", instance:arch())
+ cprint(" -> ${cyan}mode${clear}: %s", instance:mode())
+ local configs_required = instance:configs()
+ if configs_required then
+ cprint(" -> ${cyan}configs${clear}:")
+ for name, value in pairs(configs_required) do
+ cprint(" -> %s: %s", name, value)
+ end
+ end
+
+ -- show configs
+ local configs = instance:get("configs")
+ if configs then
+ cprint(" -> ${magenta}configs${clear}:")
+ for _, conf in ipairs(configs) do
+ cprint(" -> ${cyan}%s${clear}:", conf)
+ for name, value in pairs(instance:extraconf("configs", conf)) do
+ if type(value) == "table" then
+ value = string.serialize(value, true)
+ end
+ cprint(" -> %s: %s", name, value)
+ end
+ end
+ end
+
-- end
print("")
end
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index 91d5bb07f..e3a6579d6 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -76,6 +76,11 @@ function _instance:add(name, ...)
self._INFO:apival_add(name, ...)
end
+-- get the extra configuration
+function _instance:extraconf(name, item, key)
+ return self._INFO:extraconf(name, item, key)
+end
+
-- get the package description
function _instance:description()
return self:get("description")
@@ -418,11 +423,19 @@ function _instance:requireinfo_set(requireinfo)
self._REQUIREINFO = requireinfo
end
--- get the all configuration values of package
+-- get the given configuration value of package
+function _instance:config(name)
+ local configs = self:configs()
+ if configs then
+ return configs[name]
+ end
+end
+
+-- get the configurations of package
function _instance:configs()
local requireinfo = self:requireinfo()
if requireinfo then
- return requireinfo.config
+ return requireinfo.configs
end
end
@@ -447,14 +460,6 @@ function _instance:group()
end
end
--- get the given configuration value of package
-function _instance:config(name)
- local configs = self:configs()
- if configs then
- return configs[name]
- end
-end
-
-- is optional package?
function _instance:optional()
local requireinfo = self:requireinfo()
@@ -691,6 +696,7 @@ function package.apis()
, "package.add_deps"
, "package.add_urls"
, "package.add_imports"
+ , "package.add_configs"
}
, script =
{