Skip to content

Commit cd8e652

Browse files
committed
Fixing ios
1 parent 8ed3871 commit cd8e652

File tree

1 file changed

+57
-16
lines changed

1 file changed

+57
-16
lines changed

cmake/toolchains/ios.cmake

Lines changed: 57 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,15 @@
7474
# WATCHOSCOMBINED = Build for armv7k arm64_32 x86_64 watchOS + watchOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step)
7575
# SIMULATOR_WATCHOS = Build for x86_64 for watchOS Simulator.
7676
# SIMULATORARM64_WATCHOS = Build for arm64 for watchOS Simulator.
77+
# SIMULATOR_WATCHOSCOMBINED = Build for arm64 x86_64 for watchOS Simulator. Combined into FAT STATIC lib (supported on 3.14+ of CMakewith "-G Xcode" argument ONLY)
7778
# MAC = Build for x86_64 macOS.
7879
# MAC_ARM64 = Build for Apple Silicon macOS.
7980
# MAC_UNIVERSAL = Combined build for x86_64 and Apple Silicon on macOS.
8081
# MAC_CATALYST = Build for x86_64 macOS with Catalyst support (iOS toolchain on macOS).
8182
# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS
8283
# MAC_CATALYST_ARM64 = Build for Apple Silicon macOS with Catalyst support (iOS toolchain on macOS).
8384
# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS
85+
# MAC_CATALYST_UNIVERSAL = Combined build for x86_64 and Apple Silicon on Catalyst.
8486
#
8587
# CMAKE_OSX_SYSROOT: Path to the SDK to use. By default this is
8688
# automatically determined from PLATFORM and xcodebuild, but
@@ -123,6 +125,7 @@
123125
# MAC_UNIVERSAL = x86_64 arm64
124126
# MAC_CATALYST = x86_64
125127
# MAC_CATALYST_ARM64 = arm64
128+
# MAC_CATALYST_UNIVERSAL = x86_64 arm64
126129
#
127130
# NOTE: When manually specifying ARCHS, put a semi-colon between the entries. E.g., -DARCHS="armv7;arm64"
128131
#
@@ -163,10 +166,10 @@ set(ENV{_IOS_TOOLCHAIN_HAS_RUN} true)
163166
list(APPEND _supported_platforms
164167
"OS" "OS64" "OS64COMBINED" "SIMULATOR" "SIMULATOR64" "SIMULATORARM64" "SIMULATOR64COMBINED"
165168
"TVOS" "TVOSCOMBINED" "SIMULATOR_TVOS" "SIMULATORARM64_TVOS"
166-
"WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" "SIMULATORARM64_WATCHOS"
169+
"WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" "SIMULATORARM64_WATCHOS" "SIMULATOR_WATCHOSCOMBINED"
167170
"MAC" "MAC_ARM64" "MAC_UNIVERSAL"
168171
"VISIONOS" "SIMULATOR_VISIONOS" "VISIONOSCOMBINED"
169-
"MAC_CATALYST" "MAC_CATALYST_ARM64")
172+
"MAC_CATALYST" "MAC_CATALYST_ARM64" "MAC_CATALYST_UNIVERSAL")
170173

171174
# Cache what generator is used
172175
set(USED_CMAKE_GENERATOR "${CMAKE_GENERATOR}")
@@ -230,7 +233,7 @@ if("${contains_PLATFORM}" EQUAL "-1")
230233
endif()
231234

232235
# Check if Apple Silicon is supported
233-
if(PLATFORM MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$|^(MAC_UNIVERSAL)$" AND ${CMAKE_VERSION} VERSION_LESS "3.19.5")
236+
if(PLATFORM MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$|^(MAC_UNIVERSAL)$|^(MAC_CATALYST_UNIVERSAL)$" AND ${CMAKE_VERSION} VERSION_LESS "3.19.5")
234237
message(FATAL_ERROR "Apple Silicon builds requires a minimum of CMake 3.19.5")
235238
endif()
236239

@@ -261,10 +264,10 @@ set(NAMED_LANGUAGE_SUPPORT_INT ${NAMED_LANGUAGE_SUPPORT} CACHE BOOL
261264
# Specify the minimum version of the deployment target.
262265
if(NOT DEFINED DEPLOYMENT_TARGET)
263266
if (PLATFORM MATCHES "WATCHOS")
264-
# Unless specified, SDK version 4.0 is used by default as minimum target version (watchOS).
267+
# Unless specified, SDK version 6.0 is used by default as minimum target version (watchOS).
265268
set(DEPLOYMENT_TARGET "6.0")
266269
elseif(PLATFORM STREQUAL "MAC")
267-
# Unless specified, SDK version 10.13 (High Sierra) is used by default as the minimum target version (macos).
270+
# Unless specified, SDK version 11.0 (Big Sur) is used by default as the minimum target version (macOS on x86).
268271
set(DEPLOYMENT_TARGET "11.0")
269272
elseif(PLATFORM STREQUAL "VISIONOS" OR PLATFORM STREQUAL "SIMULATOR_VISIONOS" OR PLATFORM STREQUAL "VISIONOSCOMBINED")
270273
# Unless specified, SDK version 1.0 is used by default as minimum target version (visionOS).
@@ -275,11 +278,11 @@ if(NOT DEFINED DEPLOYMENT_TARGET)
275278
elseif(PLATFORM STREQUAL "MAC_UNIVERSAL")
276279
# Unless specified, SDK version 11.0 (Big Sur) is used by default as minimum target version for universal builds.
277280
set(DEPLOYMENT_TARGET "11.0")
278-
elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64")
279-
# Unless specified, SDK version 13.0 is used by default as the minimum target version (mac catalyst minimum requirement).
281+
elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64" OR PLATFORM STREQUAL "MAC_CATALYST_UNIVERSAL")
282+
# Unless specified, SDK version 13.1 is used by default as the minimum target version (mac catalyst minimum requirement).
280283
set(DEPLOYMENT_TARGET "13.1")
281284
else()
282-
# Unless specified, SDK version 11.0 is used by default as the minimum target version (iOS, tvOS).
285+
# Unless specified, SDK version 13.0 is used by default as the minimum target version (iOS, tvOS).
283286
set(DEPLOYMENT_TARGET "13.0")
284287
endif()
285288
message(STATUS "[DEFAULTS] Using the default min-version since DEPLOYMENT_TARGET not provided!")
@@ -458,12 +461,12 @@ elseif(PLATFORM_INT STREQUAL "WATCHOSCOMBINED")
458461
if(MODERN_CMAKE)
459462
if(NOT ARCHS)
460463
if (XCODE_VERSION_INT VERSION_GREATER 10.0)
461-
set(ARCHS armv7k arm64_32 i386)
462-
set(APPLE_TARGET_TRIPLE_INT arm64_32-i386-apple-watchos${DEPLOYMENT_TARGET})
464+
set(ARCHS armv7k arm64_32 x86_64)
465+
set(APPLE_TARGET_TRIPLE_INT arm64_32-x86_64-apple-watchos${DEPLOYMENT_TARGET})
463466
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k arm64_32")
464-
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386")
467+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "x86_64")
465468
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k arm64_32")
466-
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386")
469+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "x86_64")
467470
else()
468471
set(ARCHS armv7k i386)
469472
set(APPLE_TARGET_TRIPLE_INT arm-i386-apple-watchos${DEPLOYMENT_TARGET})
@@ -481,8 +484,13 @@ elseif(PLATFORM_INT STREQUAL "WATCHOSCOMBINED")
481484
elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS")
482485
set(SDK_NAME watchsimulator)
483486
if(NOT ARCHS)
484-
set(ARCHS i386)
485-
set(APPLE_TARGET_TRIPLE_INT i386-apple-watchos${DEPLOYMENT_TARGET}-simulator)
487+
if (XCODE_VERSION_INT VERSION_GREATER 10.0)
488+
set(ARCHS x86_64)
489+
set(APPLE_TARGET_TRIPLE_INT x86_64-apple-watchos${DEPLOYMENT_TARGET}-simulator)
490+
else()
491+
set(ARCHS i386)
492+
set(APPLE_TARGET_TRIPLE_INT i386-apple-watchos${DEPLOYMENT_TARGET}-simulator)
493+
endif()
486494
else()
487495
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator)
488496
endif()
@@ -494,6 +502,31 @@ elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_WATCHOS")
494502
else()
495503
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator)
496504
endif()
505+
elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOSCOMBINED")
506+
set(SDK_NAME watchsimulator)
507+
if(MODERN_CMAKE)
508+
if(NOT ARCHS)
509+
if (XCODE_VERSION_INT VERSION_GREATER 12.0)
510+
set(ARCHS arm64 x86_64)
511+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "")
512+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "arm64 x86_64")
513+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "")
514+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "arm64 x86_64")
515+
set(APPLE_TARGET_TRIPLE_INT arm64_x86_64-apple-watchos${DEPLOYMENT_TARGET}-simulator)
516+
else()
517+
set(ARCHS arm64 i386)
518+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "")
519+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386")
520+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "")
521+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386")
522+
set(APPLE_TARGET_TRIPLE_INT arm64_i386-apple-watchos${DEPLOYMENT_TARGET}-simulator)
523+
endif()
524+
else()
525+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator)
526+
endif()
527+
else()
528+
message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the SIMULATOR_WATCHOSCOMBINED setting work")
529+
endif()
497530
elseif(PLATFORM_INT STREQUAL "SIMULATOR_VISIONOS")
498531
set(SDK_NAME xrsimulator)
499532
if(NOT ARCHS)
@@ -547,12 +580,20 @@ elseif(PLATFORM_INT MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$")
547580
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi)
548581
endif()
549582
elseif(PLATFORM_INT STREQUAL "MAC_UNIVERSAL")
583+
set(SDK_NAME macosx)
584+
if(NOT ARCHS)
585+
set(ARCHS "x86_64;arm64")
586+
endif()
587+
# For universal builds, don't set target triple - let CMake handle it
588+
# string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}")
589+
# set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET})
590+
elseif(PLATFORM_INT STREQUAL "MAC_CATALYST_UNIVERSAL")
550591
set(SDK_NAME macosx)
551592
if(NOT ARCHS)
552593
set(ARCHS "x86_64;arm64")
553594
endif()
554595
string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}")
555-
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET})
596+
set(APPLE_TARGET_TRIPLE_INT apple-ios${DEPLOYMENT_TARGET}-macabi)
556597
else()
557598
message(FATAL_ERROR "Invalid PLATFORM: ${PLATFORM_INT}")
558599
endif()
@@ -761,7 +802,7 @@ set(APPLE ON CACHE BOOL "")
761802
if(PLATFORM STREQUAL "MAC" OR PLATFORM STREQUAL "MAC_ARM64" OR PLATFORM STREQUAL "MAC_UNIVERSAL")
762803
set(IOS OFF CACHE BOOL "")
763804
set(MACOS ON CACHE BOOL "")
764-
elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64")
805+
elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64" OR PLATFORM STREQUAL "MAC_CATALYST_UNIVERSAL")
765806
set(IOS ON CACHE BOOL "")
766807
set(MACOS ON CACHE BOOL "")
767808
elseif(PLATFORM STREQUAL "VISIONOS" OR PLATFORM STREQUAL "SIMULATOR_VISIONOS" OR PLATFORM STREQUAL "VISIONOSCOMBINED")

0 commit comments

Comments
 (0)