Skip to content

Commit 20461f5

Browse files
steveisokCopilot
andauthored
Introduce CLR_CMAKE_TARGET_APPLE_MOBILE for iOS/tvOS/MacCatalyst (#126833)
These three platforms share the same runtime constraints: static linking, no fork(), no build tools, hybrid globalization, no console signals, etc. Having each one listed individually in cmake conditions is verbose and error-prone — PR #126550 accidentally disabled FEATURE_CORPROFILER for tvOS alone, breaking unified-build tvOS legs. Introduce CLR_CMAKE_TARGET_APPLE_MOBILE as an umbrella variable in configureplatform.cmake, set when any of iOS, tvOS, or MacCatalyst is the target. Replace ~30 'all three grouped' patterns across 11 cmake files with the umbrella, reducing line noise and preventing future divergence. Per-platform variables are preserved where they genuinely differ: - configurecompiler.cmake: TARGET_* C++ defines and compiler targets - System.Security.Cryptography.Native.Apple: Swift platform names - System.Net.Security.Native / corehost: tvOS gssapi exclusion - System.Native: MacCatalyst pal_iossupportversion.m Also fixes: sendfile exclusion was missing MacCatalyst (now covered by APPLE_MOBILE), and the triplicated configure.cmake feature overrides for iOS/MacCatalyst/tvOS are consolidated into one block. --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent f272b39 commit 20461f5

11 files changed

Lines changed: 35 additions & 41 deletions

File tree

eng/native/configureplatform.cmake

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,14 @@ if(CLR_CMAKE_TARGET_OS STREQUAL tvos OR CLR_CMAKE_TARGET_OS STREQUAL tvossimulat
396396
set(CLR_CMAKE_TARGET_TVOS 1)
397397
endif(CLR_CMAKE_TARGET_OS STREQUAL tvos OR CLR_CMAKE_TARGET_OS STREQUAL tvossimulator)
398398

399+
# Umbrella variable for Apple mobile platforms (iOS, tvOS, MacCatalyst).
400+
# These share the same runtime constraints: static linking, no fork(),
401+
# no build tools, hybrid globalization, etc. Use per-platform variables
402+
# only where they genuinely differ (compiler targets, gssapi, Swift).
403+
if (CLR_CMAKE_TARGET_MACCATALYST OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
404+
set(CLR_CMAKE_TARGET_APPLE_MOBILE 1)
405+
endif()
406+
399407
if(CLR_CMAKE_TARGET_OS STREQUAL freebsd)
400408
set(CLR_CMAKE_TARGET_UNIX 1)
401409
set(CLR_CMAKE_TARGET_FREEBSD 1)
@@ -534,14 +542,14 @@ if(LOWERCASE_CMAKE_BUILD_TYPE STREQUAL debug)
534542
string(REPLACE "-D_FORTIFY_SOURCE=2 " "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
535543
endif()
536544

537-
if (CLR_CMAKE_TARGET_ANDROID OR CLR_CMAKE_TARGET_MACCATALYST OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS OR CLR_CMAKE_HOST_ARCH_ARMV6)
545+
if (CLR_CMAKE_TARGET_ANDROID OR CLR_CMAKE_TARGET_APPLE_MOBILE OR CLR_CMAKE_HOST_ARCH_ARMV6)
538546
# Some platforms are opted-out from using the in-tree zlib-ng by default:
539547
# - Android and iOS-like platforms: concerns about extra binary size
540548
# - Armv6: zlib-ng has build breaks
541549
set(CLR_CMAKE_USE_SYSTEM_ZLIB 1)
542550
endif()
543551

544-
if (NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
552+
if (NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_APPLE_MOBILE AND NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
545553
# opt into building tools like ildasm/ilasm
546554
set(CLR_CMAKE_BUILD_TOOLS 1)
547555
endif()

src/coreclr/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ include(components.cmake)
6060
#---------------------------
6161
# Build the single file host
6262
#---------------------------
63-
if(NOT CLR_CROSS_COMPONENTS_BUILD AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ARCH_WASM)
63+
if(NOT CLR_CROSS_COMPONENTS_BUILD AND NOT CLR_CMAKE_TARGET_APPLE_MOBILE AND NOT CLR_CMAKE_TARGET_ARCH_WASM)
6464
set(CLR_SINGLE_FILE_HOST_ONLY 1)
6565
add_subdirectory(${CLR_SRC_NATIVE_DIR}/corehost/apphost/static Corehost.Static)
6666
add_dependencies(runtime singlefilehost)

src/coreclr/clrfeatures.cmake

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ endif()
1515

1616
# On desktop, if dynamic code compiled is false, we still enable static linking so we don't have to add platform manifest entries
1717
# for interpreter library, which is required for the packs build
18-
if (CLR_CMAKE_TARGET_ARCH_WASM OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS OR CLR_CMAKE_TARGET_MACCATALYST OR NOT FEATURE_DYNAMIC_CODE_COMPILED)
18+
if (CLR_CMAKE_TARGET_ARCH_WASM OR CLR_CMAKE_TARGET_APPLE_MOBILE OR NOT FEATURE_DYNAMIC_CODE_COMPILED)
1919
set(FEATURE_STATICALLY_LINKED 1)
2020
endif()
2121

@@ -51,9 +51,7 @@ if(NOT DEFINED FEATURE_CORPROFILER)
5151
# ICorProfiler isn't supported on non-desktop targets or WASM scenarios
5252
if(NOT CLR_CMAKE_TARGET_ARCH_WASM
5353
# AND NOT CLR_CMAKE_TARGET_ANDROID
54-
# AND NOT CLR_CMAKE_TARGET_MACCATALYST
55-
# AND NOT CLR_CMAKE_TARGET_IOS
56-
# AND NOT CLR_CMAKE_TARGET_TVOS
54+
# AND NOT CLR_CMAKE_TARGET_APPLE_MOBILE
5755
)
5856
set(FEATURE_CORPROFILER 1)
5957
endif()

src/native/libs/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ endif ()
4040

4141
if (CLR_CMAKE_TARGET_UNIX OR CLR_CMAKE_TARGET_BROWSER OR CLR_CMAKE_TARGET_WASI)
4242
set(CMAKE_MACOSX_RPATH ON)
43-
if (CLR_CMAKE_TARGET_MACCATALYST OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
43+
if (CLR_CMAKE_TARGET_APPLE_MOBILE)
4444
set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON)
4545
set(CMAKE_INSTALL_NAME_DIR "@rpath")
4646
endif ()

src/native/libs/System.Globalization.Native/CMakeLists.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ if(CLR_CMAKE_TARGET_UNIX OR CLR_CMAKE_TARGET_WASI)
2323
add_compile_options(-Wno-unknown-warning-option)
2424

2525
# The mobile configurations in particular bring their own ICU, so skip
26-
if (NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT DEFINED CMAKE_ICU_DIR AND NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
26+
if (NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_APPLE_MOBILE AND NOT DEFINED CMAKE_ICU_DIR AND NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
2727
if (CLR_CMAKE_TARGET_OSX)
2828
execute_process(COMMAND brew --prefix OUTPUT_VARIABLE brew_prefix OUTPUT_STRIP_TRAILING_WHITESPACE)
2929
set(ICU_HOMEBREW_INC_PATH "${brew_prefix}/opt/icu4c/include")
@@ -62,7 +62,7 @@ set(NATIVEGLOBALIZATION_SOURCES
6262
pal_idna.c
6363
pal_common.c
6464
)
65-
if (NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS)
65+
if (NOT CLR_CMAKE_TARGET_APPLE_MOBILE)
6666
set(NATIVEGLOBALIZATION_SOURCES
6767
${NATIVEGLOBALIZATION_SOURCES}
6868
pal_calendarData.c
@@ -75,21 +75,21 @@ if (NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CM
7575
)
7676
endif()
7777

78-
if (CLR_CMAKE_TARGET_MACCATALYST OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
78+
if (CLR_CMAKE_TARGET_APPLE_MOBILE)
7979
add_definitions(-DAPPLE_HYBRID_GLOBALIZATION)
8080
set(NATIVEGLOBALIZATION_SOURCES
8181
${NATIVEGLOBALIZATION_SOURCES}
8282
pal_placeholders.c
8383
)
8484
endif()
8585

86-
if (NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND DEFINED CMAKE_ICU_DIR)
86+
if (NOT CLR_CMAKE_TARGET_APPLE_MOBILE AND DEFINED CMAKE_ICU_DIR)
8787
include_directories(${CMAKE_ICU_DIR}/include)
8888
link_libraries(${CMAKE_ICU_DIR}/lib/libicuuc.a ${CMAKE_ICU_DIR}/lib/libicui18n.a ${CMAKE_ICU_DIR}/lib/libicudata.a)
8989
link_libraries(stdc++)
9090
endif()
9191

92-
if ((CLR_CMAKE_TARGET_MACCATALYST OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS) AND NOT DEFINED CMAKE_ICU_DIR)
92+
if (CLR_CMAKE_TARGET_APPLE_MOBILE AND NOT DEFINED CMAKE_ICU_DIR)
9393
link_libraries(icucore)
9494
endif()
9595

@@ -108,7 +108,7 @@ if (LOCAL_BUILD)
108108
# For minipal files
109109
include_directories(../../)
110110
include_directories(${CMAKE_CURRENT_BINARY_DIR})
111-
elseif (CLR_CMAKE_TARGET_MACCATALYST OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS OR CLR_CMAKE_TARGET_BROWSER OR CLR_CMAKE_TARGET_WASI)
111+
elseif (CLR_CMAKE_TARGET_APPLE_MOBILE OR CLR_CMAKE_TARGET_BROWSER OR CLR_CMAKE_TARGET_WASI)
112112
add_definitions(-DSTATIC_ICU)
113113
set(NATIVEGLOBALIZATION_SOURCES ${NATIVEGLOBALIZATION_SOURCES} pal_icushim_static.c)
114114
else()
@@ -128,7 +128,7 @@ if (CLR_CMAKE_TARGET_APPLE)
128128
endif()
129129

130130
# time zone names are filtered out of icu data for the browser and associated functionality is disabled
131-
if (NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS)
131+
if (NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI AND NOT CLR_CMAKE_TARGET_APPLE_MOBILE)
132132
set(NATIVEGLOBALIZATION_SOURCES ${NATIVEGLOBALIZATION_SOURCES} pal_timeZoneInfo.c)
133133
endif()
134134

src/native/libs/System.IO.Compression.Native/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ if (CLR_CMAKE_TARGET_UNIX OR CLR_CMAKE_TARGET_BROWSER OR CLR_CMAKE_TARGET_WASI)
8383
target_link_libraries(System.IO.Compression.Native PRIVATE libzstd_static)
8484
endif()
8585

86-
if (NOT CLR_CMAKE_TARGET_ARCH_WASM AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_USE_SYSTEM_BROTLI AND NOT CLR_CMAKE_USE_SYSTEM_ZSTD)
86+
if (NOT CLR_CMAKE_TARGET_ARCH_WASM AND NOT CLR_CMAKE_TARGET_APPLE_MOBILE AND NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_USE_SYSTEM_BROTLI AND NOT CLR_CMAKE_USE_SYSTEM_ZSTD)
8787
set(DEF_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/System.IO.Compression.Native_unixexports.src)
8888
set(EXPORTS_FILE ${CMAKE_CURRENT_BINARY_DIR}/System.IO.Compression.Native.exports)
8989
generate_exports_file(${DEF_SOURCES} ${EXPORTS_FILE})
@@ -180,7 +180,7 @@ else ()
180180
target_link_libraries(System.IO.Compression.Native PUBLIC ${BROTLI_LIBRARIES})
181181
endif ()
182182

183-
if (NOT GEN_SHARED_LIB AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID)
183+
if (NOT GEN_SHARED_LIB AND NOT CLR_CMAKE_TARGET_APPLE_MOBILE AND NOT CLR_CMAKE_TARGET_ANDROID)
184184
set(NATIVECOMPRESSION_SOURCES ${NATIVECOMPRESSION_SOURCES} entrypoints.c)
185185
endif ()
186186

src/native/libs/System.IO.Compression.Native/extra_libs.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ macro(append_extra_compression_libs NativeLibsExtra)
66
elseif (CLR_CMAKE_HOST_ARCH_ARMV6)
77
find_package(ZLIB REQUIRED)
88
list(APPEND ZLIB_LIBRARIES z)
9-
elseif (CLR_CMAKE_TARGET_MACCATALYST OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
9+
elseif (CLR_CMAKE_TARGET_APPLE_MOBILE)
1010
find_package(ZLIB REQUIRED)
1111
list(APPEND ZLIB_LIBRARIES m)
1212
else()

src/native/libs/System.Native/CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
project(System.Native C)
22

3-
if (NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
3+
if (NOT CLR_CMAKE_TARGET_APPLE_MOBILE AND NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
44
add_definitions(-DHAS_CONSOLE_SIGNALS)
55
endif ()
66

@@ -73,7 +73,7 @@ if (CLR_CMAKE_TARGET_APPLE)
7373
pal_searchpath.m
7474
pal_datetime.m)
7575

76-
if (CLR_CMAKE_TARGET_MACCATALYST OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
76+
if (CLR_CMAKE_TARGET_APPLE_MOBILE)
7777
list (APPEND NATIVE_SOURCES_OBJC_NO_ARC pal_log.m)
7878

7979
if (CLR_CMAKE_TARGET_MACCATALYST)
@@ -137,7 +137,7 @@ if (GEN_SHARED_LIB)
137137
${NATIVE_LIBS_EXTRA}
138138
)
139139

140-
if (NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
140+
if (NOT CLR_CMAKE_TARGET_APPLE_MOBILE AND NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
141141
add_custom_command(TARGET System.Native POST_BUILD
142142
COMMENT "Verifying System.Native entry points against entrypoints.c "
143143
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../verify-entrypoints.sh
@@ -151,7 +151,7 @@ if (GEN_SHARED_LIB)
151151
install_with_stripped_symbols (System.Native PROGRAMS .)
152152
endif ()
153153

154-
if (NOT GEN_PINVOKE AND NOT GEN_SHARED_LIB AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID)
154+
if (NOT GEN_PINVOKE AND NOT GEN_SHARED_LIB AND NOT CLR_CMAKE_TARGET_APPLE_MOBILE AND NOT CLR_CMAKE_TARGET_ANDROID)
155155
set(NATIVE_SOURCES ${NATIVE_SOURCES} entrypoints.c)
156156
endif()
157157

src/native/libs/System.Net.Security.Native/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ if (GEN_SHARED_LIB)
2323
)
2424
endif()
2525

26-
if (NOT GEN_SHARED_LIB AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
26+
if (NOT GEN_SHARED_LIB AND NOT CLR_CMAKE_TARGET_APPLE_MOBILE AND NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
2727
set(NATIVEGSS_SOURCES ${NATIVEGSS_SOURCES} entrypoints.c)
2828
endif()
2929

@@ -40,7 +40,7 @@ if (GEN_SHARED_LIB)
4040
${NATIVE_LIBS_EXTRA}
4141
)
4242

43-
if (NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
43+
if (NOT CLR_CMAKE_TARGET_APPLE_MOBILE AND NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
4444
add_custom_command(TARGET System.Net.Security.Native POST_BUILD
4545
COMMENT "Verifying System.Net.Security.Native entry points against entrypoints.c "
4646
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../verify-entrypoints.sh

src/native/libs/System.Security.Cryptography.Native.Apple/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ set(NATIVECRYPTO_SOURCES
2323
pal_networkframework.m
2424
)
2525

26-
if (CLR_CMAKE_TARGET_MACCATALYST OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
26+
if (CLR_CMAKE_TARGET_APPLE_MOBILE)
2727
set(NATIVECRYPTO_SOURCES
2828
${NATIVECRYPTO_SOURCES}
2929
pal_keychain_ios.c
@@ -115,7 +115,7 @@ if (GEN_SHARED_LIB)
115115
)
116116
endif()
117117

118-
if (NOT GEN_SHARED_LIB AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS)
118+
if (NOT GEN_SHARED_LIB AND NOT CLR_CMAKE_TARGET_APPLE_MOBILE)
119119
set(NATIVECRYPTO_SOURCES ${NATIVECRYPTO_SOURCES} entrypoints.c)
120120
endif()
121121

@@ -132,7 +132,7 @@ if (GEN_SHARED_LIB)
132132
${NATIVE_LIBS_EXTRA}
133133
)
134134

135-
if (NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS)
135+
if (NOT CLR_CMAKE_TARGET_APPLE_MOBILE)
136136
add_custom_command(TARGET System.Security.Cryptography.Native.Apple POST_BUILD
137137
COMMENT "Verifying System.Security.Cryptography.Native.Apple points against entrypoints.c "
138138
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../verify-entrypoints.sh

0 commit comments

Comments
 (0)