summaryrefslogtreecommitdiff
path: root/xmake/toolchains/xcode
diff options
context:
space:
mode:
authorruki <[email protected]>2021-03-26 00:49:05 +0800
committerruki <[email protected]>2021-03-26 00:49:05 +0800
commit17c2672e3aae56bfe765fda6adc9abc861d7342d (patch)
tree011a3b0816e9269ff7177634e3bfc6a0d2b4e2d3 /xmake/toolchains/xcode
parent5b414ecebb74389487c946b9c4687ec08d2c1aa9 (diff)
improve xcode toolchain
Diffstat (limited to 'xmake/toolchains/xcode')
-rw-r--r--xmake/toolchains/xcode/check.lua17
-rw-r--r--xmake/toolchains/xcode/load_iphoneos.lua27
-rw-r--r--xmake/toolchains/xcode/load_macosx.lua33
-rw-r--r--xmake/toolchains/xcode/load_watchos.lua27
4 files changed, 50 insertions, 54 deletions
diff --git a/xmake/toolchains/xcode/check.lua b/xmake/toolchains/xcode/check.lua
index 4f92369b2..066929f2d 100644
--- a/xmake/toolchains/xcode/check.lua
+++ b/xmake/toolchains/xcode/check.lua
@@ -59,6 +59,23 @@ function main(toolchain)
end
end
+ -- save xcode sysroot directory
+ local xcode_sysroot
+ if xcode.sdkdir and xcode_sdkver 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 = toolchain:is_arch("i386", "x86_64") and "iPhoneSimulator" or "iPhoneOS"
+ xcode_sysroot = format("%s/Contents/Developer/Platforms/%s.platform/Developer/SDKs/%s%s.sdk", xcode.sdkdir, platname, platname, xcode_sdkver)
+ elseif toolchain:is_plat("watchos") then
+ local platname = toolchain:is_arch("i386", "x86_64") and "WatchSimulator" or "WatchOS"
+ xcode_sysroot = format("%s/Contents/Developer/Platforms/%s.platform/Developer/SDKs/%s%s.sdk", xcode.sdkdir, platname, platname, xcode_sdkver)
+ end
+ end
+ if xcode_sysroot then
+ toolchain:config_set("xcode_sysroot", xcode_sysroot)
+ end
+
-- save target minver
--
-- @note we need to differentiate the version for the system,
diff --git a/xmake/toolchains/xcode/load_iphoneos.lua b/xmake/toolchains/xcode/load_iphoneos.lua
index 8c6313935..b7596e7ce 100644
--- a/xmake/toolchains/xcode/load_iphoneos.lua
+++ b/xmake/toolchains/xcode/load_iphoneos.lua
@@ -26,10 +26,8 @@ function main(toolchain)
-- init architecture
local arch = toolchain:arch()
- local simulator = (arch == "i386" or arch == "x86_64")
-
- -- init platform name
- local platname = simulator and "iPhoneSimulator" or "iPhoneOS"
+ local xcode_sdkver = toolchain:config("xcode_sdkver")
+ local xcode_sysroot = toolchain:config("xcode_sysroot")
-- init target minimal version
local target_minver = toolchain:config("target_minver")
@@ -38,25 +36,20 @@ function main(toolchain)
end
local target_minver_flags = (simulator and "-mios-simulator-version-min=" or "-miphoneos-version-min=") .. target_minver
- -- init the xcode sdk directory
- local xcode_dir = config.get("xcode")
- local xcode_sdkver = toolchain:config("xcode_sdkver")
- local xcode_sdkdir = format("%s/Contents/Developer/Platforms/%s.platform/Developer/SDKs/%s%s.sdk", xcode_dir, platname, platname, xcode_sdkver)
-
-- init flags for c/c++
- toolchain:add("cxflags", "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sdkdir)
- toolchain:add("ldflags", "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", target_minver_flags, "-isysroot " .. xcode_sdkdir)
- toolchain:add("shflags", "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", target_minver_flags, "-isysroot " .. xcode_sdkdir)
+ toolchain:add("cxflags", "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sysroot)
+ toolchain:add("ldflags", "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", target_minver_flags, "-isysroot " .. xcode_sysroot)
+ toolchain:add("shflags", "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", target_minver_flags, "-isysroot " .. xcode_sysroot)
-- init flags for objc/c++
- toolchain:add("mxflags", "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sdkdir)
+ toolchain:add("mxflags", "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sysroot)
-- init flags for asm
- toolchain:add("asflags", "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sdkdir)
+ toolchain:add("asflags", "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sysroot)
-- init flags for swift (with toolchain:add("ldflags and toolchain:add("shflags)
- toolchain:add("scflags", format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sdkdir)
- toolchain:add("scshflags", format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sdkdir)
- toolchain:add("scldflags", format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sdkdir)
+ toolchain:add("scflags", format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sysroot)
+ toolchain:add("scshflags", format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sysroot)
+ toolchain:add("scldflags", format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sysroot)
end
diff --git a/xmake/toolchains/xcode/load_macosx.lua b/xmake/toolchains/xcode/load_macosx.lua
index f87a00c4f..6c3ab454a 100644
--- a/xmake/toolchains/xcode/load_macosx.lua
+++ b/xmake/toolchains/xcode/load_macosx.lua
@@ -27,14 +27,7 @@ function main(toolchain)
-- init flags for architecture
local arch = toolchain:arch()
local target_minver = toolchain:config("target_minver")
-
- -- init flags for the xcode sdk directory
- local xcode_dir = config.get("xcode")
- local xcode_sdkver = toolchain:config("xcode_sdkver")
- local xcode_sdkdir = nil
- if xcode_dir and xcode_sdkver then
- xcode_sdkdir = xcode_dir .. "/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX" .. xcode_sdkver .. ".sdk"
- end
+ local xcode_sysroot = toolchain:config("xcode_sysroot")
-- init flags for c/c++
toolchain:add("cxflags", "-arch " .. arch)
@@ -46,10 +39,10 @@ function main(toolchain)
toolchain:add("ldflags", "-mmacosx-version-min=" .. target_minver)
toolchain:add("shflags", "-mmacosx-version-min=" .. target_minver)
end
- if xcode_sdkdir then
- toolchain:add("cxflags", "-isysroot " .. xcode_sdkdir)
- toolchain:add("ldflags", "-isysroot " .. xcode_sdkdir)
- toolchain:add("shflags", "-isysroot " .. xcode_sdkdir)
+ if xcode_sysroot then
+ toolchain:add("cxflags", "-isysroot " .. xcode_sysroot)
+ toolchain:add("ldflags", "-isysroot " .. xcode_sysroot)
+ toolchain:add("shflags", "-isysroot " .. xcode_sysroot)
end
toolchain:add("ldflags", "-stdlib=libc++")
toolchain:add("shflags", "-stdlib=libc++")
@@ -57,20 +50,20 @@ function main(toolchain)
-- init flags for objc/c++ (with ldflags and shflags)
toolchain:add("mxflags", "-arch " .. arch)
- if xcode_sdkdir then
- toolchain:add("mxflags", "-isysroot " .. xcode_sdkdir)
+ if xcode_sysroot then
+ toolchain:add("mxflags", "-isysroot " .. xcode_sysroot)
end
-- init flags for asm
toolchain:add("asflags", "-arch " .. arch)
- if xcode_sdkdir then
- toolchain:add("asflags", "-isysroot " .. xcode_sdkdir)
+ if xcode_sysroot then
+ toolchain:add("asflags", "-isysroot " .. xcode_sysroot)
end
-- init flags for swift
- if target_minver and xcode_sdkdir then
- toolchain:add("scflags", format("-target %s-apple-macosx%s", arch, target_minver) , "-sdk " .. xcode_sdkdir)
- toolchain:add("scshflags", format("-target %s-apple-macosx%s", arch, target_minver) , "-sdk " .. xcode_sdkdir)
- toolchain:add("scldflags", format("-target %s-apple-macosx%s", arch, target_minver) , "-sdk " .. xcode_sdkdir)
+ 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
diff --git a/xmake/toolchains/xcode/load_watchos.lua b/xmake/toolchains/xcode/load_watchos.lua
index 9384a4bd2..e0e4053e8 100644
--- a/xmake/toolchains/xcode/load_watchos.lua
+++ b/xmake/toolchains/xcode/load_watchos.lua
@@ -26,34 +26,27 @@ function main(toolchain)
-- init architecture
local arch = toolchain:arch()
- local simulator = arch == "i386"
-
- -- init platform name
- local platname = simulator and "WatchSimulator" or "WatchOS"
+ local xcode_sdkver = toolchain:config("xcode_sdkver")
+ local xcode_sysroot = toolchain:config("xcode_sysroot")
-- init target minimal version
local target_minver = toolchain:config("target_minver")
local target_minver_flags = (simulator and "-mwatchos-simulator-version-min=" or "-mwatchos-version-min=") .. target_minver
- -- init the xcode sdk directory
- local xcode_dir = config.get("xcode")
- local xcode_sdkver = toolchain:config("xcode_sdkver")
- local xcode_sdkdir = format("%s/Contents/Developer/Platforms/%s.platform/Developer/SDKs/%s%s.sdk", xcode_dir, platname, platname, xcode_sdkver)
-
-- init flags for c/c++
- toolchain:add("cxflags", "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sdkdir)
- toolchain:add("ldflags", "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", target_minver_flags, "-isysroot " .. xcode_sdkdir)
- toolchain:add("shflags", "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", target_minver_flags, "-isysroot " .. xcode_sdkdir)
+ toolchain:add("cxflags", "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sysroot)
+ toolchain:add("ldflags", "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", target_minver_flags, "-isysroot " .. xcode_sysroot)
+ toolchain:add("shflags", "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", target_minver_flags, "-isysroot " .. xcode_sysroot)
-- init flags for objc/c++
- toolchain:add("mxflags", "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sdkdir)
+ toolchain:add("mxflags", "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sysroot)
-- init flags for asm
- toolchain:add("asflags", "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sdkdir)
+ toolchain:add("asflags", "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sysroot)
-- init flags for swift (with toolchain:add("ldflags and toolchain:add("shflags)
- toolchain:add("scflags", format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sdkdir)
- toolchain:add("scshflags", format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sdkdir)
- toolchain:add("scldflags", format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sdkdir)
+ toolchain:add("scflags", format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sysroot)
+ toolchain:add("scshflags", format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sysroot)
+ toolchain:add("scldflags", format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sysroot)
end