summaryrefslogtreecommitdiff
path: root/xmake/toolchains/xcode
diff options
context:
space:
mode:
authorruki <[email protected]>2022-08-21 16:27:52 +0800
committerGitHub <[email protected]>2022-08-21 16:27:52 +0800
commit1eebadef123f6c110a671fe041fd110899340bb4 (patch)
treeceee665362dbc6fb4412169f35ed62108841142b /xmake/toolchains/xcode
parente914ebdba3e47cd0fe90de6b8ade2c328e0d04b6 (diff)
parent82c2ee867dc33097800caa4d25ab44aa1696517b (diff)
Merge pull request #2695 from xmake-io/catalyst
add mac catalyst
Diffstat (limited to 'xmake/toolchains/xcode')
-rw-r--r--xmake/toolchains/xcode/check.lua31
-rw-r--r--xmake/toolchains/xcode/load_macosx.lua48
2 files changed, 36 insertions, 43 deletions
diff --git a/xmake/toolchains/xcode/check.lua b/xmake/toolchains/xcode/check.lua
index 927eadceb..30886e584 100644
--- a/xmake/toolchains/xcode/check.lua
+++ b/xmake/toolchains/xcode/check.lua
@@ -26,11 +26,23 @@ import("detect.sdks.find_xcode")
-- main entry
function main(toolchain)
+ -- get apple device
+ local simulator
+ local appledev = toolchain:config("appledev") or config.get("appledev")
+ if appledev and appledev == "simulator" then
+ simulator = true
+ appledev = "simulator"
+ elseif not toolchain:is_plat("macosx") and toolchain:is_arch("i386", "x86_64") then
+ simulator = true
+ appledev = "simulator"
+ end
+
-- find xcode
local xcode_sdkver = toolchain:config("xcode_sdkver") or config.get("xcode_sdkver")
local xcode = find_xcode(config.get("xcode"), {force = true, verbose = true,
find_codesign = toolchain:is_global(),
sdkver = xcode_sdkver,
+ appledev = appledev,
plat = toolchain:plat(),
arch = toolchain:arch()})
if not xcode then
@@ -59,17 +71,6 @@ function main(toolchain)
end
end
- -- get apple device
- local simulator
- local appledev = toolchain:config("appledev") or config.get("appledev")
- if appledev and appledev == "simulator" then
- simulator = true
- appledev = "simulator"
- elseif not toolchain:is_plat("macosx") and toolchain:is_arch("i386", "x86_64") then
- simulator = true
- appledev = "simulator"
- end
-
-- save xcode sysroot directory
local xcode_sysroot
if xcode.sdkdir and xcode_sdkver then
@@ -102,13 +103,7 @@ function main(toolchain)
--
local target_minver = toolchain:config("target_minver") or config.get("target_minver")
if xcode_sdkver and not target_minver then
- target_minver = xcode_sdkver
- if toolchain:is_plat("macosx") then
- local macos_ver = macos.version()
- if macos_ver then
- target_minver = macos_ver:major() .. "." .. macos_ver:minor()
- end
- end
+ target_minver = xcode.target_minver
end
toolchain:config_set("xcode", xcode.sdkdir)
toolchain:config_set("xcode_sdkver", xcode_sdkver)
diff --git a/xmake/toolchains/xcode/load_macosx.lua b/xmake/toolchains/xcode/load_macosx.lua
index d5e3d3b9a..107e5a9da 100644
--- a/xmake/toolchains/xcode/load_macosx.lua
+++ b/xmake/toolchains/xcode/load_macosx.lua
@@ -29,43 +29,41 @@ function main(toolchain)
local target_minver = toolchain:config("target_minver")
local xcode_sysroot = toolchain:config("xcode_sysroot")
- -- init flags for c/c++
- toolchain:add("cxflags", "-arch", arch)
- toolchain:add("ldflags", "-arch", arch)
- toolchain:add("shflags", "-arch", arch)
+ -- init target flags
+ local appledev = toolchain:config("appledev")
if target_minver then
- toolchain:add("cxflags", "-mmacosx-version-min=" .. target_minver)
- toolchain:add("mxflags", "-mmacosx-version-min=" .. target_minver)
- toolchain:add("ldflags", "-mmacosx-version-min=" .. target_minver)
- toolchain:add("shflags", "-mmacosx-version-min=" .. target_minver)
+ local target = ("%s-apple-macos%s"):format(arch, target_minver)
+ if appledev == "catalyst" then
+ target = ("%s-apple-ios%s-macabi"):format(arch, target_minver)
+ end
+ toolchain:add("cxflags", "-target", target)
+ toolchain:add("mxflags", "-target", target)
+ toolchain:add("asflags", "-target", target)
+ toolchain:add("ldflags", "-target", target)
+ toolchain:add("shflags", "-target", target)
+ toolchain:add("scflags", "-target", target)
+ toolchain:add("scldflags", "-target", target)
+ toolchain:add("scshflags", "-target", target)
end
+
+ -- add sysroot flags
if xcode_sysroot then
toolchain:add("cxflags", "-isysroot", xcode_sysroot)
+ toolchain:add("asflags", "-isysroot", xcode_sysroot)
toolchain:add("ldflags", "-isysroot", xcode_sysroot)
toolchain:add("shflags", "-isysroot", xcode_sysroot)
+ toolchain:add("mxflags", "-isysroot", xcode_sysroot)
+ toolchain:add("scflags", "-sdk " .. xcode_sysroot)
+ toolchain:add("scshflags", "-sdk " .. xcode_sysroot)
+ toolchain:add("scldflags", "-sdk " .. xcode_sysroot)
end
+
+ -- init flags for c/c++
toolchain:add("ldflags", "-stdlib=libc++")
toolchain:add("shflags", "-stdlib=libc++")
toolchain:add("syslinks", "z")
-- init flags for objc/c++ (with ldflags and shflags)
- toolchain:add("mxflags", "-arch", arch)
- if xcode_sysroot then
- toolchain:add("mxflags", "-isysroot", xcode_sysroot)
- end
-- we can use `add_mxflags("-fno-objc-arc")` to override it in xmake.lua
toolchain:add("mxflags", "-fobjc-arc")
-
- -- init flags for asm
- toolchain:add("asflags", "-arch", arch)
- if xcode_sysroot then
- toolchain:add("asflags", "-isysroot", xcode_sysroot)
- end
-
- -- init flags for swift
- if target_minver and xcode_sysroot then
- toolchain:add("scflags", format("-target %s-apple-macosx%s", arch, target_minver) , "-sdk " .. xcode_sysroot)
- toolchain:add("scshflags", format("-target %s-apple-macosx%s", arch, target_minver) , "-sdk " .. xcode_sysroot)
- toolchain:add("scldflags", format("-target %s-apple-macosx%s", arch, target_minver) , "-sdk " .. xcode_sysroot)
- end
end