diff --git a/eng/Subsets.props b/eng/Subsets.props index f53c5f411dd1f..22f1f6bb1f477 100644 --- a/eng/Subsets.props +++ b/eng/Subsets.props @@ -222,7 +222,7 @@ - + diff --git a/eng/pipelines/runtime-official.yml b/eng/pipelines/runtime-official.yml index 154a91f1d149e..84b0d2fcde451 100644 --- a/eng/pipelines/runtime-official.yml +++ b/eng/pipelines/runtime-official.yml @@ -154,6 +154,7 @@ stages: - Browser_wasm - tvOS_arm64 - iOS_arm64 + - MacCatalyst_x64 # # Build Mono release AOT cross-compilers @@ -213,7 +214,7 @@ stages: - OSX_x64 jobParameters: buildArgs: -s mono+packs -c $(_BuildConfig) - /p:MonoCrossAOTTargetOS=Android+Browser+tvOS+iOS /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true + /p:MonoCrossAOTTargetOS=Android+Browser+tvOS+iOS+MacCatalyst /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true nameSuffix: CrossAOT_Mono runtimeVariant: crossaot dependsOn: @@ -221,11 +222,13 @@ stages: - mono_browser_offsets - mono_tvos_offsets - mono_ios_offsets + - mono_maccatalyst_offsets monoCrossAOTTargetOS: - Android - Browser - tvOS - iOS + - MacCatalyst isOfficialBuild: ${{ variables.isOfficialBuild }} extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml extraStepsParameters: diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 1c61a269ade55..e9cbb3f7db6ad 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -208,6 +208,7 @@ jobs: - Browser_wasm - tvOS_arm64 - iOS_arm64 + - MacCatalyst_x64 jobParameters: condition: >- or( @@ -561,11 +562,13 @@ jobs: - mono_browser_offsets - mono_tvos_offsets - mono_ios_offsets + - mono_maccatalyst_offsets monoCrossAOTTargetOS: - Android - Browser - tvOS - iOS + - MacCatalyst condition: >- or( eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true), diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/monocrossaot.sfxproj b/src/installer/pkg/sfx/Microsoft.NETCore.App/monocrossaot.sfxproj index efc97f22e8374..05aae6167007c 100644 --- a/src/installer/pkg/sfx/Microsoft.NETCore.App/monocrossaot.sfxproj +++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/monocrossaot.sfxproj @@ -6,6 +6,7 @@ $(MonoAotTargets);browser-wasm $(MonoAotTargets);tvossimulator-x64;tvossimulator-arm64;tvos-arm64 $(MonoAotTargets);iossimulator-x64;iossimulator-arm64;iossimulator-x86;ios-arm64;ios-arm + $(MonoAotTargets);maccatalyst-x64;maccatalyst-arm64 diff --git a/src/mono/CMakeLists.txt b/src/mono/CMakeLists.txt index d9efdcf81a605..44e9ff6ffd770 100644 --- a/src/mono/CMakeLists.txt +++ b/src/mono/CMakeLists.txt @@ -149,6 +149,14 @@ if(NOT AOT_TARGET_TRIPLE STREQUAL "") elseif(AOT_TARGET_TRIPLE STREQUAL "arm-apple-darwin10") set(TARGET_SYSTEM_NAME "iOS") set(TARGET_ARCH "arm") + elseif(AOT_TARGET_TRIPLE STREQUAL "x86_64-apple-maccatalyst") + set(TARGET_SYSTEM_NAME "Darwin") + set(TARGET_ARCH "x86_64") + set(CMAKE_SYSTEM_VARIANT "MacCatalyst") + elseif(AOT_TARGET_TRIPLE STREQUAL "aarch64-apple-maccatalyst") + set(TARGET_SYSTEM_NAME "Darwin") + set(TARGET_ARCH "arm64") + set(CMAKE_SYSTEM_VARIANT "MacCatalyst") elseif(AOT_TARGET_TRIPLE STREQUAL "wasm32-unknown-none") set(TARGET_SYSTEM_NAME "Emscripten") set(TARGET_ARCH "wasm") diff --git a/src/mono/cmake/config.h.in b/src/mono/cmake/config.h.in index 3062415827e9d..4fe9f54caf7d1 100644 --- a/src/mono/cmake/config.h.in +++ b/src/mono/cmake/config.h.in @@ -893,6 +893,9 @@ /* The JIT/AOT targets tvOS */ #cmakedefine TARGET_TVOS 1 +/* The JIT/AOT targets Mac Catalyst */ +#cmakedefine TARGET_MACCAT 1 + /* The JIT/AOT targets OSX */ #cmakedefine TARGET_OSX 1 diff --git a/src/mono/mono.proj b/src/mono/mono.proj index d0681b4fff575..f5a26eadecb35 100644 --- a/src/mono/mono.proj +++ b/src/mono/mono.proj @@ -50,6 +50,7 @@ true true true + true true true $([MSBuild]::NormalizeDirectory('$(MonoObjDir)', 'cross')) @@ -491,7 +492,14 @@ i386-apple-darwin10 x86_64-apple-darwin10 - + + true + $(XcodeDir)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk + $(MonoObjCrossDir)offsets-$(Platform)-darwin.h + aarch64-apple-maccatalyst + x86_64-apple-maccatalyst + + diff --git a/src/mono/mono/tools/offsets-tool/offsets-tool.py b/src/mono/mono/tools/offsets-tool/offsets-tool.py index a4e191292354b..d41069df784be 100644 --- a/src/mono/mono/tools/offsets-tool/offsets-tool.py +++ b/src/mono/mono/tools/offsets-tool/offsets-tool.py @@ -155,6 +155,19 @@ def require_emscipten_path (args): self.target_args += ["-arch", "x86_64"] self.target_args += ["-isysroot", args.sysroot] + # MacCatalyst + elif "x86_64-apple-maccatalyst" == args.abi: + require_sysroot (args) + self.target = Target ("TARGET_AMD64", "TARGET_MACCAT", IOS_DEFINES) + self.target_args += ["-target", "x86_64-apple-ios13.5-macabi"] + self.target_args += ["-isysroot", args.sysroot] + + elif "aarch64-apple-maccatalyst" == args.abi: + require_sysroot (args) + self.target = Target ("TARGET_ARM64", "TARGET_MACCAT", IOS_DEFINES) + self.target_args += ["-target", "arm64-apple-ios14.2-macabi"] + self.target_args += ["-isysroot", args.sysroot] + # watchOS elif "armv7k-apple-darwin" == args.abi: require_sysroot (args) diff --git a/src/mono/monoaotcross.proj b/src/mono/monoaotcross.proj index 9e154846bc5f0..b87ba94bdd6b2 100644 --- a/src/mono/monoaotcross.proj +++ b/src/mono/monoaotcross.proj @@ -11,10 +11,12 @@ <_MonoCrossAOTTargetOS Condition="$(_MonoGenerateOffsetsOSGroups.contains('+browser+'))">$(_MonoCrossAOTTargetOS)+browser+ <_MonoCrossAOTTargetOS Condition="$(_MonoGenerateOffsetsOSGroups.contains('+tvos+'))">$(_MonoCrossAOTTargetOS)+tvos+ <_MonoCrossAOTTargetOS Condition="$(_MonoGenerateOffsetsOSGroups.contains('+ios+'))">$(_MonoCrossAOTTargetOS)+ios+ + <_MonoCrossAOTTargetOS Condition="$(_MonoGenerateOffsetsOSGroups.contains('+maccatalyst+'))">$(_MonoCrossAOTTargetOS)+maccatalyst+ $(MonoAotTargets);Android-x64;Android-arm64;Android-x86;Android-arm $(MonoAotTargets);Browser-wasm $(MonoAotTargets);tvOSSimulator-x64;tvOSSimulator-arm64;tvOS-arm64 $(MonoAotTargets);iOSSimulator-x64;iOSSimulator-arm64;iOSSimulator-x86;iOS-arm64;iOS-arm + $(MonoAotTargets);MacCatalyst-x64;MacCatalyst-arm64