Skip to content

Commit 268e281

Browse files
committed
Enable building NativeAOT for Apple mobile platforms
These changes allow the NativeAOT runtime to compile for and run on iOS, tvOS and MacCatalyst. Contributes to dotnet#81024
1 parent 8642a21 commit 268e281

File tree

53 files changed

+421
-151
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+421
-151
lines changed

eng/Subsets.props

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@
4545
</PropertyGroup>
4646

4747
<PropertyGroup>
48-
<RuntimeFlavor Condition="'$(TargetsMobile)' == 'true'">Mono</RuntimeFlavor>
48+
<RuntimeFlavor Condition="'$(TargetsMobile)' == 'true' and !$(_subset.Contains('+clr.nativeaotlibs+'))">Mono</RuntimeFlavor>
49+
<RuntimeFlavor Condition="'$(TargetsMobile)' == 'true' and $(_subset.Contains('+clr.nativeaotlibs+'))">CoreCLR</RuntimeFlavor>
4950
<RuntimeFlavor Condition="'$(RuntimeFlavor)' == '' and ($(_subset.Contains('+mono+')) or $(_subset.Contains('+mono.runtime+'))) and (!$(_subset.Contains('+clr+')) and !$(_subset.Contains('+clr.runtime+')))">Mono</RuntimeFlavor>
5051
<RuntimeFlavor Condition="'$(RuntimeFlavor)' == ''">$(PrimaryRuntimeFlavor)</RuntimeFlavor>
5152
</PropertyGroup>
@@ -71,7 +72,8 @@
7172
<DefaultLibrariesSubsets Condition="'$(BuildTargetFramework)' == '$(NetCoreAppCurrent)' or
7273
'$(BuildTargetFramework)' == '' or
7374
'$(BuildAllConfigurations)' == 'true'">libs.native+</DefaultLibrariesSubsets>
74-
<DefaultLibrariesSubsets>$(DefaultLibrariesSubsets)libs.sfx+libs.oob+libs.pretest</DefaultLibrariesSubsets>
75+
<DefaultLibrariesSubsets>$(DefaultLibrariesSubsets)libs.sfx+libs.oob+</DefaultLibrariesSubsets>
76+
<DefaultLibrariesSubsets Condition="'$(TargetsMobile)' == 'true' and !$(_subset.Contains('+clr.nativeaotlibs+'))">$(DefaultLibrariesSubsets)+libs.pretest</DefaultLibrariesSubsets>
7577

7678
<DefaultToolsSubsets>tools.illink</DefaultToolsSubsets>
7779

@@ -105,7 +107,7 @@
105107

106108
<PropertyGroup>
107109
<!-- CLR NativeAot only builds in a subset of the matrix -->
108-
<NativeAotSupported Condition="('$(TargetOS)' == 'windows' or '$(TargetOS)' == 'linux' or '$(TargetOS)' == 'osx' or '$(TargetOS)' == 'freebsd') and ('$(TargetArchitecture)' == 'x64' or '$(TargetArchitecture)' == 'arm64')">true</NativeAotSupported>
110+
<NativeAotSupported Condition="('$(TargetOS)' == 'windows' or '$(TargetOS)' == 'linux' or '$(TargetOS)' == 'osx' or '$(TargetOS)' == 'maccatalyst' or '$(TargetOS)' == 'iossimulator' or '$(TargetOS)' == 'ios' or '$(TargetOS)' == 'tvossimulator' or '$(TargetOS)' == 'tvos' or '$(TargetOS)' == 'freebsd') and ('$(TargetArchitecture)' == 'x64' or '$(TargetArchitecture)' == 'arm64')">true</NativeAotSupported>
109111

110112
<!-- If we're building clr.nativeaotlibs and not building the CLR runtime, compile libraries against NativeAOT CoreLib -->
111113
<UseNativeAotCoreLib Condition="$(_subset.Contains('+clr.nativeaotlibs+')) and !$(_subset.Contains('+clr.native+')) and !$(_subset.Contains('+clr.runtime+'))">true</UseNativeAotCoreLib>

eng/native/build-commons.sh

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,58 @@ build_native()
102102
echo "Error: Unknown Android architecture $hostArch."
103103
exit 1
104104
fi
105+
elif [[ "$__TargetOS" == iossimulator ]]; then
106+
cmakeArgs="-C $__RepoRootDir/eng/native/tryrun_ios_tvos.cmake $cmakeArgs"
107+
108+
# set default iOS simulator deployment target
109+
# keep in sync with src/mono/Directory.Build.props, eng/native/build-commons.sh
110+
cmakeArgs="-DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 $cmakeArgs"
111+
if [[ "$__TargetArch" == x64 ]]; then
112+
cmakeArgs="-DCMAKE_OSX_ARCHITECTURES=\"x86_64\" $cmakeArgs"
113+
elif [[ "$__TargetArch" == arm64 ]]; then
114+
cmakeArgs="-DCMAKE_OSX_ARCHITECTURES=\"arm64\" $cmakeArgs"
115+
else
116+
echo "Error: Unknown iOS Simulator architecture $__TargetArch."
117+
exit 1
118+
fi
119+
elif [[ "$__TargetOS" == ios ]]; then
120+
cmakeArgs="-C $__RepoRootDir/eng/native/tryrun_ios_tvos.cmake $cmakeArgs"
121+
122+
# set default iOS device deployment target
123+
# keep in sync with src/mono/Directory.Build.props, eng/native/build-commons.sh
124+
cmakeArgs="-DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 $cmakeArgs"
125+
if [[ "$__TargetArch" == arm64 ]]; then
126+
cmakeArgs="-DCMAKE_OSX_ARCHITECTURES=\"arm64\" $cmakeArgs"
127+
else
128+
echo "Error: Unknown iOS architecture $__TargetArch."
129+
exit 1
130+
fi
131+
elif [[ "$__TargetOS" == tvossimulator ]]; then
132+
cmakeArgs="-C $__RepoRootDir/eng/native/tryrun_ios_tvos.cmake $cmakeArgs"
133+
134+
# set default tvOS simulator deployment target
135+
# keep in sync with src/mono/Directory.Build.props, eng/native/build-commons.sh
136+
cmakeArgs="-DCMAKE_SYSTEM_NAME=tvOS -DCMAKE_OSX_SYSROOT=appletvsimulator -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 $cmakeArgs"
137+
if [[ "$__TargetArch" == x64 ]]; then
138+
cmakeArgs="-DCMAKE_OSX_ARCHITECTURES=\"x86_64\" $cmakeArgs"
139+
elif [[ "$__TargetArch" == arm64 ]]; then
140+
cmakeArgs="-DCMAKE_OSX_ARCHITECTURES=\"arm64\" $cmakeArgs"
141+
else
142+
echo "Error: Unknown tvOS Simulator architecture $__TargetArch."
143+
exit 1
144+
fi
145+
elif [[ "$__TargetOS" == tvos ]]; then
146+
cmakeArgs="-C $__RepoRootDir/eng/native/tryrun_ios_tvos.cmake $cmakeArgs"
147+
148+
# set default tvOS device deployment target
149+
# keep in sync with src/mono/Directory.Build.props, eng/native/build-commons.sh
150+
cmakeArgs="-DCMAKE_SYSTEM_NAME=tvOS -DCMAKE_OSX_SYSROOT=appletvos -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 $cmakeArgs"
151+
if [[ "$__TargetArch" == arm64 ]]; then
152+
cmakeArgs="-DCMAKE_OSX_ARCHITECTURES=\"arm64\" $cmakeArgs"
153+
else
154+
echo "Error: Unknown tvOS architecture $__TargetArch."
155+
exit 1
156+
fi
105157
fi
106158

107159
if [[ "$__UseNinja" == 1 ]]; then

eng/native/configurecompiler.cmake

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,14 +276,36 @@ if (CLR_CMAKE_HOST_UNIX)
276276
add_definitions(-DHOST_UNIX)
277277

278278
if(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_MACCATALYST)
279-
add_definitions(-DHOST_OSX)
279+
if(CLR_CMAKE_HOST_MACCATALYST)
280+
add_definitions(-DHOST_MACCATALYST)
281+
else()
282+
add_definitions(-DHOST_OSX)
283+
endif()
280284
if(CLR_CMAKE_HOST_UNIX_AMD64)
281285
message("Detected OSX x86_64")
282286
elseif(CLR_CMAKE_HOST_UNIX_ARM64)
283287
message("Detected OSX ARM64")
284288
else()
285289
clr_unknown_arch()
286290
endif()
291+
elseif (CLR_CMAKE_HOST_IOS)
292+
add_definitions(-DHOST_IOS)
293+
if(CLR_CMAKE_HOST_UNIX_AMD64)
294+
message("Detected iOS x86_64")
295+
elseif(CLR_CMAKE_HOST_UNIX_ARM64)
296+
message("Detected iOS ARM64")
297+
else()
298+
clr_unknown_arch()
299+
endif()
300+
elseif (CLR_CMAKE_HOST_TVOS)
301+
add_definitions(-DHOST_TVOS)
302+
if(CLR_CMAKE_HOST_UNIX_AMD64)
303+
message("Detected tvOS x86_64")
304+
elseif(CLR_CMAKE_HOST_UNIX_ARM64)
305+
message("Detected tvOS ARM64")
306+
else()
307+
clr_unknown_arch()
308+
endif()
287309
elseif(CLR_CMAKE_HOST_FREEBSD)
288310
if(CLR_CMAKE_HOST_UNIX_ARM64)
289311
message("Detected FreeBSD aarch64")
@@ -540,8 +562,14 @@ if(CLR_CMAKE_TARGET_UNIX)
540562
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_OS>>>:TARGET_UNIX>)
541563
# Contracts are disabled on UNIX.
542564
add_definitions(-DDISABLE_CONTRACTS)
543-
if(CLR_CMAKE_TARGET_OSX AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS)
565+
if(CLR_CMAKE_TARGET_OSX)
544566
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_OS>>>:TARGET_OSX>)
567+
elseif(CLR_CMAKE_TARGET_MACCATALYST)
568+
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_OS>>>:TARGET_MACCATALYST>)
569+
elseif(CLR_CMAKE_TARGET_IOS)
570+
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_OS>>>:TARGET_IOS>)
571+
elseif(CLR_CMAKE_TARGET_TVOS)
572+
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_OS>>>:TARGET_TVOS>)
545573
elseif(CLR_CMAKE_TARGET_FREEBSD)
546574
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_OS>>>:TARGET_FREEBSD>)
547575
elseif(CLR_CMAKE_TARGET_ANDROID)

eng/native/tryrun_ios_tvos.cmake

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
macro(set_cache_value)
2+
set(${ARGV0} ${ARGV1} CACHE STRING "Result from TRY_RUN" FORCE)
3+
set(${ARGV0}__TRYRUN_OUTPUT "dummy output" CACHE STRING "Output from TRY_RUN" FORCE)
4+
endmacro()
5+
6+
set_cache_value(HAVE_SCHED_GETCPU_EXITCODE 1)
7+
set_cache_value(HAVE_CLOCK_MONOTONIC_COARSE_EXITCODE 1)
8+
set_cache_value(HAVE_CLOCK_MONOTONIC_EXITCODE 0)
9+
10+
11+
# TODO: these are taken from macOS, check these whether they're correct for iOS
12+
# some of them are probably not used by what we use from NativeAOT so could be reduced
13+
set_cache_value(FILE_OPS_CHECK_FERROR_OF_PREVIOUS_CALL_EXITCODE 1)
14+
set_cache_value(GETPWUID_R_SETS_ERRNO_EXITCODE 1)
15+
set_cache_value(HAS_POSIX_SEMAPHORES_EXITCODE 1)
16+
set_cache_value(HAVE_BROKEN_FIFO_KEVENT_EXITCODE 1)
17+
set_cache_value(HAVE_BROKEN_FIFO_SELECT_EXITCODE 1)
18+
set_cache_value(HAVE_CLOCK_REALTIME_EXITCODE 0)
19+
set_cache_value(HAVE_CLOCK_THREAD_CPUTIME_EXITCODE 0)
20+
set_cache_value(HAVE_CLOCK_GETTIME_NSEC_NP_EXITCODE 0)
21+
set_cache_value(HAVE_COMPATIBLE_ACOS_EXITCODE 0)
22+
set_cache_value(HAVE_COMPATIBLE_ASIN_EXITCODE 0)
23+
set_cache_value(HAVE_COMPATIBLE_ATAN2_EXITCODE 0)
24+
set_cache_value(HAVE_COMPATIBLE_EXP_EXITCODE 1)
25+
set_cache_value(HAVE_COMPATIBLE_ILOGB0_EXITCODE 0)
26+
set_cache_value(HAVE_COMPATIBLE_ILOGBNAN_EXITCODE 1)
27+
set_cache_value(HAVE_COMPATIBLE_LOG10_EXITCODE 0)
28+
set_cache_value(HAVE_COMPATIBLE_LOG_EXITCODE 0)
29+
set_cache_value(HAVE_COMPATIBLE_POW_EXITCODE 0)
30+
set_cache_value(HAVE_FUNCTIONAL_PTHREAD_ROBUST_MUTEXES_EXITCODE 1)
31+
set_cache_value(HAVE_LARGE_SNPRINTF_SUPPORT_EXITCODE 0)
32+
set_cache_value(HAVE_MMAP_DEV_ZERO_EXITCODE 1)
33+
set_cache_value(HAVE_PROCFS_CTL_EXITCODE 1)
34+
set_cache_value(HAVE_PROCFS_MAPS_EXITCODE 1)
35+
set_cache_value(HAVE_PROCFS_STATUS_EXITCODE 1)
36+
set_cache_value(HAVE_PROCFS_STAT_EXITCODE 1)
37+
set_cache_value(HAVE_SCHED_GET_PRIORITY_EXITCODE 0)
38+
set_cache_value(HAVE_VALID_NEGATIVE_INF_POW_EXITCODE 0)
39+
set_cache_value(HAVE_VALID_POSITIVE_INF_POW_EXITCODE 0)
40+
set_cache_value(HAVE_WORKING_CLOCK_GETTIME_EXITCODE 0)
41+
set_cache_value(HAVE_WORKING_GETTIMEOFDAY_EXITCODE 0)
42+
set_cache_value(MMAP_ANON_IGNORES_PROTECTION_EXITCODE 1)
43+
set_cache_value(ONE_SHARED_MAPPING_PER_FILEREGION_PER_PROCESS_EXITCODE 1)
44+
set_cache_value(PTHREAD_CREATE_MODIFIES_ERRNO_EXITCODE 1)
45+
set_cache_value(REALPATH_SUPPORTS_NONEXISTENT_FILES_EXITCODE 1)
46+
set_cache_value(SEM_INIT_MODIFIES_ERRNO_EXITCODE 1)
47+
set_cache_value(SSCANF_CANNOT_HANDLE_MISSING_EXPONENT_EXITCODE 1)
48+
set_cache_value(SSCANF_SUPPORT_ll_EXITCODE 0)
49+
set_cache_value(UNGETC_NOT_RETURN_EOF_EXITCODE 1)
50+
set_cache_value(HAVE_SHM_OPEN_THAT_WORKS_WELL_ENOUGH_WITH_MMAP_EXITCODE 1)

src/coreclr/clrdefinitions.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ if (CLR_CMAKE_TARGET_UNIX)
2929

3030
endif(CLR_CMAKE_TARGET_UNIX)
3131

32-
if (CLR_CMAKE_TARGET_OSX AND CLR_CMAKE_TARGET_ARCH_ARM64)
32+
if ((CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_TARGET_MACCATALYST OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS) AND CLR_CMAKE_TARGET_ARCH_ARM64)
3333
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:OSX_ARM64_ABI>)
34-
endif(CLR_CMAKE_TARGET_OSX AND CLR_CMAKE_TARGET_ARCH_ARM64)
34+
endif((CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_TARGET_MACCATALYST OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS) AND CLR_CMAKE_TARGET_ARCH_ARM64)
3535

3636
if(CLR_CMAKE_TARGET_ALPINE_LINUX)
3737
# Alpine Linux doesn't have fixed stack limit, this define disables some stack pointer

src/coreclr/crosscomponents.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ if (CLR_CMAKE_HOST_OS STREQUAL CLR_CMAKE_TARGET_OS)
3333
endif()
3434
endif()
3535

36-
if(NOT CLR_CMAKE_HOST_LINUX AND NOT CLR_CMAKE_HOST_OSX AND NOT FEATURE_CROSSBITNESS)
36+
if(NOT CLR_CMAKE_HOST_LINUX AND NOT CLR_CMAKE_HOST_OSX AND NOT CLR_CMAKE_HOST_MACCATALYST AND NOT CLR_CMAKE_HOST_IOS AND NOT CLR_CMAKE_HOST_TVOS AND NOT FEATURE_CROSSBITNESS)
3737
install_clr (TARGETS
3838
mscordaccore
3939
mscordbi

src/coreclr/debug/dbgutil/CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ if(CLR_CMAKE_HOST_WIN32)
55
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreaded)
66
endif(CLR_CMAKE_HOST_WIN32)
77

8-
if(CLR_CMAKE_HOST_WIN32 OR CLR_CMAKE_HOST_OSX)
8+
if(CLR_CMAKE_HOST_WIN32 OR CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS)
99
include_directories(${CLR_DIR}/inc/llvm)
10-
endif(CLR_CMAKE_HOST_WIN32 OR CLR_CMAKE_HOST_OSX)
10+
endif(CLR_CMAKE_HOST_WIN32 OR CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS)
1111

1212
add_definitions(-DPAL_STDCPP_COMPAT)
1313

@@ -25,10 +25,10 @@ if(CLR_CMAKE_TARGET_LINUX)
2525
)
2626
endif(CLR_CMAKE_TARGET_LINUX)
2727

28-
if(CLR_CMAKE_TARGET_OSX)
28+
if(CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS)
2929
list(APPEND DBGUTIL_SOURCES
3030
machoreader.cpp
3131
)
32-
endif(CLR_CMAKE_TARGET_OSX)
32+
endif(CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS)
3333

3434
add_library_clr(dbgutil STATIC ${DBGUTIL_SOURCES})

src/coreclr/dlls/mscordac/CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,14 @@ else(CLR_CMAKE_HOST_WIN32)
3131
# Add dependency on export file
3232
add_custom_target(mscordaccore_exports DEPENDS ${EXPORTS_FILE})
3333

34-
if(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
34+
if(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
3535
generate_exports_file(${DEF_SOURCES} ${EXPORTS_FILE})
36-
endif(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
36+
endif(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
3737

38-
if(CORECLR_SET_RPATH AND CLR_CMAKE_HOST_OSX AND CLR_CMAKE_HOST_ARCH_ARM64)
38+
if(CORECLR_SET_RPATH AND (CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS) AND CLR_CMAKE_HOST_ARCH_ARM64)
3939
set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON)
4040
set(CMAKE_INSTALL_NAME_DIR "@rpath")
41-
endif(CORECLR_SET_RPATH AND CLR_CMAKE_HOST_OSX AND CLR_CMAKE_HOST_ARCH_ARM64)
41+
endif(CORECLR_SET_RPATH AND (CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS) AND CLR_CMAKE_HOST_ARCH_ARM64)
4242

4343
if(CLR_CMAKE_HOST_LINUX)
4444

src/coreclr/dlls/mscordbi/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22
# Set the RPATH of mscordbi so that it can find dependencies without needing to set LD_LIBRARY_PATH
33
# For more information: http://www.cmake.org/Wiki/CMake_RPATH_handling.
44
if(CORECLR_SET_RPATH)
5-
if(CLR_CMAKE_HOST_OSX)
5+
if(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS)
66
set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON)
77
set(CMAKE_INSTALL_NAME_DIR "@rpath")
88
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
99
set(CMAKE_INSTALL_RPATH "@loader_path")
1010
else()
1111
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
1212
set(CMAKE_INSTALL_RPATH "\$ORIGIN")
13-
endif(CLR_CMAKE_HOST_OSX)
13+
endif(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS)
1414
endif(CORECLR_SET_RPATH)
1515

1616
set(CMAKE_INCLUDE_CURRENT_DIR ON)

src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,11 @@ else(CLR_CMAKE_HOST_WIN32)
5050
set(END_WHOLE_ARCHIVE -Wl,--no-whole-archive)
5151
endif(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD OR CLR_CMAKE_TARGET_SUNOS)
5252

53-
if(CLR_CMAKE_TARGET_OSX)
53+
if(CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS)
5454
# These options are used to force every object to be included even if it's unused.
5555
set(START_WHOLE_ARCHIVE -force_load)
5656
set(END_WHOLE_ARCHIVE )
57-
endif(CLR_CMAKE_TARGET_OSX)
57+
endif(CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS)
5858

5959
set_exports_linker_option(${EXPORTS_FILE})
6060

@@ -167,7 +167,7 @@ if(FEATURE_MERGE_JIT_AND_ENGINE)
167167
set(CLRJIT_STATIC clrjit_static)
168168
endif(FEATURE_MERGE_JIT_AND_ENGINE)
169169

170-
if (CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_TARGET_MACCATALYST)
170+
if (CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_TARGET_MACCATALYST OR CLR_CMAKE_TARGET_IOS)
171171
include(CMakeFindFrameworks)
172172
find_library(FOUNDATION Foundation REQUIRED)
173173
endif()

src/coreclr/gc/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,12 @@ install_clr(TARGETS clrgc DESTINATIONS . COMPONENT runtime)
112112
add_definitions(-DBUILD_AS_STANDALONE)
113113
add_definitions(-DFX_VER_INTERNALNAME_STR=clrgc.dll)
114114
add_definitions(-DVERIFY_HEAP)
115-
if(CLR_CMAKE_HOST_OSX)
116-
# The implementation of GCToOSInterface on MacOS makes use of non-POSIX
115+
if(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS)
116+
# The implementation of GCToOSInterface on Apple platforms makes use of non-POSIX
117117
# pthreads APIs, which by default are not included in the pthreads header
118118
# unless we define this macro.
119119
add_definitions(-D_DARWIN_C_SOURCE)
120-
endif(CLR_CMAKE_HOST_OSX)
120+
endif(CLR_CMAKE_HOST_OSX OR CLR_CMAKE_HOST_MACCATALYST OR CLR_CMAKE_HOST_IOS OR CLR_CMAKE_HOST_TVOS)
121121

122122
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
123123
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/env)

src/coreclr/gc/gc.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24072,9 +24072,9 @@ inline void Prefetch(void* addr)
2407224072
__prefetch((const char*)addr);
2407324073
#endif //defined(TARGET_AMD64) || defined(TARGET_X86)
2407424074

24075-
#elif defined(TARGET_UNIX) || defined(TARGET_OSX)
24075+
#elif defined(TARGET_UNIX)
2407624076
__builtin_prefetch(addr);
24077-
#else //!(TARGET_WINDOWS || TARGET_UNIX || TARGET_OSX)
24077+
#else //!(TARGET_WINDOWS || TARGET_UNIX)
2407824078
UNREFERENCED_PARAMETER(addr);
2407924079
#endif //TARGET_WINDOWS
2408024080
}

0 commit comments

Comments
 (0)