Skip to content

Commit f75a02d

Browse files
authored
Added platform option MAC_CATALYST_UNIVERSAL (#210)
* Added platform option MAC_CATALYST_UNIVERSAL * Pipeline for MAC_CATALYST_UNIVERSAL added
1 parent 491f003 commit f75a02d

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

.github/workflows/catalyst.yml

+13
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,19 @@ jobs:
2828
DEPLOYMENT_TARGET: 17.2
2929
steps:
3030
- uses: actions/checkout@v2
31+
- uses: maxim-lobanov/setup-xcode@v1
32+
with:
33+
xcode-version: '15.4'
34+
- name: Build
35+
run: ./.github/build.sh
36+
build_with_15_4_MAC_CATALYST_UNIVERSAL:
37+
name: "Xcode version 15.4, Target macOS Catalyst on Intel CPUs [x86_64] and Apple Silicon [arm64] Target SDK 17.2"
38+
runs-on: macos-14
39+
env:
40+
PLATFORM: MAC_CATALYST_UNIVERSAL
41+
DEPLOYMENT_TARGET: 17.2
42+
steps:
43+
- uses: actions/checkout@v2
3144
- uses: maxim-lobanov/setup-xcode@v1
3245
with:
3346
xcode-version: '15.4'

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ A CMake toolchain file for iOS (+ Catalyst), watchOS, tvOS and macOS development
3131
* _MAC_UNIVERSAL_ - to build for macOS on x86_64 and Apple Silicon (arm64) combined -- **Apple Silicon Required**
3232
* _MAC_CATALYST_ - to build iOS for Mac (Catalyst, x86_64)
3333
* _MAC_CATALYST_ARM64_ - to build iOS for Mac on Apple Silicon (Catalyst, arm64) -- **Apple Silicon Required**
34+
* _MAC_CATALYST_UNIVERSAL_ - to build iOS for Mac on x86_64 and Mac on arm64 combined -- **Apple Silicon Required**
3435

3536
# Example usage
3637

ios.toolchain.cmake

+13-4
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS
8282
# MAC_CATALYST_ARM64 = Build for Apple Silicon macOS with Catalyst support (iOS toolchain on macOS).
8383
# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS
84+
# MAC_CATALYST_UNIVERSAL = Combined build for x86_64 and Apple Silicon on Catalyst.
8485
#
8586
# CMAKE_OSX_SYSROOT: Path to the SDK to use. By default this is
8687
# automatically determined from PLATFORM and xcodebuild, but
@@ -123,6 +124,7 @@
123124
# MAC_UNIVERSAL = x86_64 arm64
124125
# MAC_CATALYST = x86_64
125126
# MAC_CATALYST_ARM64 = arm64
127+
# MAC_CATALYST_UNIVERSAL = x86_64 arm64
126128
#
127129
# NOTE: When manually specifying ARCHS, put a semi-colon between the entries. E.g., -DARCHS="armv7;arm64"
128130
#
@@ -166,7 +168,7 @@ list(APPEND _supported_platforms
166168
"WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" "SIMULATORARM64_WATCHOS"
167169
"MAC" "MAC_ARM64" "MAC_UNIVERSAL"
168170
"VISIONOS" "SIMULATOR_VISIONOS" "VISIONOSCOMBINED"
169-
"MAC_CATALYST" "MAC_CATALYST_ARM64")
171+
"MAC_CATALYST" "MAC_CATALYST_ARM64" "MAC_CATALYST_UNIVERSAL")
170172

171173
# Cache what generator is used
172174
set(USED_CMAKE_GENERATOR "${CMAKE_GENERATOR}")
@@ -230,7 +232,7 @@ if("${contains_PLATFORM}" EQUAL "-1")
230232
endif()
231233

232234
# 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")
235+
if(PLATFORM MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$|^(MAC_UNIVERSAL)$|^(MAC_CATALYST_UNIVERSAL)$" AND ${CMAKE_VERSION} VERSION_LESS "3.19.5")
234236
message(FATAL_ERROR "Apple Silicon builds requires a minimum of CMake 3.19.5")
235237
endif()
236238

@@ -275,7 +277,7 @@ if(NOT DEFINED DEPLOYMENT_TARGET)
275277
elseif(PLATFORM STREQUAL "MAC_UNIVERSAL")
276278
# Unless specified, SDK version 11.0 (Big Sur) is used by default as minimum target version for universal builds.
277279
set(DEPLOYMENT_TARGET "11.0")
278-
elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64")
280+
elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64" OR PLATFORM STREQUAL "MAC_CATALYST_UNIVERSAL")
279281
# Unless specified, SDK version 13.0 is used by default as the minimum target version (mac catalyst minimum requirement).
280282
set(DEPLOYMENT_TARGET "13.1")
281283
else()
@@ -553,6 +555,13 @@ elseif(PLATFORM_INT STREQUAL "MAC_UNIVERSAL")
553555
endif()
554556
string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}")
555557
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET})
558+
elseif(PLATFORM_INT STREQUAL "MAC_CATALYST_UNIVERSAL")
559+
set(SDK_NAME macosx)
560+
if(NOT ARCHS)
561+
set(ARCHS "x86_64;arm64")
562+
endif()
563+
string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}")
564+
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi)
556565
else()
557566
message(FATAL_ERROR "Invalid PLATFORM: ${PLATFORM_INT}")
558567
endif()
@@ -761,7 +770,7 @@ set(APPLE ON CACHE BOOL "")
761770
if(PLATFORM STREQUAL "MAC" OR PLATFORM STREQUAL "MAC_ARM64" OR PLATFORM STREQUAL "MAC_UNIVERSAL")
762771
set(IOS OFF CACHE BOOL "")
763772
set(MACOS ON CACHE BOOL "")
764-
elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64")
773+
elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64" OR PLATFORM STREQUAL "MAC_CATALYST_UNIVERSAL")
765774
set(IOS ON CACHE BOOL "")
766775
set(MACOS ON CACHE BOOL "")
767776
elseif(PLATFORM STREQUAL "VISIONOS" OR PLATFORM STREQUAL "SIMULATOR_VISIONOS" OR PLATFORM STREQUAL "VISIONOSCOMBINED")

0 commit comments

Comments
 (0)