Skip to content

Commit 14092d3

Browse files
authored
Merge pull request #131 from leetal/target_triple
Backported PR #114 & PR #117 manually
2 parents 1a90afd + dcdadf2 commit 14092d3

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

ios.toolchain.cmake

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,10 @@ elseif(NOT DEFINED PLATFORM)
204204
message(FATAL_ERROR "PLATFORM argument not set. Bailing configure since I don't know what target you want to build for!")
205205
endif ()
206206

207+
if(PLATFORM MATCHES ".*COMBINED" AND NOT CMAKE_GENERATOR MATCHES "Xcode")
208+
message(FATAL_ERROR "The combined builds support requires Xcode to be used as generator via '-G Xcode' command-line argument in CMake")
209+
endif()
210+
207211
# Safeguard that the platform value is set and is one of the supported values
208212
list(FIND _supported_platforms ${PLATFORM} contains_PLATFORM)
209213
if("${contains_PLATFORM}" EQUAL "-1")
@@ -276,6 +280,8 @@ if(PLATFORM_INT STREQUAL "OS")
276280
if(NOT ARCHS)
277281
set(ARCHS armv7 armv7s arm64)
278282
set(APPLE_TARGET_TRIPLE_INT arm-apple-ios$${DEPLOYMENT_TARGET})
283+
else()
284+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET})
279285
endif()
280286
elseif(PLATFORM_INT STREQUAL "OS64")
281287
set(SDK_NAME iphoneos)
@@ -285,7 +291,7 @@ elseif(PLATFORM_INT STREQUAL "OS64")
285291
else()
286292
set(ARCHS arm64)
287293
endif()
288-
set(APPLE_TARGET_TRIPLE_INT arm64-apple-ios${DEPLOYMENT_TARGET})
294+
set(APPLE_TARGET_TRIPLE_INT aarch64-apple-ios${DEPLOYMENT_TARGET})
289295
else()
290296
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET})
291297
endif()
@@ -306,7 +312,7 @@ elseif(PLATFORM_INT STREQUAL "OS64COMBINED")
306312
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64")
307313
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64")
308314
endif()
309-
set(APPLE_TARGET_TRIPLE_INT arm64-x86_64-apple-ios${DEPLOYMENT_TARGET})
315+
set(APPLE_TARGET_TRIPLE_INT aarch64-x86_64-apple-ios${DEPLOYMENT_TARGET})
310316
else()
311317
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET})
312318
endif()
@@ -334,15 +340,15 @@ elseif(PLATFORM_INT STREQUAL "SIMULATORARM64")
334340
set(SDK_NAME iphonesimulator)
335341
if(NOT ARCHS)
336342
set(ARCHS arm64)
337-
set(APPLE_TARGET_TRIPLE_INT arm64-apple-ios${DEPLOYMENT_TARGET}-simulator)
343+
set(APPLE_TARGET_TRIPLE_INT aarch64-apple-ios${DEPLOYMENT_TARGET}-simulator)
338344
else()
339345
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator)
340346
endif()
341347
elseif(PLATFORM_INT STREQUAL "TVOS")
342348
set(SDK_NAME appletvos)
343349
if(NOT ARCHS)
344350
set(ARCHS arm64)
345-
set(APPLE_TARGET_TRIPLE_INT arm64-apple-tvos${DEPLOYMENT_TARGET})
351+
set(APPLE_TARGET_TRIPLE_INT aarch64-apple-tvos${DEPLOYMENT_TARGET})
346352
else()
347353
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET})
348354
endif()
@@ -351,7 +357,7 @@ elseif (PLATFORM_INT STREQUAL "TVOSCOMBINED")
351357
if(MODERN_CMAKE)
352358
if(NOT ARCHS)
353359
set(ARCHS arm64 x86_64)
354-
set(APPLE_TARGET_TRIPLE_INT arm64-x86_64-apple-tvos${DEPLOYMENT_TARGET})
360+
set(APPLE_TARGET_TRIPLE_INT aarch64-x86_64-apple-tvos${DEPLOYMENT_TARGET})
355361
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvos*] "arm64")
356362
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvsimulator*] "x86_64")
357363
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=appletvos*] "arm64")
@@ -375,7 +381,7 @@ elseif(PLATFORM_INT STREQUAL "WATCHOS")
375381
if(NOT ARCHS)
376382
if (XCODE_VERSION_INT VERSION_GREATER 10.0)
377383
set(ARCHS armv7k arm64_32)
378-
set(APPLE_TARGET_TRIPLE_INT arm64_32-apple-watchos${DEPLOYMENT_TARGET})
384+
set(APPLE_TARGET_TRIPLE_INT aarch64_32-apple-watchos${DEPLOYMENT_TARGET})
379385
else()
380386
set(ARCHS armv7k)
381387
set(APPLE_TARGET_TRIPLE_INT arm-apple-watchos${DEPLOYMENT_TARGET})
@@ -389,7 +395,7 @@ elseif(PLATFORM_INT STREQUAL "WATCHOSCOMBINED")
389395
if(NOT ARCHS)
390396
if (XCODE_VERSION_INT VERSION_GREATER 10.0)
391397
set(ARCHS armv7k arm64_32 i386)
392-
set(APPLE_TARGET_TRIPLE_INT arm64_32-i386-apple-watchos${DEPLOYMENT_TARGET})
398+
set(APPLE_TARGET_TRIPLE_INT aarch64_32-i386-apple-watchos${DEPLOYMENT_TARGET})
393399
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k arm64_32")
394400
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386")
395401
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k arm64_32")
@@ -731,7 +737,7 @@ if(DEFINED APPLE_TARGET_TRIPLE_INT)
731737
endif()
732738

733739
if(PLATFORM_INT MATCHES "^MAC_CATALYST")
734-
set(C_TARGET_FLAGS "-target ${APPLE_TARGET_TRIPLE_INT} -isystem ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/usr/include -iframework ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/System/Library/Frameworks")
740+
set(C_TARGET_FLAGS "-isystem ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/usr/include -iframework ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/System/Library/Frameworks")
735741
endif()
736742

737743
if(ENABLE_BITCODE_INT)
@@ -765,20 +771,24 @@ else()
765771
set(VISIBILITY "-fvisibility=default")
766772
endif()
767773

774+
if(DEFINED APPLE_TARGET_TRIPLE)
775+
set(APPLE_TARGET_TRIPLE_FLAG "-target ${APPLE_TARGET_TRIPLE}")
776+
endif()
777+
768778
#Check if Xcode generator is used, since that will handle these flags automagically
769779
if(CMAKE_GENERATOR MATCHES "Xcode")
770780
message(STATUS "Not setting any manual command-line buildflags, since Xcode is selected as generator.")
771781
else()
772782
# Hidden visibility is required for C++ on iOS.
773-
set(CMAKE_C_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} -fobjc-abi-version=2 ${FOBJC_ARC} ${CMAKE_C_FLAGS}")
774-
set(CMAKE_CXX_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} -fobjc-abi-version=2 ${FOBJC_ARC} ${CMAKE_CXX_FLAGS}")
783+
set(CMAKE_C_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} -fobjc-abi-version=2 ${FOBJC_ARC} ${CMAKE_C_FLAGS}")
784+
set(CMAKE_CXX_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} -fobjc-abi-version=2 ${FOBJC_ARC} ${CMAKE_CXX_FLAGS}")
775785
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -O0 -g ${CMAKE_CXX_FLAGS_DEBUG}")
776786
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS} -DNDEBUG -Os -ffast-math ${CMAKE_CXX_FLAGS_MINSIZEREL}")
777787
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} -DNDEBUG -O2 -g -ffast-math ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
778788
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -DNDEBUG -O3 -ffast-math ${CMAKE_CXX_FLAGS_RELEASE}")
779789
set(CMAKE_C_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}")
780790
set(CMAKE_CXX_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}")
781-
set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp -arch ${CMAKE_OSX_ARCHITECTURES}")
791+
set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp -arch ${CMAKE_OSX_ARCHITECTURES} ${APPLE_TARGET_TRIPLE_FLAG}")
782792
endif()
783793

784794
## Print status messages to inform of the current state

0 commit comments

Comments
 (0)