diff options
| author | ruki <[email protected]> | 2021-07-21 22:43:41 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-07-21 22:43:41 +0800 |
| commit | d035d7cbbe20bea2282613296507cfa9c6c66ce0 (patch) | |
| tree | 3bd7abaf30f5f400b1d296d79f0006c41dd05281 | |
| parent | 111e917c3317543125fb18aac9101c7c78ab1176 (diff) | |
improve api
| -rw-r--r-- | xmake/core/project/project.lua | 60 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/core/project/project.lua | 1 |
2 files changed, 37 insertions, 24 deletions
diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua index 9d2e5a636..a15e71c98 100644 --- a/xmake/core/project/project.lua +++ b/xmake/core/project/project.lua @@ -653,12 +653,14 @@ function project.apis() "set_project" , "set_description" , "set_allowedmodes" + , "set_allowedplats" , "set_allowedarchs" -- add_xxx , "add_requires" , "add_requireconfs" , "add_repositories" , "add_allowedmodes" + , "add_allowedplats" , "add_allowedarchs" } , paths = @@ -1215,8 +1217,7 @@ end -- get allowed modes -- --- add_allowedmodes("releasedbg", {default = true}) --- add_allowedmodes("debug") +-- add_allowedmodes("releasedbg", "debug", {default = "releasedbg"}) -- function project.allowed_modes() local allowed_modes_set = project._ALLOWED_MODES @@ -1231,25 +1232,48 @@ function project.allowed_modes() 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") then + if project.extraconf("allowedmodes", allowed_mode, "default") == allowed_mode then default_mode = allowed_mode break end end - -- we use the first mode as default value if no default configuration - if not default_mode then - default_mode = allowed_modes[1] - end project._DEFAULT_MODE = default_mode end return allowed_modes_set or nil, default_mode or nil end --- get allowed archs +-- get allowed platforms -- --- add_allowedarchs("arm64", "x86_64", {plat = "macosx"}) --- add_allowedarchs("i386", {plat = "linux", default = true}) --- add_allowedarchs("arm64", "x86_64", {plat = "linux"}) +-- add_allowedplats("windows", "mingw", {default = "windows"}) +-- add_allowedplats("windows", "mingw", "linux", "macosx") +-- +function project.allowed_plats() + local allowed_plats_set = project._ALLOWED_PLATS + if not allowed_plats_set then + local allowed_plats = table.wrap(project.get("allowedplats")) + if #allowed_plats > 0 then + allowed_plats_set = hashset.from(allowed_plats) + end + project._ALLOWED_PLATS = allowed_plats_set or false + end + local default_plat = project._DEFAULT_PLAT + 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._DEFAULT_PLAT = default_plat + end + return allowed_plats_set or nil, default_plat or nil +end + +-- get allowed architectures +-- +-- add_allowedarchs("arm64", "x86_64", {plat = "macosx", default = "arm64"}) +-- add_allowedarchs("i386", {plat = "linux"}) -- function project.allowed_archs(plat) local allowed_archs_set = project._ALLOWED_ARCHS @@ -1269,24 +1293,12 @@ function project.allowed_archs(plat) 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") then + if project.extraconf("allowedarchs", allowed_arch, "default") == allowed_arch then default_arch = allowed_arch break end end end - -- we use the first arch as default value if no default configuration - if not default_arch 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 - default_arch = allowed_arch - break - end - end - end - end project._DEFAULT_ARCH = default_arch end return allowed_archs_set or nil, default_arch or nil diff --git a/xmake/core/sandbox/modules/import/core/project/project.lua b/xmake/core/sandbox/modules/import/core/project/project.lua index 2d9d7e463..01c62aedf 100644 --- a/xmake/core/sandbox/modules/import/core/project/project.lua +++ b/xmake/core/sandbox/modules/import/core/project/project.lua @@ -54,6 +54,7 @@ sandbox_core_project.directory = project.directory sandbox_core_project.name = project.name sandbox_core_project.modes = project.modes sandbox_core_project.allowed_modes = project.allowed_modes +sandbox_core_project.allowed_plats = project.allowed_plats sandbox_core_project.allowed_archs = project.allowed_archs sandbox_core_project.mtimes = project.mtimes sandbox_core_project.version = project.version |
