diff --git a/eng/Subsets.props b/eng/Subsets.props index f7ee9dc16d5dbe..692812a9f7651a 100644 --- a/eng/Subsets.props +++ b/eng/Subsets.props @@ -45,6 +45,7 @@ mono.llvm+ mono.llvm+ $(DefaultMonoSubsets)mono.wasmruntime+ + $(DefaultMonoSubsets)mono.aotcross+ $(DefaultMonoSubsets)mono.runtime+mono.corelib+mono.packages libs.native+libs.ref+libs.src+libs.pretest+libs.packages @@ -92,6 +93,7 @@ + @@ -201,7 +203,7 @@ - + @@ -213,6 +215,10 @@ + + + + @@ -282,6 +288,7 @@ + diff --git a/eng/liveBuilds.targets b/eng/liveBuilds.targets index 96181b33cfc2db..ade6e32134fb40 100644 --- a/eng/liveBuilds.targets +++ b/eng/liveBuilds.targets @@ -25,6 +25,8 @@ $([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', 'sharedFramework')) $([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', 'crossgen2')) + $([MSBuild]::NormalizeDirectory('$(MonoArtifactsPath)', 'cross')) + $([MSBuild]::NormalizeDirectory('$(LibrariesArtifactsPath)', 'packages', '$(LibrariesConfiguration)')) $([MSBuild]::NormalizeDirectory('$(LibrariesPackagesDir)', 'Shipping')) $([MSBuild]::NormalizeDirectory('$(LibrariesPackagesDir)', 'NonShipping')) @@ -105,7 +107,7 @@ + Include="$(MonoArtifactsPath)\cross\**\*.*" /> diff --git a/eng/pipelines/common/global-build-job.yml b/eng/pipelines/common/global-build-job.yml index c197d33b16500f..ba0775f9c22c70 100644 --- a/eng/pipelines/common/global-build-job.yml +++ b/eng/pipelines/common/global-build-job.yml @@ -11,6 +11,7 @@ parameters: variables: [] targetRid: '' timeoutInMinutes: '' + dependsOn: '' pool: '' platform: '' condition: true @@ -40,8 +41,14 @@ jobs: workspace: clean: all + ${{ if and(ne(parameters.useCheckoutBundle, true),ne(parameters.dependsOn,'')) }}: + dependsOn: ${{ parameters.dependsOn }} + ${{ if eq(parameters.useCheckoutBundle, true) }}: - dependsOn: checkout + dependsOn: + - checkout + - ${{ if ne(parameters.dependsOn,'') }}: + - ${{ parameters.dependsOn }} variables: - name: _osParameter @@ -82,6 +89,13 @@ jobs: - ${{ if eq(parameters.isOfficialBuild, true) }}: - template: /eng/pipelines/common/restore-internal-tools.yml + - ${{ if eq(parameters.monoCrossAOTTargetOS, 'Android') }}: + - task: DownloadPipelineArtifact@2 + displayName: Download AOT offset files + inputs: + artifact: Mono_Offsets_Android + path: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles' + - ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS', 'Android') }}: - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh ${{ parameters.osGroup }} ${{ parameters.archType }} azDO displayName: Install Build Dependencies diff --git a/eng/pipelines/mono/templates/build-job.yml b/eng/pipelines/mono/templates/build-job.yml index c9cf9a6c1c4709..2d91e4b26ebac8 100644 --- a/eng/pipelines/mono/templates/build-job.yml +++ b/eng/pipelines/mono/templates/build-job.yml @@ -13,6 +13,8 @@ parameters: isOfficialBuild: false crossBuild: false crossrootfsDir: '' + dependsOn: '' + monoCrossAOTTargetOS: '' useCheckoutBundle: false ### Product build @@ -28,6 +30,7 @@ jobs: pool: ${{ parameters.pool }} runtimeVariant: ${{ parameters.runtimeVariant }} crossBuild: ${{ parameters.crossBuild }} + monoCrossAOTTargetOS: ${{ parameters.monoCrossAOTTargetOS }} crossrootfsDir: ${{ parameters.crossroofsDir }} condition: ${{ parameters.condition }} useCheckoutBundle: ${{ parameters.useCheckoutBundle }} @@ -40,6 +43,7 @@ jobs: # Note that the containers are defined in platform-matrix.yml container: ${{ parameters.container }} + dependsOn: ${{ parameters.dependsOn }} timeoutInMinutes: ${{ parameters.timeoutInMinutes }} gatherAssetManifests: true @@ -52,6 +56,10 @@ jobs: value: '' - name: osOverride value: '' + - name: aotCrossParameter + value: '' + - name: llvmParameter + value: '' - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}: - name: officialBuildIdArg value: '/p:officialBuildId=$(Build.BuildNumber)' @@ -85,6 +93,9 @@ jobs: - ${{ if eq(parameters.runtimeVariant, 'llvmaot') }}: - name: llvmParameter value: /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true $(llvmCxxAbi) + - ${{ if eq(parameters.monoCrossAOTTargetOS, 'Android') }}: + - name: aotCrossParameter + value: /p:BuildMonoCrossAOT=true /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true - ${{ parameters.variables }} steps: @@ -101,6 +112,13 @@ jobs: - script: $(Build.SourcesDirectory)\eng\common\init-tools-native.cmd -InstallDirectory $(Build.SourcesDirectory)\native-tools -Force displayName: Install native dependencies + - ${{ if eq(parameters.monoCrossAOTTargetOS, 'Android') }}: + - task: DownloadPipelineArtifact@2 + displayName: Download AOT offset files + inputs: + artifact: Mono_Offsets_Android + path: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles' + - ${{ if in(parameters.osGroup, 'OSX', 'iOS','tvOS') }}: - script: | du -sh $(Build.SourcesDirectory)/* @@ -109,10 +127,10 @@ jobs: # Build - ${{ if ne(parameters.osGroup, 'windows') }}: - - script: ./build$(scriptExt) -subset mono -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) $(llvmParameter) + - script: ./build$(scriptExt) -subset mono -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) $(aotCrossParameter) $(llvmParameter) displayName: Build product - ${{ if eq(parameters.osGroup, 'windows') }}: - - script: build$(scriptExt) -subset mono -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) $(llvmParameter) + - script: build$(scriptExt) -subset mono -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) $(aotCrossParameter) $(llvmParameter) displayName: Build product - ${{ if in(parameters.osGroup, 'OSX', 'iOS','tvOS') }}: @@ -134,10 +152,10 @@ jobs: # Build packages - ${{ if ne(parameters.osGroup, 'windows') }}: - - script: ./build$(scriptExt) -subset mono -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) $(llvmParameter) -pack $(OutputRidArg) + - script: ./build$(scriptExt) -subset mono -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) $(aotCrossParameter) $(llvmParameter) -pack $(OutputRidArg) displayName: Build nupkg - ${{ if eq(parameters.osGroup, 'windows') }}: - - script: build$(scriptExt) -subset mono -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) $(llvmParameter) -pack $(OutputRidArg) + - script: build$(scriptExt) -subset mono -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) $(aotCrossParameter) $(llvmParameter) -pack $(OutputRidArg) displayName: Build nupkg # Publish official build diff --git a/eng/pipelines/mono/templates/generate-offsets.yml b/eng/pipelines/mono/templates/generate-offsets.yml new file mode 100644 index 00000000000000..d271e3d3b1c3fc --- /dev/null +++ b/eng/pipelines/mono/templates/generate-offsets.yml @@ -0,0 +1,94 @@ +parameters: + buildConfig: 'Debug' + osGroup: '' + platform: '' + container: '' + timeoutInMinutes: '' + variables: {} + pool: '' + condition: true + isOfficialBuild: false + +### Product build +jobs: +- template: xplat-pipeline-job.yml + parameters: + buildConfig: ${{ parameters.buildConfig }} + osGroup: ${{ parameters.osGroup }} + helixType: 'build/product/' + enableMicrobuild: true + pool: ${{ parameters.pool }} + condition: ${{ parameters.condition }} + + ${{ if eq(parameters.useCheckoutBundle, true) }}: + dependsOn: checkout + + # Compute job name from template parameters + name: ${{ format('mono_{0}_offsets', parameters.osGroup) }} + displayName: ${{ format('Mono {0} AOT offsets', parameters.osGroup) }} + + # Run all steps in the container. + # Note that the containers are defined in platform-matrix.yml + container: ${{ parameters.container }} + + timeoutInMinutes: ${{ parameters.timeoutInMinutes }} + + gatherAssetManifests: true + variables: + - name: osGroup + value: ${{ parameters.osGroup }} + - name: officialBuildIdArg + value: '' + - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}: + - name: officialBuildIdArg + value: '/p:officialBuildId=$(Build.BuildNumber)' + - name: osOverride + value: -os Linux + - name: archType + value: x64 + - ${{ parameters.variables }} + + steps: + + # Install native dependencies + # Linux builds use docker images with dependencies preinstalled, + # and FreeBSD builds use a build agent with dependencies + # preinstalled, so we only need this step for OSX and Windows. + - ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS') }}: + - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup) ${{ parameters.archType }} azDO + displayName: Install native dependencies + - ${{ if eq(parameters.osGroup, 'windows') }}: + # Necessary to install python + - script: $(Build.SourcesDirectory)\eng\common\init-tools-native.cmd -InstallDirectory $(Build.SourcesDirectory)\native-tools -Force + displayName: Install native dependencies + + # Build + - ${{ if ne(parameters.osGroup, 'windows') }}: + - script: ./build$(scriptExt) -subset mono.aotcross -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) /p:MonoGenerateOffsetsOnly=true + displayName: Generate AOT offsets + - ${{ if eq(parameters.osGroup, 'windows') }}: + - script: build$(scriptExt) -subset mono.aotcross -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) /p:MonoGenerateOffsetsOnly=true + displayName: Generate AOT offsets + + # Upload offset files + - task: CopyFiles@2 + displayName: Collect offset files + inputs: + sourceFolder: '$(Build.SourcesDirectory)/artifacts/obj/mono/' + contents: '**/offsets-*.h' + targetFolder: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles/' + + - task: PublishPipelineArtifact@1 + displayName: Upload offset files + inputs: + targetPath: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles' + artifactName: 'Mono_Offsets_$(osGroup)' + + # Publish Logs + - task: PublishPipelineArtifact@1 + displayName: Publish Logs + inputs: + targetPath: $(Build.SourcesDirectory)/artifacts/log + artifactName: 'BuildLogs_Mono_Offsets_$(osGroup)' + continueOnError: true + condition: always() diff --git a/eng/pipelines/runtime-official.yml b/eng/pipelines/runtime-official.yml index 0c07ccf7a2f0bd..1b08cf4c002730 100644 --- a/eng/pipelines/runtime-official.yml +++ b/eng/pipelines/runtime-official.yml @@ -122,6 +122,37 @@ stages: extraStepsParameters: name: MonoRuntimePacks + # Build Mono AOT offset headers once, for consumption elsewhere + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + buildConfig: release + platforms: + - Android_x64 + + # + # Build Mono release Android AOT cross-compiler + # + - template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/common/global-build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - OSX_x64 + - Linux_x64 + jobParameters: + buildArgs: -s mono+libs+host+packs -c $(_BuildConfig) + /p:BuildMonoCrossAOT=true /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true + nameSuffix: AndroidAOT_Mono + runtimeVariant: crossandroid + dependsOn: mono_android_offsets + monoCrossAOTTargetOS: Android + isOfficialBuild: ${{ variables.isOfficialBuild }} + extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml + extraStepsParameters: + name: MonoRuntimePacks # # Build Mono LLVM runtime packs # diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml index 8f86bb560ade0a..31f3d18157e5be 100644 --- a/eng/pipelines/runtime.yml +++ b/eng/pipelines/runtime.yml @@ -183,6 +183,22 @@ jobs: eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true), eq(variables['isFullMatrix'], true)) +# Build Mono AOT offset headers once, for consumption elsewhere +# Only when mono changed +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/generate-offsets.yml + buildConfig: release + platforms: + - Android_x64 + jobParameters: + condition: >- + or( + eq(dependencies.checkout.outputs['SetPathVars_mono.containsChange'], true), + eq(dependencies.checkout.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isFullMatrix'], true)) + # Build the whole product using Mono runtime # Only when libraries, mono or installer are changed # @@ -459,6 +475,34 @@ jobs: eq(dependencies.checkout.outputs['SetPathVars_mono.containsChange'], true), eq(variables['isFullMatrix'], true)) +# +# Build Mono release Android AOT cross-compiler +# Only when mono changed +# +- template: /eng/pipelines/common/platform-matrix.yml + parameters: + jobTemplate: /eng/pipelines/mono/templates/build-job.yml + runtimeFlavor: mono + buildConfig: release + platforms: + - OSX_x64 + - Linux_x64 + # - Linux_arm64 + # - Linux_musl_arm64 + # - windows_x64 + # - windows_x86 + # - windows_arm + # - windows_arm64 + jobParameters: + runtimeVariant: crossandroid + dependsOn: mono_android_offsets + monoCrossAOTTargetOS: Android + condition: >- + or( + eq(dependencies.checkout.outputs['SetPathVars_mono.containsChange'], true), + eq(dependencies.checkout.outputs['SetPathVars_installer.containsChange'], true), + eq(variables['isFullMatrix'], true)) + # # Build Mono release # Only when libraries or mono changed diff --git a/eng/testing/tests.mobile.targets b/eng/testing/tests.mobile.targets index 57f83ce970377d..4d85fef2068050 100644 --- a/eng/testing/tests.mobile.targets +++ b/eng/testing/tests.mobile.targets @@ -102,14 +102,14 @@ + LLVMPath="$(MicrosoftNetCoreAppRuntimePackNativeDir)cross\$(PackageRID)"> diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.sfxproj b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.sfxproj new file mode 100644 index 00000000000000..a344c212d2f845 --- /dev/null +++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.MonoCrossAOT.sfxproj @@ -0,0 +1,25 @@ + + + + + true + RuntimePack + Microsoft.NETCore.App.MonoCrossAOT + Microsoft.NETCore.App.Runtime.AOT.$(RuntimeIdentifier).Cross.$(TargetCrossRid) + dotnet-monocrossaot + monocrossaot + linux-x64;osx-x64 + false + false + tools/ + true + + + + + + + + + + diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Runtime.sfxproj b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Runtime.sfxproj index 5f189fdf23c3d2..da316816cddb1d 100644 --- a/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Runtime.sfxproj +++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Runtime.sfxproj @@ -77,7 +77,7 @@ - runtimes/$(RuntimeIdentifier)/native/cross + runtimes/$(RuntimeIdentifier)/native/cross/%(RecursiveDir) + + + android-x64;android-arm64;android-x86;android-arm + + + + + + + + + + + + + + + diff --git a/src/libraries/externals.csproj b/src/libraries/externals.csproj index 1fece622cdb550..daf84fb3ae2d39 100644 --- a/src/libraries/externals.csproj +++ b/src/libraries/externals.csproj @@ -85,7 +85,7 @@ + DestinationSubDirectory="cross/%(RecursiveDir)" /> diff --git a/src/mono/CMakeLists.txt b/src/mono/CMakeLists.txt index 2498840b8b69e7..48efffb1db2589 100644 --- a/src/mono/CMakeLists.txt +++ b/src/mono/CMakeLists.txt @@ -151,6 +151,18 @@ if(NOT AOT_TARGET_TRIPLE STREQUAL "") elseif(AOT_TARGET_TRIPLE STREQUAL "wasm32-unknown-none") set(TARGET_SYSTEM_NAME "Emscripten") set(TARGET_ARCH "wasm") + elseif(AOT_TARGET_TRIPLE STREQUAL "x86_64-none-linux-android") + set(TARGET_SYSTEM_NAME "Android") + set(TARGET_ARCH "x86_64") + elseif(AOT_TARGET_TRIPLE STREQUAL "i686-none-linux-android") + set(TARGET_SYSTEM_NAME "Android") + set(TARGET_ARCH "x86") + elseif(AOT_TARGET_TRIPLE STREQUAL "aarch64-v8a-linux-android") + set(TARGET_SYSTEM_NAME "Android") + set(TARGET_ARCH "arm64") + elseif(AOT_TARGET_TRIPLE STREQUAL "armv7-none-linux-androideabi") + set(TARGET_SYSTEM_NAME "Android") + set(TARGET_ARCH "arm") elseif(AOT_TARGET_TRIPLE STREQUAL "aarch64-linux-gnu") set(TARGET_SYSTEM_NAME "Linux") set(TARGET_ARCH "arm64") @@ -219,6 +231,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") set(HAVE_SYS_RANDOM_H 1) elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") set(HOST_WIN32 1) + set(EXE_SUFFIX ".exe") set(DISABLE_CRASH_REPORTING 1) set(DISABLE_PORTABILITY 1) set(HOST_NO_SYMLINKS 1) @@ -466,7 +479,7 @@ if(LLVM_PREFIX) set(llvm_libs ${llvm_core_libs} ${llvm_extra}) else() - set(LLVM_CONFIG ${LLVM_PREFIX}/bin/llvm-config) + set(LLVM_CONFIG ${LLVM_PREFIX}/bin/llvm-config${EXE_SUFFIX}) if (NOT EXISTS ${LLVM_CONFIG}) message(FATAL_ERROR "LLVM executable '${LLVM_CONFIG}' not found.") endif() diff --git a/src/mono/llvm/llvm-init.proj b/src/mono/llvm/llvm-init.proj index 3012500d0ca7ef..67af4a2e1947b6 100644 --- a/src/mono/llvm/llvm-init.proj +++ b/src/mono/llvm/llvm-init.proj @@ -22,8 +22,8 @@ - - + + diff --git a/src/mono/mono.proj b/src/mono/mono.proj index c460c4515dafc2..608070fa3f42b7 100644 --- a/src/mono/mono.proj +++ b/src/mono/mono.proj @@ -33,9 +33,11 @@ true true true + true true true true + true $([MSBuild]::NormalizePath('$(MonoObjDir)', 'cross', 'config.h')) true true @@ -63,7 +65,7 @@ - + @@ -334,8 +336,8 @@ - - + + @@ -378,8 +380,20 @@ $(EMSDK_PATH)/upstream/lib/libclang.so + + + true + $(ANDROID_NDK_ROOT)/sysroot + aarch64-v8a-linux-android + armv7-none-linux-androideabi + i686-none-linux-android + x86_64-none-linux-android + $(MonoObjDir)cross/offsets-$(Platform)-android.h + + - $(XcodeDir)/Toolchains/XcodeDefault.xctoolchain/usr/lib/libclang.dylib + $(XcodeDir)/Toolchains/XcodeDefault.xctoolchain/usr/lib/libclang.dylib + $(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/linux-x86_64/lib64/libclang.so.9svn $(MonoCrossDir) @@ -427,18 +441,21 @@ <_MonoAotCMakeBuildCommand>cmake --build . --target install --config $(Configuration) <_MonoAotCMakeBuildCommand Condition="'$(MonoVerboseBuild)' == 'true'">$(_MonoAotCMakeBuildCommand) --verbose <_MonoAotCMakeBuildCommand Condition="'$(_MonoUseNinja)' != 'true'">$(_MonoAotCMakeBuildCommand) --parallel $([System.Environment]::ProcessorCount) + <_MonoAotPrebuiltOffsetsFile>$(ArtifactsObjDir)\mono\offsetfiles\$(PlatformConfigPathPart)\cross\$([System.IO.Path]::GetFileName('$(MonoAotOffsetsFile)')) + + - + - + $(RuntimeBinDir)$(MonoStaticFileName) <_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath)"> - $(RuntimeBinDir)cross\mono-aot-cross + $(RuntimeBinDir)cross\$(PackageRID)\mono-aot-cross <_MonoRuntimeArtifacts Condition="'$(MonoBundleLLVMOptimizer)' == 'true'" Include="$(MonoLLVMDir)\bin\llc"> $(RuntimeBinDir)\llc @@ -491,10 +508,10 @@ $(RuntimeBinDir)\opt <_MonoRuntimeArtifacts Condition="'$(MonoAOTBundleLLVMOptimizer)' == 'true'" Include="$(MonoAOTLLVMDir)\bin\llc"> - $(RuntimeBinDir)cross\llc + $(RuntimeBinDir)cross\$(PackageRID)\llc <_MonoRuntimeArtifacts Condition="'$(MonoAOTBundleLLVMOptimizer)' == 'true'" Include="$(MonoAOTLLVMDir)\bin\opt"> - $(RuntimeBinDir)cross\opt + $(RuntimeBinDir)cross\$(PackageRID)\opt <_MonoIncludeArtifacts Include="$(MonoObjDir)out\include\**" /> <_MonoRuntimeArtifacts Condition="'$(_MonoIncludeInterpStaticFiles)' == 'true'" Include="$(MonoObjDir)out\lib\libmono-ee-interp.a"> @@ -513,14 +530,15 @@ + Condition="'$(MonoGenerateOffsetsOnly)' != 'true' and ('$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true' or '$(TargetsAndroid)' == 'true' or '$(TargetsBrowser)' == 'true')"/> - + diff --git a/src/mono/monoaotcross.proj b/src/mono/monoaotcross.proj new file mode 100644 index 00000000000000..d14d6632bd2e35 --- /dev/null +++ b/src/mono/monoaotcross.proj @@ -0,0 +1,46 @@ + + + $(NetCoreAppToolCurrent) + + + + + Android-x64;Android-arm64;Android-x86;Android-arm + + + + + + + + + + + + + $(MonoAotTargetRid.Split('-')[0]) + $(MonoAotTargetRid.Split('-')[1]) + + + + + + + + <_MonoAOTCrossFiles Include="$(ArtifactsBinDir)mono\$(MonoAotTargetOS).$(MonoAotTargetArchitecture).$(Configuration)\cross\$(MonoAotTargetRid.ToLower())\**" /> + + + + + + + + + diff --git a/src/mono/netcore/sample/Android/AndroidSampleApp.csproj b/src/mono/netcore/sample/Android/AndroidSampleApp.csproj index 20806f771f6b23..d096cac023ebac 100644 --- a/src/mono/netcore/sample/Android/AndroidSampleApp.csproj +++ b/src/mono/netcore/sample/Android/AndroidSampleApp.csproj @@ -20,7 +20,9 @@ + + @@ -30,6 +32,13 @@ $(PublishDir)apk\ + + + @(MonoAOTCompilerDefaultAotArguments, ';') + @(MonoAOTCompilerDefaultProcessArguments, ';') + + + @@ -47,6 +56,20 @@ SourceFiles="$(ANDROID_OPENSSL_AAR)\prefab\modules\ssl\libs\android.$(AndroidAbi)\libssl.so" DestinationFolder="$(PublishDir)" SkipUnchangedFiles="true"/> + + + + + + + + LLVMPath="$(MicrosoftNetCoreAppRuntimePackDir)native\cross\$(PackageRID)"> diff --git a/src/mono/wasm/build/WasmApp.targets b/src/mono/wasm/build/WasmApp.targets index 5d532cad3740b3..35e84f8ed378a0 100644 --- a/src/mono/wasm/build/WasmApp.targets +++ b/src/mono/wasm/build/WasmApp.targets @@ -45,7 +45,7 @@ - \ No newline at end of file + diff --git a/src/tests/FunctionalTests/iOS/Simulator/AOT/iOS.Simulator.Aot.Test.csproj b/src/tests/FunctionalTests/iOS/Simulator/AOT/iOS.Simulator.Aot.Test.csproj index 9cc1038feec304..8082073239fc50 100644 --- a/src/tests/FunctionalTests/iOS/Simulator/AOT/iOS.Simulator.Aot.Test.csproj +++ b/src/tests/FunctionalTests/iOS/Simulator/AOT/iOS.Simulator.Aot.Test.csproj @@ -28,14 +28,14 @@ + LLVMPath="$(MicrosoftNetCoreAppRuntimePackDir)native\cross\$(PackageRID)"> diff --git a/src/tests/run.proj b/src/tests/run.proj index 93f290e2e48f30..73450c6344bbe8 100644 --- a/src/tests/run.proj +++ b/src/tests/run.proj @@ -379,8 +379,8 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\",""). $(MonoBinDir) - $(MonoBinDir)/cross/mono-aot-cross - $(MonoBinDir)/cross + $(MonoBinDir)/cross/$(PackageRID)/mono-aot-cross + $(MonoBinDir)/cross/$(PackageRID)