summaryrefslogtreecommitdiff
path: root/xmake/toolchains/xcode
diff options
context:
space:
mode:
authorruki <[email protected]>2022-08-20 20:58:52 +0800
committerruki <[email protected]>2022-08-20 21:00:58 +0800
commit82c2ee867dc33097800caa4d25ab44aa1696517b (patch)
treebbffd0f62ebe60f9fc711b583e470b9b34aeec67 /xmake/toolchains/xcode
parent432e9cc7745628d3b8bffa6c927ad4f23443249b (diff)
use catalyst for macosx
Diffstat (limited to 'xmake/toolchains/xcode')
-rw-r--r--xmake/toolchains/xcode/check.lua2
-rw-r--r--xmake/toolchains/xcode/load_iphoneos.lua14
-rw-r--r--xmake/toolchains/xcode/load_macosx.lua48
3 files changed, 28 insertions, 36 deletions
diff --git a/xmake/toolchains/xcode/check.lua b/xmake/toolchains/xcode/check.lua
index 31949eaec..30886e584 100644
--- a/xmake/toolchains/xcode/check.lua
+++ b/xmake/toolchains/xcode/check.lua
@@ -74,7 +74,7 @@ function main(toolchain)
-- save xcode sysroot directory
local xcode_sysroot
if xcode.sdkdir and xcode_sdkver then
- if toolchain:is_plat("macosx") or appledev == "catalyst" then
+ if toolchain:is_plat("macosx") then
xcode_sysroot = xcode.sdkdir .. "/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX" .. xcode_sdkver .. ".sdk"
elseif toolchain:is_plat("iphoneos") then
local platname = simulator and "iPhoneSimulator" or "iPhoneOS"
diff --git a/xmake/toolchains/xcode/load_iphoneos.lua b/xmake/toolchains/xcode/load_iphoneos.lua
index d64172ed2..77a581b0c 100644
--- a/xmake/toolchains/xcode/load_iphoneos.lua
+++ b/xmake/toolchains/xcode/load_iphoneos.lua
@@ -29,21 +29,15 @@ function main(toolchain)
local xcode_sdkver = toolchain:config("xcode_sdkver")
local xcode_sysroot = toolchain:config("xcode_sysroot")
+ -- is simulator?
+ local simulator = toolchain:config("appledev") == "simulator"
+
-- init target minimal version
- local appledev = toolchain:config("appledev")
local target_minver = toolchain:config("target_minver")
if target_minver and tonumber(target_minver) > 10 and (arch == "armv7" or arch == "armv7s" or arch == "i386") then
target_minver = "10" -- iOS 10 is the maximum deployment target for 32-bit targets
end
- if target_minver and tonumber(target_minver) < 13 and appledev == "catalyst" then
- target_minver = "13.1"
- end
- local target_minver_flags
- if appledev == "simulator" then
- target_minver_flags = "-mios-simulator-version-min=" .. target_minver
- else
- target_minver_flags = "-miphoneos-version-min=" .. target_minver
- end
+ local target_minver_flags = (simulator and "-mios-simulator-version-min=" or "-miphoneos-version-min=") .. target_minver
-- init flags for c/c++
toolchain:add("cxflags", "-arch", arch, target_minver_flags, "-isysroot", xcode_sysroot)
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