diff options
| author | ruki <[email protected]> | 2021-03-26 00:49:05 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-03-26 00:49:05 +0800 |
| commit | 17c2672e3aae56bfe765fda6adc9abc861d7342d (patch) | |
| tree | 011a3b0816e9269ff7177634e3bfc6a0d2b4e2d3 /xmake/toolchains/xcode | |
| parent | 5b414ecebb74389487c946b9c4687ec08d2c1aa9 (diff) | |
improve xcode toolchain
Diffstat (limited to 'xmake/toolchains/xcode')
| -rw-r--r-- | xmake/toolchains/xcode/check.lua | 17 | ||||
| -rw-r--r-- | xmake/toolchains/xcode/load_iphoneos.lua | 27 | ||||
| -rw-r--r-- | xmake/toolchains/xcode/load_macosx.lua | 33 | ||||
| -rw-r--r-- | xmake/toolchains/xcode/load_watchos.lua | 27 |
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 |
