summaryrefslogtreecommitdiff
path: root/xmake/toolchains/xcode/load_platform.lua
diff options
context:
space:
mode:
authorArthur LAURENT <[email protected]>2025-11-01 19:03:10 +0100
committerArthur LAURENT <[email protected]>2025-11-01 21:23:17 +0100
commit6bb310b029f7adb13709d73655b635649b7c5814 (patch)
tree9ba139d9a76a173ae299fff595f49205eacdd8c9 /xmake/toolchains/xcode/load_platform.lua
parentb3a2dba93a185f205dbd18a154e42da72fdd4881 (diff)
nfc(xcode) refactor xcode toolchain and improve it
Diffstat (limited to 'xmake/toolchains/xcode/load_platform.lua')
-rw-r--r--xmake/toolchains/xcode/load_platform.lua60
1 files changed, 60 insertions, 0 deletions
diff --git a/xmake/toolchains/xcode/load_platform.lua b/xmake/toolchains/xcode/load_platform.lua
new file mode 100644
index 000000000..7d8809acf
--- /dev/null
+++ b/xmake/toolchains/xcode/load_platform.lua
@@ -0,0 +1,60 @@
+--!A cross-toolchain build utility based on Lua
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+-- Copyright (C) 2015-present, Xmake Open Source Community.
+--
+-- @author ruki
+-- @file load_platform.lua
+--
+
+function main(toolchain, plat)
+ -- init architecture
+ local arch = toolchain:arch()
+ local xcode_sdkver = toolchain:config('xcode_sdkver')
+ local xcode_sysroot = toolchain:config('xcode_sysroot')
+
+ -- is simulator?
+ local appledev = toolchain:config('appledev')
+ local simulator = appledev == 'simulator'
+
+ -- init target minimal version
+ local target_minver = toolchain:config('target_minver')
+ if target_minver then
+ if plat == "ios" 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
+ end
+ local targetflag = format("%s-apple-%s%s%s", arch, plat, target_minver or "", simulator and "-simulator" or "")
+ targetflag = {"-target", targetflag}
+
+ -- init flags for c/c++
+ toolchain:add('cxflags', {'-arch', arch}, targetflag, '-isysroot', xcode_sysroot)
+ toolchain:add('ldflags', {'-arch', arch}, targetflag, '-isysroot', xcode_sysroot, '-ObjC', '-fobjc-link-runtime')
+ toolchain:add('shflags', {'-arch', arch}, targetflag, '-isysroot', xcode_sysroot, '-ObjC', '-fobjc-link-runtime')
+
+ -- init flags for objc/c++
+ toolchain:add('mxflags', {'-arch', arch}, targetflag, '-isysroot', xcode_sysroot)
+
+ -- 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}, targetflag, '-isysroot', xcode_sysroot)
+
+ -- init flags for swift (with toolchain:add("ldflags and toolchain:add("shflags)
+ toolchain:add('scflags', {'-sdk', xcode_sysroot}, targetflag)
+ toolchain:add('scshflags', {'-sdk', xcode_sysroot}, targetflag, "-emit-library")
+ toolchain:add('scarflags', {'-sdk', xcode_sysroot}, targetflag, "-emit-library", "-static")
+ toolchain:add('scldflags', {'-sdk', xcode_sysroot}, targetflag, "-emit-executable")
+end