summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2022-08-19 00:44:36 +0800
committerruki <[email protected]>2022-08-19 00:44:36 +0800
commit91aad5568b16ffcbef11dec173028ab6c0123af9 (patch)
tree76179ee7f6fbabd244654f6e53fa5029cfba5329
parent435a897299d6ce5ded52c4a6f6c38ee771b0b1a3 (diff)
improve requires
-rw-r--r--xmake/modules/private/action/require/impl/package.lua26
1 files changed, 16 insertions, 10 deletions
diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua
index 7a18e1684..e90922171 100644
--- a/xmake/modules/private/action/require/impl/package.lua
+++ b/xmake/modules/private/action/require/impl/package.lua
@@ -466,15 +466,10 @@ function _init_requireinfo(requireinfo, package, opt)
requireinfo.configs = requireinfo.configs or {}
if opt.is_toplevel then
requireinfo.is_toplevel = true
- end
-end
--- finish requireinfo
-function _finish_requireinfo(requireinfo, package)
- requireinfo.configs = requireinfo.configs or {}
- if package:is_headeronly() then
- requireinfo.configs.vs_runtime = nil
- else
+ -- we always pass some configurations from toplevel even it's headeronly, because it's library deps need inherit them
+ -- but we will reset it for headeronly package after finishing requireinfo
+ -- @see https://github.com/xmake-io/xmake/issues/2688
if package:is_library() then
requireinfo.configs.toolchains = requireinfo.configs.toolchains or project.get("target.toolchains")
if project.policy("package.inherit_external_configs") then
@@ -486,8 +481,19 @@ function _finish_requireinfo(requireinfo, package)
requireinfo.configs.vs_runtime = requireinfo.configs.vs_runtime or get_config("vs_runtime")
end
requireinfo.configs.lto = requireinfo.configs.lto or project.policy("build.optimization.lto")
- if package:is_plat("windows") then
- requireinfo.configs.vs_runtime = requireinfo.configs.vs_runtime or "MT"
+ end
+end
+
+-- finish requireinfo
+function _finish_requireinfo(requireinfo, package)
+ requireinfo.configs = requireinfo.configs or {}
+ if package:is_headeronly() then
+ requireinfo.configs.vs_runtime = nil
+ requireinfo.configs.toolchains = nil
+ requireinfo.configs.lto = nil
+ else
+ if requireinfo.configs.vs_runtime == nil and package:is_plat("windows") then
+ requireinfo.configs.vs_runtime = "MT"
end
end
-- we need ensure readonly configs