Skip to content

Commit bb527af

Browse files
committed
Fix hosted crossgen2 build on arm64
crossgen2 (and by extension, runtime) fails to build on an arm64 box. This is the error I see on Fedora 32 aarch64: ./build.sh ... crossgen2 -> artifacts/bin/coreclr/Linux.arm64.Debug/crossgen2/crossgen2.dll src/coreclr/src/tools/aot/crossgen2/crossgen2.csproj(87,5): error MSB3030: Could not copy the file "artifacts/bin/coreclr/Linux.arm64.Debug//x64/libjitinterface.so" because it was not found. The file is there, just not under the `x64` directory: $ find -iname libjitinterface.so ./artifacts/bin/coreclr/Linux.arm64.Debug/libjitinterface.so ./artifacts/bin/coreclr/Linux.arm64.Debug/crossgen2/libjitinterface.so ./artifacts/obj/coreclr/Linux.arm64.Debug/src/tools/aot/jitinterface/libjitinterface.so The actual bug is that crossgen2 seems to assume that if the build is for an `arm64` RID, it's a cross-build, not a hosted build. Fix that by explicitly checking `BuildArchitecture` as well. Please see dotnet/corefx#40453 and dotnet/core-setup#8468 for related fixes enabling building for arm64 on an arm64 machine. I have *not* verified this change in Visual Studio.
1 parent 7cc8737 commit bb527af

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/coreclr/src/tools/aot/crossgen2/crossgen2.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242

4343
<PropertyGroup>
4444
<CrossHostArch></CrossHostArch>
45-
<CrossHostArch Condition="'$(TargetArchitecture)' == 'arm64'">x64</CrossHostArch>
45+
<CrossHostArch Condition="'$(TargetArchitecture)' == 'arm64' and '$(BuildArchitecture)' == 'x64'">x64</CrossHostArch>
4646

4747
<TargetOSComponent>unix</TargetOSComponent>
4848
<TargetOSComponent Condition="'$(TargetOS)' == 'Windows_NT'">win</TargetOSComponent>

0 commit comments

Comments
 (0)