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
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)
163166list (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
172175set (USED_CMAKE_GENERATOR "${CMAKE_GENERATOR} " )
@@ -230,7 +233,7 @@ if("${contains_PLATFORM}" EQUAL "-1")
230233endif ()
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" )
235238endif ()
236239
@@ -261,10 +264,10 @@ set(NAMED_LANGUAGE_SUPPORT_INT ${NAMED_LANGUAGE_SUPPORT} CACHE BOOL
261264# Specify the minimum version of the deployment target.
262265if (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")
481484elseif (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 ()
497530elseif (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 ()
549582elseif (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 )
556597else ()
557598 message (FATAL_ERROR "Invalid PLATFORM: ${PLATFORM_INT} " )
558599endif ()
@@ -761,7 +802,7 @@ set(APPLE ON CACHE BOOL "")
761802if (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 "" )
767808elseif (PLATFORM STREQUAL "VISIONOS" OR PLATFORM STREQUAL "SIMULATOR_VISIONOS" OR PLATFORM STREQUAL "VISIONOSCOMBINED" )
0 commit comments