diff options
| author | ruki <[email protected]> | 2021-07-22 23:59:56 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-07-22 23:59:56 +0800 |
| commit | 161aae37144ebeba16c70956d30c0792de5fa328 (patch) | |
| tree | 3557897e040da1d7820c83a85c9c5840ccaa1fbf | |
| parent | 724a295b705555c329b1f8d89572892a74082386 (diff) | |
add set_defaultxxx
| -rw-r--r-- | tests/apis/add_allowedxxx/xmake.lua | 11 | ||||
| -rw-r--r-- | xmake/actions/config/main.lua | 3 | ||||
| -rw-r--r-- | xmake/actions/config/menuconf.lua | 2 | ||||
| -rw-r--r-- | xmake/core/project/project.lua | 93 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/core/project/project.lua | 1 | ||||
| -rw-r--r-- | xmake/modules/private/detect/find_platform.lua | 4 |
6 files changed, 56 insertions, 58 deletions
diff --git a/tests/apis/add_allowedxxx/xmake.lua b/tests/apis/add_allowedxxx/xmake.lua index 8db790ffa..e2f1f1ad9 100644 --- a/tests/apis/add_allowedxxx/xmake.lua +++ b/tests/apis/add_allowedxxx/xmake.lua @@ -1,9 +1,12 @@ add_rules("mode.debug", "mode.release") -add_allowedmodes("releasedbg", "debug", {default = "releasedbg"}) -add_allowedplats("windows", "linux", "macosx", {default = "linux"}) -add_allowedarchs("arm64", "x86_64", {plat = "macosx", default = "x86_64"}) -add_allowedarchs("i386", {plat = "linux", default = "i386"}) +set_defaultmode("releasedbg") +set_defaultplat("linux") +set_defaultarchs("macosx|arm64", "linux|i386", "armv7") + +set_allowedmodes("releasedbg", "debug") +set_allowedplats("windows", "linux", "macosx") +set_allowedarchs("macosx|arm64", "macosx|x86_64", "linux|i386", "linux|x86_64") target("test") set_kind("binary") diff --git a/xmake/actions/config/main.lua b/xmake/actions/config/main.lua index b0cfb6fd6..e1095c509 100644 --- a/xmake/actions/config/main.lua +++ b/xmake/actions/config/main.lua @@ -195,8 +195,7 @@ end function _find_default_mode() local mode = config.mode() if not mode then - local _, defaultmode = project.allowed_modes() - mode = defaultmode + mode = project.get("defaultmode") if not mode then mode = "release" end diff --git a/xmake/actions/config/menuconf.lua b/xmake/actions/config/menuconf.lua index 7ab6f46dd..2f8706e4e 100644 --- a/xmake/actions/config/menuconf.lua +++ b/xmake/actions/config/menuconf.lua @@ -241,7 +241,7 @@ function app:_basic_configs(cache) elseif name == "arch" then _, default = find_platform() elseif name == "mode" then - _, default = project.allowed_modes() + default = project.get("defaultmode") if not default then default = "release" end diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua index 9d253b829..d2f8f7489 100644 --- a/xmake/core/project/project.lua +++ b/xmake/core/project/project.lua @@ -655,13 +655,13 @@ function project.apis() , "set_allowedmodes" , "set_allowedplats" , "set_allowedarchs" + , "set_defaultmode" + , "set_defaultplat" + , "set_defaultarchs" -- add_xxx , "add_requires" , "add_requireconfs" , "add_repositories" - , "add_allowedmodes" - , "add_allowedplats" - , "add_allowedarchs" } , paths = { @@ -1215,9 +1215,30 @@ function project.modes() return table.unique(modes) end +-- get default architectures from the given platform +-- +-- set_defaultarchs("linux|x86_64", "iphoneos|arm64") +-- +function project.default_arch(plat) + local default_archs = project._memcache():get("defaultarchs") + if not default_archs then + default_archs = {} + for _, defaultarch in ipairs(table.wrap(project.get("defaultarchs"))) do + local splitinfo = defaultarch:split('|') + if #splitinfo == 2 then + default_archs[splitinfo[1]] = splitinfo[2] + elseif #splitinfo == 1 and not default_archs.default then + default_archs.default = defaultarch + end + end + project._memcache():set("defaultarchs", default_archs or false) + end + return default_archs[plat or "default"] or default_archs["default"] +end + -- get allowed modes -- --- add_allowedmodes("releasedbg", "debug", {default = "releasedbg"}) +-- set_allowedmodes("releasedbg", "debug") -- function project.allowed_modes() local allowed_modes_set = project._memcache():get("allowedmodes") @@ -1228,24 +1249,12 @@ function project.allowed_modes() end project._memcache():set("allowedmodes", allowed_modes_set or false) end - local default_mode = project._memcache():get("allowedmodes.default") - if not default_mode then - local allowed_modes = table.wrap(project.get("allowedmodes")) - for _, allowed_mode in ipairs(allowed_modes) do - if project.extraconf("allowedmodes", allowed_mode, "default") == allowed_mode then - default_mode = allowed_mode - break - end - end - project._memcache():set("allowedmodes.default", default_mode or false) - end - return allowed_modes_set or nil, default_mode or nil + return allowed_modes_set or nil end -- get allowed platforms -- --- add_allowedplats("windows", "mingw", {default = "windows"}) --- add_allowedplats("windows", "mingw", "linux", "macosx") +-- set_allowedplats("windows", "mingw", "linux", "macosx") -- function project.allowed_plats() local allowed_plats_set = project._memcache():get("allowedplats") @@ -1256,54 +1265,40 @@ function project.allowed_plats() end project._memcache():set("allowedplats", allowed_plats_set or false) end - local default_plat = project._memcache():get("allowedplats.default") - if not default_plat then - local allowed_plats = table.wrap(project.get("allowedplats")) - for _, allowed_plat in ipairs(allowed_plats) do - if project.extraconf("allowedplats", allowed_plat, "default") == allowed_plat then - default_plat = allowed_plat - break - end - end - project._memcache():set("allowedplats.default", default_plat or false) - end - return allowed_plats_set or nil, default_plat or nil + return allowed_plats_set or nil end -- get allowed architectures -- --- add_allowedarchs("arm64", "x86_64", {plat = "macosx", default = "arm64"}) --- add_allowedarchs("i386", {plat = "linux"}) +-- set_allowedarchs("macosx|arm64", "macosx|x86_64", "linux|i386") -- function project.allowed_archs(plat) - local allowed_archs_set = project._memcache():get2("allowedarchs", plat or "") + plat = plat or "" + local allowed_archs_set = project._memcache():get2("allowedarchs", plat) if not allowed_archs_set then local allowed_archs = table.wrap(project.get("allowedarchs")) if #allowed_archs > 0 then for _, allowed_arch in ipairs(allowed_archs) do - if not plat or project.extraconf("allowedarchs", allowed_arch, "plat") == plat then + local splitinfo = allowed_arch:split('|') + local splitplat, splitarch + if #splitinfo == 2 then + splitplat = splitinfo[1] + splitarch = splitinfo[2] + elseif #splitinfo == 1 then + splitplat = "" + splitarch = allowed_arch + end + if plat == splitplat then if not allowed_archs_set then allowed_archs_set = hashset.new() end - allowed_archs_set:insert(allowed_arch) - end - end - end - project._memcache():set2("allowedarchs", plat or "", allowed_archs_set or false) - end - local default_arch = project._memcache():get2("allowedarchs.default", plat or "") - if not default_arch then - if allowed_archs_set then - for _, allowed_arch in allowed_archs_set:keys() do - if project.extraconf("allowedarchs", allowed_arch, "default") == allowed_arch then - default_arch = allowed_arch - break + allowed_archs_set:insert(splitarch) end end end - project._memcache():set2("allowedarchs.default", plat or "", default_arch or false) + project._memcache():set2("allowedarchs", plat, allowed_archs_set or false) end - return allowed_archs_set or nil, default_arch or nil + return allowed_archs_set or nil end -- return module: project diff --git a/xmake/core/sandbox/modules/import/core/project/project.lua b/xmake/core/sandbox/modules/import/core/project/project.lua index 01c62aedf..8e50dfb24 100644 --- a/xmake/core/sandbox/modules/import/core/project/project.lua +++ b/xmake/core/sandbox/modules/import/core/project/project.lua @@ -53,6 +53,7 @@ sandbox_core_project.rcfiles = project.rcfiles sandbox_core_project.directory = project.directory sandbox_core_project.name = project.name sandbox_core_project.modes = project.modes +sandbox_core_project.default_arch = project.default_arch sandbox_core_project.allowed_modes = project.allowed_modes sandbox_core_project.allowed_plats = project.allowed_plats sandbox_core_project.allowed_archs = project.allowed_archs diff --git a/xmake/modules/private/detect/find_platform.lua b/xmake/modules/private/detect/find_platform.lua index e5a6de09f..54f8a2182 100644 --- a/xmake/modules/private/detect/find_platform.lua +++ b/xmake/modules/private/detect/find_platform.lua @@ -28,7 +28,7 @@ function _find_plat(plat) plat = plat or config.get("plat") if not plat then if not plat then - _, plat = project.allowed_plats() + plat = project.get("defaultplat") end if not plat then plat = os.subhost() @@ -88,7 +88,7 @@ function _find_arch(plat, arch) arch = arch or config.get("arch") if not arch then if not arch then - _, arch = project.allowed_archs(plat) + arch = project.default_arch(plat) end if not arch then if plat == "android" then |
