Skip to content

Commit bc7621c

Browse files
authored
Improve default cross compiler state (#88917)
* Move AOT variable setting to BuildMonoCross target * Ensure a value for AotHostOS/AotHostArchitecture if not specified * improve wasm windows special-case
1 parent e40303b commit bc7621c

File tree

1 file changed

+30
-17
lines changed

1 file changed

+30
-17
lines changed

src/mono/mono.proj

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -553,12 +553,6 @@
553553
<_MonoCXXFLAGS Include="-Wl,--build-id=sha1" />
554554
<_MonoCXXFLAGS Condition="'$(Platform)' == 'arm'" Include="-march=armv7-a" />
555555
</ItemGroup>
556-
<ItemGroup Condition="'$(AotHostOS)' == 'linux'">
557-
<_MonoAOTCFLAGS Include="-Wl,--build-id=sha1" />
558-
<_MonoAOTCFLAGS Condition="'$(AotHostArchitecture)' == 'arm'" Include="-march=armv7-a" />
559-
<_MonoAOTCXXFLAGS Include="-Wl,--build-id=sha1" />
560-
<_MonoAOTCXXFLAGS Condition="'$(AotHostArchitecture)' == 'arm'" Include="-march=armv7-a" />
561-
</ItemGroup>
562556

563557
<!-- Devloop features -->
564558
<ItemGroup Condition="'$(MonoMsCorDbi)' == 'true'">
@@ -655,6 +649,12 @@
655649
<!-- Build AOT cross compiler (if available) -->
656650
<Target Name="BuildMonoCross" Condition="'$(BuildMonoAOTCrossCompiler)' == 'true'" DependsOnTargets="BuildMonoRuntime">
657651

652+
<!-- If you don't specify the AOT host, assume it's the build machine -->
653+
<PropertyGroup>
654+
<AotHostArchitecture Condition="'$(AotHostArchitecture)' == ''">$(BuildArchitecture)</AotHostArchitecture>
655+
<AotHostOS Condition="'$(AotHostOS)' == ''">$(HostOS)</AotHostOS>
656+
</PropertyGroup>
657+
658658
<!-- iOS/tvOS specific options -->
659659
<PropertyGroup Condition="'$(TargetstvOS)' == 'true' or '$(TargetsiOS)' == 'true'">
660660
<!-- FIXME: Disable for simulator -->
@@ -687,7 +687,7 @@
687687
</PropertyGroup>
688688

689689
<!-- Linux specific options -->
690-
<ItemGroup Condition="'$(AotHostOS)' == 'linux' or $([MSBuild]::IsOSPlatform('Linux'))">
690+
<ItemGroup Condition="'$(AotHostOS)' == 'linux'">
691691
<_LibClang Include="$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(MonoToolchainPrebuiltOS)/lib64/libclang.so.*"/>
692692
</ItemGroup>
693693
<PropertyGroup Condition="'$(TargetsLinux)' == 'true' and '$(Platform)' == 'arm64'">
@@ -700,7 +700,7 @@
700700

701701
<PropertyGroup>
702702
<_MonoLLVMTargetArchitecture Condition="'$(MonoUseLLVMPackage)' == 'true'">$(BuildArchitecture)</_MonoLLVMTargetArchitecture>
703-
<_MonoLLVMTargetArchitecture Condition="'$(AotHostArchitecture)' != '' and '$(MonoUseLLVMPackage)' == 'true'">$(AotHostArchitecture)</_MonoLLVMTargetArchitecture>
703+
<_MonoLLVMTargetArchitecture Condition="'$(MonoUseLLVMPackage)' == 'true'">$(AotHostArchitecture)</_MonoLLVMTargetArchitecture>
704704
</PropertyGroup>
705705

706706
<ItemGroup Condition="'$(HostOS)' == 'Linux' and (('$(MonoAOTEnableLLVM)' == 'true' and '$(MonoUseLibCxx)' == 'true') or '$(TargetArchitecture)' == 'wasm')">
@@ -709,13 +709,19 @@
709709
<_MonoAOTCXXFLAGS Include="-stdlib=libc++" />
710710
<MonoAOTCMakeArgs Include="-DMONO_SET_RPATH_ORIGIN=true" />
711711
</ItemGroup>
712+
<ItemGroup Condition="'$(AotHostOS)' == 'linux'">
713+
<_MonoAOTCFLAGS Include="-Wl,--build-id=sha1" />
714+
<_MonoAOTCFLAGS Condition="'$(AotHostArchitecture)' == 'arm'" Include="-march=armv7-a" />
715+
<_MonoAOTCXXFLAGS Include="-Wl,--build-id=sha1" />
716+
<_MonoAOTCXXFLAGS Condition="'$(AotHostArchitecture)' == 'arm'" Include="-march=armv7-a" />
717+
</ItemGroup>
712718

713719
<!-- macOS host specific options -->
714-
<ItemGroup Condition="'$(AotHostOS)' == 'osx' or $([MSBuild]::IsOSPlatform('OSX'))">
715-
<MonoAOTCMakeArgs Condition="'$(AotHostArchitecture)' == 'x64' or ('$(AotHostArchitecture)' == '' and '$(BuildArchitecture)' == 'x64')" Include="-DCMAKE_OSX_ARCHITECTURES=x86_64" />
716-
<MonoAOTCMakeArgs Condition="'$(AotHostArchitecture)' == 'x86' or ('$(AotHostArchitecture)' == '' and '$(BuildArchitecture)' == 'x86')" Include="-DCMAKE_OSX_ARCHITECTURES=i386" />
717-
<MonoAOTCMakeArgs Condition="'$(AotHostArchitecture)' == 'arm64' or ('$(AotHostArchitecture)' == '' and '$(BuildArchitecture)' == 'arm64')" Include="-DCMAKE_OSX_ARCHITECTURES=arm64" />
718-
<MonoAOTCMakeArgs Condition="'$(AotHostArchitecture)' == 'arm' or ('$(AotHostArchitecture)' == '' and '$(BuildArchitecture)' == 'arm')" Include="&quot;-DCMAKE_OSX_ARCHITECTURES=armv7%3Barmv7s&quot;" />
720+
<ItemGroup Condition="'$(AotHostOS)' == 'osx'">
721+
<MonoAOTCMakeArgs Condition="'$(AotHostArchitecture)' == 'x64'" Include="-DCMAKE_OSX_ARCHITECTURES=x86_64" />
722+
<MonoAOTCMakeArgs Condition="'$(AotHostArchitecture)' == 'x86'" Include="-DCMAKE_OSX_ARCHITECTURES=i386" />
723+
<MonoAOTCMakeArgs Condition="'$(AotHostArchitecture)' == 'arm64'" Include="-DCMAKE_OSX_ARCHITECTURES=arm64" />
724+
<MonoAOTCMakeArgs Condition="'$(AotHostArchitecture)' == 'arm'" Include="&quot;-DCMAKE_OSX_ARCHITECTURES=armv7%3Barmv7s&quot;" />
719725
<MonoAOTCMakeArgs Include="-DCMAKE_OSX_DEPLOYMENT_TARGET=$(macOSVersionMin)" />
720726
<MonoAOTCMakeArgs Include="-DENABLE_ICALL_EXPORT=1"/>
721727
<_MonoAOTCFLAGS Condition="'$(AotHostArchitecture)' == 'arm64'" Include="-arch arm64" />
@@ -737,7 +743,7 @@
737743
</PropertyGroup>
738744

739745
<!-- Windows specific options -->
740-
<ItemGroup Condition="'$(AotHostOS)' == 'windows' or $([MSBuild]::IsOSPlatform('Windows'))">
746+
<ItemGroup Condition="'$(AotHostOS)' == 'windows'">
741747
<_MonoAOTCPPFLAGS Include="-DHOST_WIN32" />
742748
<_MonoAOTCPPFLAGS Include="-D__WIN32__" />
743749
<_MonoAOTCPPFLAGS Include="-DWIN32" />
@@ -805,7 +811,7 @@
805811
</ItemGroup>
806812

807813
<!-- AOT compiler cross-build options -->
808-
<ItemGroup Condition="'$(AotHostArchitecture)' != '' and '$(MonoCrossDir)' != ''">
814+
<ItemGroup Condition="'$(MonoCrossDir)' != ''">
809815
<MonoAOTCMakeArgs Include="-DCMAKE_TOOLCHAIN_FILE=$(CrossToolchainFile)" />
810816
<_MonoAotBuildEnv Include="TARGET_BUILD_ARCH=$(AotHostArchitecture)" />
811817
</ItemGroup>
@@ -849,7 +855,7 @@
849855
</ItemGroup>
850856

851857
<PropertyGroup>
852-
<_MonoSkipInitCompiler Condition="'$(AotHostArchitecture)' != '' and '$(AotHostArchitecture)' != '$(BuildArchitecture)'">false</_MonoSkipInitCompiler>
858+
<_MonoSkipInitCompiler Condition="'$(AotHostArchitecture)' != '$(BuildArchitecture)'">false</_MonoSkipInitCompiler>
853859
<_MonoSkipInitCompiler Condition="'$(CrossBuild)' == 'true'">false</_MonoSkipInitCompiler>
854860
<_MonoAotCrossOffsetsCommand Condition="'$(MonoUseCrossTool)' == 'true'">$(PythonCmd) $(MonoProjectRoot)mono/tools/offsets-tool/offsets-tool.py @(MonoAotCrossOffsetsToolParams, ' ')</_MonoAotCrossOffsetsCommand>
855861
<_MonoAotCMakeConfigureCommand>cmake @(MonoAOTCMakeArgs, ' ') $(MonoCMakeExtraArgs) &quot;$(MonoProjectRoot.TrimEnd('\/'))&quot;</_MonoAotCMakeConfigureCommand>
@@ -910,6 +916,13 @@
910916

911917
<!-- General targets -->
912918
<Target Name="BuildMono" AfterTargets="Build" DependsOnTargets="$(MonoDependsOnTargets)">
919+
920+
<!-- If you don't specify the AOT host, assume it's the build machine -->
921+
<PropertyGroup>
922+
<AotHostArchitecture Condition="'$(AotHostArchitecture)' == ''">$(BuildArchitecture)</AotHostArchitecture>
923+
<AotHostOS Condition="'$(AotHostOS)' == ''">$(HostOS)</AotHostOS>
924+
</PropertyGroup>
925+
913926
<PropertyGroup Condition="'$(BuildMonoAOTCrossCompilerOnly)' != 'true'">
914927
<_MonoRuntimeFilePath>$(MonoObjDir)out\lib\$(MonoFileName)</_MonoRuntimeFilePath>
915928
<_MonoRuntimeStaticFilePath Condition="'$(TargetsMacCatalyst)' == 'true' or '$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true' or '$(TargetsAndroid)' == 'true' or '$(TargetsLinuxBionic)' == 'true'">$(MonoObjDir)out\lib\$(MonoStaticLibFileName)</_MonoRuntimeStaticFilePath>
@@ -921,7 +934,7 @@
921934
</PropertyGroup>
922935
<PropertyGroup>
923936
<_MonoLLVMTargetArchitecture>$(BuildArchitecture)</_MonoLLVMTargetArchitecture>
924-
<_MonoLLVMTargetArchitecture Condition="'$(TargetArchitecture)' != 'wasm' and '$(AotHostArchitecture)' != ''">$(AotHostArchitecture)</_MonoLLVMTargetArchitecture>
937+
<_MonoLLVMTargetArchitecture Condition="'$(TargetArchitecture)' != 'wasm'">$(AotHostArchitecture)</_MonoLLVMTargetArchitecture>
925938
</PropertyGroup>
926939

927940
<!-- Copy Mono runtime files to artifacts directory -->

0 commit comments

Comments
 (0)