diff options
| author | ruki <[email protected]> | 2022-08-19 00:44:36 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-08-19 00:44:36 +0800 |
| commit | 91aad5568b16ffcbef11dec173028ab6c0123af9 (patch) | |
| tree | 76179ee7f6fbabd244654f6e53fa5029cfba5329 | |
| parent | 435a897299d6ce5ded52c4a6f6c38ee771b0b1a3 (diff) | |
improve requires
| -rw-r--r-- | xmake/modules/private/action/require/impl/package.lua | 26 |
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 |
