Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added watchOS simulator combined build (arm64, x86_64) #218

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 17 additions & 2 deletions .github/workflows/combined.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
pull_request:
types: [ opened, synchronize ]

jobs:
jobs:
build_with_latest_OS64COMBINED:
name: "Latest Xcode, Target iOS Combined [x86_64, arm64] Target SDK 14.0"
runs-on: macos-latest
Expand Down Expand Up @@ -37,6 +37,21 @@ jobs:
xcode-version: '15.0.1'
- name: Build
run: ./.github/build.sh
build_with_15_0_1_SIMULATOR_WATCHOSCOMBINED:
name: "Xcode version 15.0.1, Target watchOS Simulator Combined [arm64, x86_64] Target SDK 10.0"
runs-on: macos-13
env:
PLATFORM: SIMULATOR_WATCHOSCOMBINED
USE_NEW_BUILD: 1
DEPLOYMENT_TARGET: 10.0
USE_XCODE: 1
steps:
- uses: actions/checkout@v2
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '15.0.1'
- name: Build
run: ./.github/build.sh
build_with_15_0_1_TVOSCOMBINED:
name: "Xcode version 15.0.1, Target tvOS Combined [arm64, x86_64] Target SDK 16.0"
runs-on: macos-13
Expand Down Expand Up @@ -66,4 +81,4 @@ jobs:
with:
xcode-version: '15.0.1'
- name: Build
run: ./.github/build.sh
run: ./.github/build.sh
19 changes: 16 additions & 3 deletions .github/workflows/watchos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:

jobs:
build_with_15_4_WATCHOS:
name: "Xcode version 15.4, Target tvOS [armv7k, arm64_32] Target SDK 10.5"
name: "Xcode version 15.4, Target watchOS [armv7k, arm64_32] Target SDK 10.5"
runs-on: macos-14
env:
PLATFORM: WATCHOS
Expand All @@ -21,7 +21,7 @@ jobs:
- name: Build
run: ./.github/build.sh
build_with_15_0_1_SIMULATOR_WATCHOS:
name: "Xcode version 15.0.1, Target tvOS [x86_64] Target SDK 10.0"
name: "Xcode version 15.0.1, Target watchOS Simulator [x86_64] Target SDK 10.0"
runs-on: macos-13
env:
PLATFORM: SIMULATOR_WATCHOS
Expand All @@ -32,4 +32,17 @@ jobs:
with:
xcode-version: '15.0.1'
- name: Build
run: ./.github/build.sh
run: ./.github/build.sh
build_with_15_0_1_SIMULATORARM64_WATCHOS:
name: "Xcode version 15.0.1, Target watchOS Simulator [arm64] Target SDK 10.0"
runs-on: macos-13
env:
PLATFORM: SIMULATORARM64_WATCHOS
DEPLOYMENT_TARGET: 10.0
steps:
- uses: actions/checkout@v2
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '15.0.1'
- name: Build
run: ./.github/build.sh
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ A CMake toolchain file for iOS (+ Catalyst), watchOS, tvOS and macOS development
* _SIMULATOR_ - to build for iOS simulator 32 bit (i386) -- **DEPRECATED**
* _SIMULATOR64_ - to build for iOS simulator 64 bit (x86_64)
* _SIMULATORARM64_ - to build for iOS simulator 64 bit (arm64)
* _SIMULATOR64COMBINED_ - to build for iOS simulator 64 bit (FAT lib) (arm64, x86_64)
* _VISIONOS_ - to build for visionOS (arm64) -- **Apple Silicon Required**
* _VISIONOSCOMBINED_ - to build for visionOS & visionOS Simulator (FAT lib) (arm64) -- **Apple Silicon Required**
* _SIMULATOR_VISIONOS_ - to build for visionOS Simulator (arm64) -- **Apple Silicon Required**
Expand All @@ -24,9 +25,10 @@ A CMake toolchain file for iOS (+ Catalyst), watchOS, tvOS and macOS development
* _SIMULATOR_TVOS_ - to build for tvOS Simulator (x86_64)
* _SIMULATORARM64_TVOS_ = to build for tvOS Simulator (arm64)
* _WATCHOS_ - to build for watchOS (armv7k, arm64_32)
* _WATCHOSCOMBINED_ - to build for watchOS & Simulator (armv7k, arm64_32, i386)
* _SIMULATOR_WATCHOS_ - to build for watchOS Simulator (i386)
* _WATCHOSCOMBINED_ - to build for watchOS & Simulator (armv7k, arm64_32, x86_64)
* _SIMULATOR_WATCHOS_ - to build for watchOS Simulator (x86_64)
* _SIMULATORARM64_WATCHOS_ = to build for watchOS Simulator (arm64)
* _SIMULATOR_WATCHOSCOMBINED_ = to build for watchOS Simulator (FAT lib) (arm64, x86_64)
* _MAC_ - to build for macOS (x86_64)
* _MAC_ARM64_ - to build for macOS on Apple Silicon (arm64)
* _MAC_UNIVERSAL_ - to build for macOS on x86_64 and Apple Silicon (arm64) combined
Expand Down
53 changes: 42 additions & 11 deletions ios.toolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
# 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)
# SIMULATOR_WATCHOS = Build for x86_64 for watchOS Simulator.
# SIMULATORARM64_WATCHOS = Build for arm64 for watchOS Simulator.
# 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)
# MAC = Build for x86_64 macOS.
# MAC_ARM64 = Build for Apple Silicon macOS.
# MAC_UNIVERSAL = Combined build for x86_64 and Apple Silicon on macOS.
Expand Down Expand Up @@ -166,9 +167,9 @@ set(ENV{_IOS_TOOLCHAIN_HAS_RUN} true)
list(APPEND _supported_platforms
"OS" "OS64" "OS64COMBINED" "SIMULATOR" "SIMULATOR64" "SIMULATORARM64" "SIMULATOR64COMBINED"
"TVOS" "TVOSCOMBINED" "SIMULATOR_TVOS" "SIMULATORARM64_TVOS"
"WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" "SIMULATORARM64_WATCHOS"
"WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" "SIMULATORARM64_WATCHOS" "SIMULATOR_WATCHOSCOMBINED"
"MAC" "MAC_ARM64" "MAC_UNIVERSAL"
"VISIONOS" "SIMULATOR_VISIONOS" "VISIONOSCOMBINED"
"VISIONOS" "SIMULATOR_VISIONOS" "VISIONOSCOMBINED"
"MAC_CATALYST" "MAC_CATALYST_ARM64" "MAC_CATALYST_UNIVERSAL")

# Cache what generator is used
Expand Down Expand Up @@ -316,7 +317,7 @@ if(PLATFORM_INT STREQUAL "OS")
set(ARCHS armv7 armv7s arm64)
set(APPLE_TARGET_TRIPLE_INT arm-apple-ios${DEPLOYMENT_TARGET})
else()
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET})
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET})
endif()
elseif(PLATFORM_INT STREQUAL "OS64")
set(SDK_NAME iphoneos)
Expand Down Expand Up @@ -461,12 +462,12 @@ elseif(PLATFORM_INT STREQUAL "WATCHOSCOMBINED")
if(MODERN_CMAKE)
if(NOT ARCHS)
if (XCODE_VERSION_INT VERSION_GREATER 10.0)
set(ARCHS armv7k arm64_32 i386)
set(APPLE_TARGET_TRIPLE_INT arm64_32-i386-apple-watchos${DEPLOYMENT_TARGET})
set(ARCHS armv7k arm64_32 x86_64)
set(APPLE_TARGET_TRIPLE_INT arm64_32-x86_64-apple-watchos${DEPLOYMENT_TARGET})
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k arm64_32")
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386")
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "x86_64")
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k arm64_32")
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386")
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "x86_64")
else()
set(ARCHS armv7k i386)
set(APPLE_TARGET_TRIPLE_INT arm-i386-apple-watchos${DEPLOYMENT_TARGET})
Expand All @@ -484,8 +485,13 @@ elseif(PLATFORM_INT STREQUAL "WATCHOSCOMBINED")
elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS")
set(SDK_NAME watchsimulator)
if(NOT ARCHS)
set(ARCHS i386)
set(APPLE_TARGET_TRIPLE_INT i386-apple-watchos${DEPLOYMENT_TARGET}-simulator)
if (XCODE_VERSION_INT VERSION_GREATER 10.0)
set(ARCHS x86_64)
set(APPLE_TARGET_TRIPLE_INT x86_64-apple-watchos${DEPLOYMENT_TARGET}-simulator)
else()
set(ARCHS i386)
set(APPLE_TARGET_TRIPLE_INT i386-apple-watchos${DEPLOYMENT_TARGET}-simulator)
endif()
else()
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator)
endif()
Expand All @@ -497,6 +503,31 @@ elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_WATCHOS")
else()
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator)
endif()
elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOSCOMBINED")
set(SDK_NAME watchsimulator)
if(MODERN_CMAKE)
if(NOT ARCHS)
if (XCODE_VERSION_INT VERSION_GREATER 12.0)
set(ARCHS arm64 x86_64)
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "")
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "arm64 x86_64")
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "")
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "arm64 x86_64")
set(APPLE_TARGET_TRIPLE_INT arm64_x86_64-apple-watchos${DEPLOYMENT_TARGET}-simulator)
else()
set(ARCHS arm64 i386)
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "")
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386")
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "")
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386")
set(APPLE_TARGET_TRIPLE_INT arm64_i386-apple-watchos${DEPLOYMENT_TARGET}-simulator)
endif()
else()
set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator)
endif()
else()
message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the SIMULATOR_WATCHOSCOMBINED setting work")
endif()
elseif(PLATFORM_INT STREQUAL "SIMULATOR_VISIONOS")
set(SDK_NAME xrsimulator)
if(NOT ARCHS)
Expand Down Expand Up @@ -1049,7 +1080,7 @@ set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
)

if(NAMED_LANGUAGE_SUPPORT_INT)
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
CMAKE_OBJC_FLAGS
CMAKE_OBJC_DEBUG
CMAKE_OBJC_MINSIZEREL
Expand Down Expand Up @@ -1087,7 +1118,7 @@ IF(NOT DEFINED CMAKE_FIND_FRAMEWORK)
ENDIF(NOT DEFINED CMAKE_FIND_FRAMEWORK)

# Set up the default search directories for frameworks.
if(PLATFORM_INT MATCHES "^MAC_CATALYST")
if(PLATFORM_INT MATCHES "^MAC_CATALYST")
set(CMAKE_FRAMEWORK_PATH
${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks
${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks
Expand Down