diff options
| author | ruki <[email protected]> | 2022-10-19 22:30:32 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-10-19 22:30:32 +0800 |
| commit | 4b1fea104fcf5e7aa0d180e06e2a548468534e7f (patch) | |
| tree | cfee1bd35462517ef54ac3f9912f92b171a71637 /xmake/modules | |
| parent | 9b1e01c0b6deb3eaae25038643e11ea482ea248a (diff) | |
improve to register packages
Diffstat (limited to 'xmake/modules')
| -rw-r--r-- | xmake/modules/private/action/require/impl/register_packages.lua | 19 |
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 |
