summaryrefslogtreecommitdiff
path: root/xmake/modules
diff options
context:
space:
mode:
authorruki <[email protected]>2022-10-19 22:30:32 +0800
committerruki <[email protected]>2022-10-19 22:30:32 +0800
commit4b1fea104fcf5e7aa0d180e06e2a548468534e7f (patch)
treecfee1bd35462517ef54ac3f9912f92b171a71637 /xmake/modules
parent9b1e01c0b6deb3eaae25038643e11ea482ea248a (diff)
improve to register packages
Diffstat (limited to 'xmake/modules')
-rw-r--r--xmake/modules/private/action/require/impl/register_packages.lua19
1 files changed, 18 insertions, 1 deletions
diff --git a/xmake/modules/private/action/require/impl/register_packages.lua b/xmake/modules/private/action/require/impl/register_packages.lua
index 1bedc2969..59d9093e5 100644
--- a/xmake/modules/private/action/require/impl/register_packages.lua
+++ b/xmake/modules/private/action/require/impl/register_packages.lua
@@ -34,7 +34,7 @@ end
-- libs: includedirs, links, linkdirs ...
function _register_required_package_libs(instance, required_package, is_deps)
if instance:is_library() then
- local fetchinfo = instance:fetch()
+ local fetchinfo = table.clone(instance:fetch())
if fetchinfo then
fetchinfo.name = nil
if is_deps then
@@ -50,7 +50,24 @@ function _register_required_package_libs(instance, required_package, is_deps)
fetchinfo.static = nil
fetchinfo.shared = nil
end
+
+ -- merge into the root values
+ local components = fetchinfo.components
+ fetchinfo.components = nil
required_package:add(fetchinfo)
+
+ -- merge into the components values
+ local required_components = required_package:get("components")
+ if required_components then
+ local components_base = required_components.__base or {}
+ for k, v in pairs(fetchinfo) do
+ local values = table.wrap(components_base[k])
+ components_base[k] = table.unwrap(table.unique(table.join(values, v)))
+ end
+ required_components.__base = components_base
+ else
+ required_package:set("components", components)
+ end
end
end
end