Skip to content

Commit 8cecab5

Browse files
committed
Added watchOS simulator combined build (arm64, i386)
1 parent ad96a37 commit 8cecab5

File tree

2 files changed

+32
-5
lines changed

2 files changed

+32
-5
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ A CMake toolchain file for iOS (+ Catalyst), watchOS, tvOS and macOS development
1616
* _SIMULATOR_ - to build for iOS simulator 32 bit (i386) -- **DEPRECATED**
1717
* _SIMULATOR64_ - to build for iOS simulator 64 bit (x86_64)
1818
* _SIMULATORARM64_ - to build for iOS simulator 64 bit (arm64)
19+
* _SIMULATOR64COMBINED_ - to build for iOS simulator 64 bit (FAT lib) (arm64, x86_64)
1920
* _VISIONOS_ - to build for visionOS (arm64) -- **Apple Silicon Required**
2021
* _VISIONOSCOMBINED_ - to build for visionOS & visionOS Simulator (FAT lib) (arm64) -- **Apple Silicon Required**
2122
* _SIMULATOR_VISIONOS_ - to build for visionOS Simulator (arm64) -- **Apple Silicon Required**
@@ -27,6 +28,7 @@ A CMake toolchain file for iOS (+ Catalyst), watchOS, tvOS and macOS development
2728
* _WATCHOSCOMBINED_ - to build for watchOS & Simulator (armv7k, arm64_32, i386)
2829
* _SIMULATOR_WATCHOS_ - to build for watchOS Simulator (i386)
2930
* _SIMULATORARM64_WATCHOS_ = to build for watchOS Simulator (arm64)
31+
* _SIMULATOR_WATCHOSCOMBINED_ = to build for watchOS Simulator (FAT lib) (arm64, i386)
3032
* _MAC_ - to build for macOS (x86_64)
3133
* _MAC_ARM64_ - to build for macOS on Apple Silicon (arm64)
3234
* _MAC_UNIVERSAL_ - to build for macOS on x86_64 and Apple Silicon (arm64) combined

ios.toolchain.cmake

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
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 for watchOS Simulator.
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.
@@ -166,9 +167,9 @@ set(ENV{_IOS_TOOLCHAIN_HAS_RUN} true)
166167
list(APPEND _supported_platforms
167168
"OS" "OS64" "OS64COMBINED" "SIMULATOR" "SIMULATOR64" "SIMULATORARM64" "SIMULATOR64COMBINED"
168169
"TVOS" "TVOSCOMBINED" "SIMULATOR_TVOS" "SIMULATORARM64_TVOS"
169-
"WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" "SIMULATORARM64_WATCHOS"
170+
"WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" "SIMULATORARM64_WATCHOS" "SIMULATOR_WATCHOSCOMBINED"
170171
"MAC" "MAC_ARM64" "MAC_UNIVERSAL"
171-
"VISIONOS" "SIMULATOR_VISIONOS" "VISIONOSCOMBINED"
172+
"VISIONOS" "SIMULATOR_VISIONOS" "VISIONOSCOMBINED"
172173
"MAC_CATALYST" "MAC_CATALYST_ARM64" "MAC_CATALYST_UNIVERSAL")
173174

174175
# Cache what generator is used
@@ -316,7 +317,7 @@ if(PLATFORM_INT STREQUAL "OS")
316317
set(ARCHS armv7 armv7s arm64)
317318
set(APPLE_TARGET_TRIPLE_INT arm-apple-ios${DEPLOYMENT_TARGET})
318319
else()
319-
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET})
320+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET})
320321
endif()
321322
elseif(PLATFORM_INT STREQUAL "OS64")
322323
set(SDK_NAME iphoneos)
@@ -497,6 +498,30 @@ elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_WATCHOS")
497498
else()
498499
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator)
499500
endif()
501+
elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOSCOMBINED")
502+
set(SDK_NAME watchsimulator)
503+
if(MODERN_CMAKE)
504+
if(NOT ARCHS)
505+
if (XCODE_VERSION_INT VERSION_GREATER 12.0)
506+
set(ARCHS arm64 i386)
507+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "")
508+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386 arm64")
509+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "")
510+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386 arm64")
511+
else()
512+
set(ARCHS arm64 i386)
513+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "")
514+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386")
515+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "")
516+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386")
517+
endif()
518+
set(APPLE_TARGET_TRIPLE_INT arm64_i386-apple-watchos${DEPLOYMENT_TARGET}-simulator)
519+
else()
520+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator)
521+
endif()
522+
else()
523+
message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the SIMULATOR_WATCHOSCOMBINED setting work")
524+
endif()
500525
elseif(PLATFORM_INT STREQUAL "SIMULATOR_VISIONOS")
501526
set(SDK_NAME xrsimulator)
502527
if(NOT ARCHS)
@@ -1049,7 +1074,7 @@ set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
10491074
)
10501075

10511076
if(NAMED_LANGUAGE_SUPPORT_INT)
1052-
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
1077+
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
10531078
CMAKE_OBJC_FLAGS
10541079
CMAKE_OBJC_DEBUG
10551080
CMAKE_OBJC_MINSIZEREL
@@ -1087,7 +1112,7 @@ IF(NOT DEFINED CMAKE_FIND_FRAMEWORK)
10871112
ENDIF(NOT DEFINED CMAKE_FIND_FRAMEWORK)
10881113

10891114
# Set up the default search directories for frameworks.
1090-
if(PLATFORM_INT MATCHES "^MAC_CATALYST")
1115+
if(PLATFORM_INT MATCHES "^MAC_CATALYST")
10911116
set(CMAKE_FRAMEWORK_PATH
10921117
${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks
10931118
${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks

0 commit comments

Comments
 (0)