summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2023-08-18 22:41:39 +0800
committerruki <[email protected]>2023-08-18 22:41:39 +0800
commit15c58268db07aae1652fc59ec462defcb45eb99c (patch)
treefb0f5a4ca5bf9c2070ac3ba25cf03e3f0d689f66
parentbdffbd192fa1f41da7945756b6f20e8ed8bbf080 (diff)
merge and override multiple require confs #3952
-rw-r--r--xmake/modules/private/action/require/impl/package.lua20
1 files changed, 9 insertions, 11 deletions
diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua
index 9f2683fe5..4a94677b4 100644
--- a/xmake/modules/private/action/require/impl/package.lua
+++ b/xmake/modules/private/action/require/impl/package.lua
@@ -562,7 +562,7 @@ function _merge_requireinfo(requireinfo, requirepath)
end
end
- -- append requireconf_extra into requireinfo
+ -- Append requireconf_extra into requireinfo
-- and the configs of add_requires have a higher priority than add_requireconfs.
--
-- e.g.
@@ -571,16 +571,20 @@ function _merge_requireinfo(requireinfo, requirepath)
--
-- foo and bar will be debug mode
--
- -- we can also override the configs of add_requires
+ -- We can also override the configs of add_requires
--
-- e.g.
-- add_requires("zlib 1.2.11")
-- add_requireconfs("zlib", {override = true, version = "1.2.10"})
--
- -- we override the version of zlib to 1.2.10
+ -- We override the version of zlib to 1.2.10
--
- if #requireconf_result == 1 then
- local requireconf_extra = requireconf_result[1].requireconf_extra
+ -- If the same dependency is matched to multiple configurations,
+ -- the configurations are merged by default,
+ -- and if override is set, then it rewrites the previous configurations.
+ --
+ for _, item in ipairs(requireconf_result) do
+ local requireconf_extra = item.requireconf_extra
if requireconf_extra then
-- preprocess requireconf_extra, (debug, override ..)
local override = requireconf_extra.override
@@ -604,12 +608,6 @@ function _merge_requireinfo(requireinfo, requirepath)
end
end
end
- elseif #requireconf_result > 1 then
- local confs = {}
- for _, item in ipairs(requireconf_result) do
- table.insert(confs, item.requireconf)
- end
- raise("package(%s) will match multiple add_requireconfs(%s)!", requirepath, table.concat(confs, " "))
end
end