summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2022-10-19 00:52:36 +0800
committerruki <[email protected]>2022-10-19 00:52:36 +0800
commit4f870472e9defeaa236ef778a0b70baade344787 (patch)
tree99662f7cd19eea8c1f1696aaeccfe4056aaea48d
parent0cc19007cf7c5de02f50153a4d0d77775e6ccfcb (diff)
add __base
-rw-r--r--xmake/modules/package/manager/xmake/find_package.lua35
1 files changed, 22 insertions, 13 deletions
diff --git a/xmake/modules/package/manager/xmake/find_package.lua b/xmake/modules/package/manager/xmake/find_package.lua
index e913763b2..f55601596 100644
--- a/xmake/modules/package/manager/xmake/find_package.lua
+++ b/xmake/modules/package/manager/xmake/find_package.lua
@@ -28,6 +28,20 @@ import("core.language.language")
import("lib.detect.find_file")
import("lib.detect.find_library")
+-- deduplicate values
+function _deduplicate_values(values)
+ for _, k in ipairs(table.keys(values)) do
+ local v = values[k]
+ if type(v) == "table" then
+ if k == "links" or k == "syslinks" or k == "frameworks" then
+ values[k] = table.reverse_unique(v)
+ else
+ values[k] = table.unique(v)
+ end
+ end
+ end
+end
+
-- find package from the repository (maybe only include and no links)
function _find_package_from_repo(name, opt)
@@ -169,20 +183,24 @@ function _find_package_from_repo(name, opt)
end
-- inherit the other prefix variables
+ local components_base = {includedirs = result.includedirs, linkdirs = result.linkdirs}
for name, values in pairs(vars) do
if name ~= "links" and name ~= "linkdirs" and name ~= "includedirs" then
result[name] = values
+ components_base[name] = values
end
end
- -- save components
+ -- get component values
if components and manifest.components then
local vars = manifest.components.vars
if vars then
+ _deduplicate_values(components_base)
+ result.components = result.components or {}
+ result.components.__base = components_base
for _, component_name in ipairs(components) do
local comp = vars[component_name]
if comp then
- result.components = result.components or {}
result.components[component_name] = comp
-- merge component values to root
@@ -196,17 +214,8 @@ function _find_package_from_repo(name, opt)
end
end
- -- remove repeat values
- for _, k in ipairs(table.keys(result)) do
- local v = result[k]
- if type(v) == "table" then
- if k == "links" or k == "syslinks" or k == "frameworks" then
- result[k] = table.reverse_unique(v)
- else
- result[k] = table.unique(v)
- end
- end
- end
+ -- deduplicate result
+ _deduplicate_values(result)
-- update the project references file
local projectdir = os.projectdir()