Skip to content

Commit a625a42

Browse files
author
yangchao
committed
xcode > 14.3 apple silicon use arm64 arch for ios simulation
1 parent 129eb43 commit a625a42

3 files changed

Lines changed: 30 additions & 8 deletions

File tree

native/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3725,9 +3725,14 @@ if(APPLE)
37253725
"$(inherited)"
37263726
${CC_EXTERNAL_LIBS}
37273727
)
3728+
if(CMAKE_OSX_ARCHITECTURES)
3729+
set(_CC_ENGINE_ARCHS "${CMAKE_OSX_ARCHITECTURES}")
3730+
else()
3731+
set(_CC_ENGINE_ARCHS "arm64;x86_64")
3732+
endif()
37283733
set_target_properties(${ENGINE_NAME} PROPERTIES
37293734
XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH "YES"
3730-
OSX_ARCHITECTURES "arm64;x86_64"
3735+
OSX_ARCHITECTURES "${_CC_ENGINE_ARCHS}"
37313736
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/archives
37323737
)
37333738
if(MACOSX)

templates/cmake/apple.cmake

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ macro(cc_ios_after_target _target_name)
8181
MACOSX_DEPLOYMENT_TARGET "${TARGET_IOS_VERSION}"
8282
XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${TARGET_IOS_VERSION}"
8383
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "${DEVELOPMENT_TEAM}"
84-
OSX_ARCHITECTURES "arm64;x86_64"
84+
OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}"
8585
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
8686
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME "AppIcon"
8787
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_LAUNCHSTORYBOARD_NAME "LaunchScreen"
@@ -95,12 +95,20 @@ macro(cc_ios_after_target _target_name)
9595

9696
cc_apple_set_launch_type(${CC_EXECUTABLE_NAME})
9797

98-
# # exclude arm64 arch and specify x86_64 for iphonesimulator by default, this will apply to both target.
99-
set(CMAKE_XCODE_ATTRIBUTE_EXCLUDED_ARCHS[sdk=iphonesimulator*] "arm64")
100-
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64")
101-
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64")
102-
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64")
103-
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64")
98+
# exclude arm64 arch and specify x86_64 for iphonesimulator by default, this will apply to both target.
99+
if(CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
100+
set(CMAKE_XCODE_ATTRIBUTE_EXCLUDED_ARCHS[sdk=iphonesimulator*] "")
101+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64")
102+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "arm64")
103+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64")
104+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "arm64")
105+
else()
106+
set(CMAKE_XCODE_ATTRIBUTE_EXCLUDED_ARCHS[sdk=iphonesimulator*] "arm64")
107+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64")
108+
set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64")
109+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64")
110+
set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64")
111+
endif()
104112

105113
set(CMAKE_XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2")
106114

templates/ios/CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ set(APP_NAME "CocosGame" CACHE STRING "Project Name")
55

66
project(${APP_NAME} CXX)
77

8+
# Xcode 14.3+ no longer supports running under Rosetta on Apple Silicon,
9+
# so iOS Simulator must use arm64 instead of x86_64.
10+
# See: https://developer.apple.com/documentation/xcode-release-notes/xcode-14_3-release-notes
11+
if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "arm64" AND "${XCODE_VERSION}" VERSION_GREATER_EQUAL "14.3")
12+
set(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "" FORCE)
13+
else()
14+
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
15+
endif()
16+
817
set(CC_PROJECT_DIR ${CMAKE_CURRENT_LIST_DIR})
918
set(CC_UI_RESOURCES)
1019
set(CC_PROJ_SOURCES)

0 commit comments

Comments
 (0)