summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2023-10-27 00:43:52 +0800
committerruki <[email protected]>2023-10-27 00:43:52 +0800
commit5361a0c73673a5760297bd56a6ac8a035b396d6e (patch)
tree3bb3b3d54965e7cd057754a9ef8a5f1f5459fd53
parent9bc1e3b553d3c8cd3f96c46cbc7b4aab23b29bfc (diff)
improve default config value
-rw-r--r--xmake/modules/private/action/require/impl/package.lua52
1 files changed, 29 insertions, 23 deletions
diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua
index ef8ce27bb..ad3194139 100644
--- a/xmake/modules/private/action/require/impl/package.lua
+++ b/xmake/modules/private/action/require/impl/package.lua
@@ -308,11 +308,22 @@ function _sort_librarydeps(package, opt)
return orderdeps
end
+-- get builtin configuration default values
+function _get_default_config_value_of(name)
+ local defaults = {
+ debug = false,
+ shared = false,
+ pic = true,
+ }
+ return defaults[name]
+end
+
-- add some builtin configurations to package
function _add_package_configurations(package)
-- we can define configs to override it and it's default value in package()
if package:extraconf("configs", "debug", "default") == nil then
- package:add("configs", "debug", {builtin = true, description = "Enable debug symbols.", default = false, type = "boolean"})
+ local default = _get_default_config_value_of("debug")
+ package:add("configs", "debug", {builtin = true, description = "Enable debug symbols.", default = default, type = "boolean"})
end
if package:extraconf("configs", "shared", "default") == nil then
-- we always use static library if it's for wasm platform
@@ -320,10 +331,12 @@ function _add_package_configurations(package)
if package:is_plat("wasm") then
readonly = true
end
- package:add("configs", "shared", {builtin = true, description = "Build shared library.", default = false, readonly = readonly, type = "boolean"})
+ local default = _get_default_config_value_of("shared")
+ package:add("configs", "shared", {builtin = true, description = "Build shared library.", default = default, readonly = readonly, type = "boolean"})
end
if package:extraconf("configs", "pic", "default") == nil then
- package:add("configs", "pic", {builtin = true, description = "Enable the position independent code.", default = true, type = "boolean"})
+ local default = _get_default_config_value_of("pic")
+ package:add("configs", "pic", {builtin = true, description = "Enable the position independent code.", default = default, type = "boolean"})
end
if package:extraconf("configs", "lto", "default") == nil then
package:add("configs", "lto", {builtin = true, description = "Enable the link-time build optimization.", type = "boolean"})
@@ -502,17 +515,12 @@ function _init_requireinfo(requireinfo, package, opt)
if project.policy("package.inherit_external_configs") then
requireinfo.configs.vs_runtime = requireinfo.configs.vs_runtime or get_config("vs_runtime")
end
- local function initconfig(key, default)
- if requireinfo.configs[key] == nil then
- requireinfo.configs[key] = default
- end
- -- set false key as nil so hashes match
- if not requireinfo.configs[key] then
- requireinfo.configs[key] = nil
- end
+ if requireinfo.configs.lto == nil then
+ requireinfo.configs.lto = project.policy("build.optimization.lto")
+ end
+ if requireinfo.configs.asan == nil then
+ requireinfo.configs.asan = project.policy("build.sanitizer.address")
end
- initconfig("asan", project.policy("build.sanitizer.address"))
- initconfig("lto", project.policy("build.optimization.lto"))
end
-- but we will ignore some configs for buildhash in the headeronly and host/binary package
-- @note on_test still need these configs, @see https://github.com/xmake-io/xmake/issues/4124
@@ -546,6 +554,14 @@ function _finish_requireinfo(requireinfo, package)
requireinfo.configs[name] = nil
end
end
+ -- sync default value to prevent cache mismatch (buildhash)
+ -- @see https://github.com/xmake-io/xmake/pull/4324
+ for k, v in pairs(requireinfo.configs) do
+ local default = _get_default_config_value_of(k)
+ if v == default then
+ requireinfo.configs[k] = nil
+ end
+ end
end
-- merge requireinfo from `add_requireconfs()`
@@ -655,10 +671,6 @@ function _inherit_parent_configs(requireinfo, package, parentinfo)
if requireinfo_configs.pic == nil then
requireinfo_configs.pic = parentinfo_configs.pic
end
- -- remove pic entry if pic is true (to prevent cache mismatch), as it the default behavior
- if requireinfo_configs.pic == true then
- requireinfo_configs.pic = nil -- pic is enabled by default
- end
end
if parentinfo.plat then
requireinfo.plat = parentinfo.plat
@@ -669,13 +681,7 @@ function _inherit_parent_configs(requireinfo, package, parentinfo)
requireinfo_configs.toolchains = requireinfo_configs.toolchains or parentinfo_configs.toolchains
requireinfo_configs.vs_runtime = requireinfo_configs.vs_runtime or parentinfo_configs.vs_runtime
requireinfo_configs.lto = requireinfo_configs.lto or parentinfo_configs.lto
- if not requireinfo_configs.lto then
- requireinfo_configs.lto = nil
- end
requireinfo_configs.asan = requireinfo_configs.asan or parentinfo_configs.asan
- if not requireinfo_configs.asan then
- requireinfo_configs.asan = nil
- end
requireinfo.configs = requireinfo_configs
end
end