Skip to content

Commit b21cbf9

Browse files
authored
[Xamarin.Android.Build.Tasks] Use LLVM-based toolchain (#6683)
Context: fd5f31c Context: #6685 Context: https://github.com/xamarin/xamarin-android-binutils Context: dotnet/android-native-tools@6d4e3bb Context: #6840 Changes: dotnet/android-native-tools@2.35.2-XA.1...L_13.0.1-4.0.1 So far, Xamarin.Android has been using a GNU Binutils toolchain to compile and link native assembler code we generate during application build. Unfortunately, Binutils have a problem with certain filename encodings on Windows -- which required that we downgrade to Binutils 2.35.2 in commit fd5f31c -- so we decided to switch to an LLVM-based toolchain which handles such file names without issues. However, as mono/mono & dotnet/runtime AOT expects a GNU Binutils-compatible toolchain, it was necessary to implement a GNU Assembler (`gas`) wrapper around the LLVM `llvm-mc` assembler, so that command lines used by the Mono AOT compiler keep working fine. Since LLVM utilities are multi-target by default and, unlike GNU Binutils, LLVM doesn't need separate builds of every utility, we now provide GNU Binutils architecture-prefixed wrapper scripts which invoke their LLVM counterparts with appropriate parameters. The following LLVM utilities are included: - `llvm-mc` (assembler) - `lld` (linker) - `llvm-strip` Migrating to LLVM from GNU Binutils increases our install size: * macOS `.pkg` size increases by ~29MB, installation size increases by ~75MB. * Windows `.vsix` size increases by ~14MB, installation size increases by ~40MB. Aside: We've updated our unit tests to set `$(_DisableParallelAot)`=True, because when AOT is done in parallel, it's very difficult to make sense of the AOT compiler messages, as messages from multiple processes are all intermixed. We're disabling parallel AOT to preserve our sanity when things break. TODO: the Resulting `.apk` sizes also increase unexpectedly, with `Xamarin.Forms_Performance_Integration-Signed-Release-Profiled-Aot.apkdesc` showing a 1.7MB increase in `.apk` size. We believe that this is because of more verbose debug symbols. #6840 will track this.
1 parent dccda98 commit b21cbf9

File tree

19 files changed

+412
-236
lines changed

19 files changed

+412
-236
lines changed

Documentation/guides/building-apps/build-properties.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ the Android [binutils][binutils] such as `ld`, the native linker,
132132
and `as`, the native assembler. These tools are included in the
133133
Xamarin.Android installation.
134134

135-
The default value is `$(MonoAndroidBinDirectory)\binutils\`.
135+
The default value is `$(MonoAndroidBinDirectory)\binutils\bin\`.
136136

137137
Added in Xamarin.Android 10.0.
138138

build-tools/create-packs/SignList.xml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,12 @@
1414
<ThirdParty Include="protobuf-net.dll" />
1515
<ThirdParty Include="SgmlReaderDll.dll" />
1616
<ThirdParty Include="aapt2.exe" />
17-
<ThirdParty Include="aarch64-linux-android-as.exe" />
17+
<ThirdParty Include="llvm-mc.exe" />
18+
<ThirdParty Include="llvm-strip.exe" />
1819
<ThirdParty Include="aarch64-linux-android-ld.exe" />
19-
<ThirdParty Include="aarch64-linux-android-strip.exe" />
20-
<ThirdParty Include="arm-linux-androideabi-as.exe" />
2120
<ThirdParty Include="arm-linux-androideabi-ld.exe" />
22-
<ThirdParty Include="arm-linux-androideabi-strip.exe" />
23-
<ThirdParty Include="i686-linux-android-as.exe" />
2421
<ThirdParty Include="i686-linux-android-ld.exe" />
25-
<ThirdParty Include="i686-linux-android-strip.exe" />
26-
<ThirdParty Include="x86_64-linux-android-as.exe" />
2722
<ThirdParty Include="x86_64-linux-android-ld.exe" />
28-
<ThirdParty Include="x86_64-linux-android-strip.exe" />
2923
</ItemGroup>
3024

3125
<ItemGroup>

build-tools/installers/create-installers.targets

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -322,18 +322,22 @@
322322
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\lib64\libZipSharpNative.pdb" />
323323
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\proguard\bin\proguard.bat" />
324324
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\aapt2.exe" />
325-
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\aarch64-linux-android-as.exe" />
326-
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\aarch64-linux-android-ld.exe" />
327-
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\aarch64-linux-android-strip.exe" />
328-
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\arm-linux-androideabi-as.exe" />
329-
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\arm-linux-androideabi-ld.exe" />
330-
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\arm-linux-androideabi-strip.exe" />
331-
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\i686-linux-android-as.exe" />
332-
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\i686-linux-android-ld.exe" />
333-
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\i686-linux-android-strip.exe" />
334-
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\x86_64-linux-android-as.exe" />
335-
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\x86_64-linux-android-ld.exe" />
336-
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\x86_64-linux-android-strip.exe" />
325+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\as.exe" />
326+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\ld.exe" />
327+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\llvm-mc.exe" />
328+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\llvm-strip.exe" />
329+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\aarch64-linux-android-as.cmd" />
330+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\aarch64-linux-android-ld.cmd" />
331+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\aarch64-linux-android-strip.cmd" />
332+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\arm-linux-androideabi-as.cmd" />
333+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\arm-linux-androideabi-ld.cmd" />
334+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\arm-linux-androideabi-strip.cmd" />
335+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\i686-linux-android-as.cmd" />
336+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\i686-linux-android-ld.cmd" />
337+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\i686-linux-android-strip.cmd" />
338+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\x86_64-linux-android-as.cmd" />
339+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\x86_64-linux-android-ld.cmd" />
340+
<_MSBuildFilesWin Include="$(MSBuildSrcDir)\binutils\bin\x86_64-linux-android-strip.cmd" />
337341
<_MSBuildLibHostFilesWin Include="$(MSBuildSrcDir)\lib\host-mxe-Win64\libmono-android.debug.dll" Condition=" '$(HostOS)' != 'Windows' " />
338342
<_MSBuildLibHostFilesWin Include="$(MSBuildSrcDir)\lib\host-mxe-Win64\libmono-android.release.dll" Condition=" '$(HostOS)' != 'Windows' " />
339343
<_MSBuildLibHostFilesWin Include="$(MSBuildSrcDir)\lib\host-mxe-Win64\libMonoPosixHelper.dll" />
@@ -352,19 +356,8 @@
352356
<Permission>755</Permission>
353357
</_MSBuildFilesUnixSignAndHarden>
354358
</ItemDefinitionGroup>
359+
<Import Project="unix-binutils.projitems" />
355360
<ItemGroup>
356-
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\aarch64-linux-android-as" />
357-
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\aarch64-linux-android-ld" />
358-
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\aarch64-linux-android-strip" />
359-
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\arm-linux-androideabi-as" />
360-
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\arm-linux-androideabi-ld" />
361-
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\arm-linux-androideabi-strip" />
362-
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\i686-linux-android-as" />
363-
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\i686-linux-android-ld" />
364-
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\i686-linux-android-strip" />
365-
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\x86_64-linux-android-as" />
366-
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\x86_64-linux-android-ld" />
367-
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\x86_64-linux-android-strip" />
368361
<_MSBuildFilesUnix Include="$(MSBuildSrcDir)\$(HostOS)\illinkanalyzer" Permission="755" />
369362
<_MSBuildFilesUnix Include="$(MSBuildSrcDir)\$(HostOS)\jit-times" Permission="755" />
370363
<_MSBuildFilesUnix Include="$(MSBuildSrcDir)\$(HostOS)\aprofutil" ExcludeFromAndroidNETSdk="true" />
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<PropertyGroup>
4+
<_LlvmLibExtension Condition=" '$(HostOS)' == 'Linux' ">so.13</_LlvmLibExtension>
5+
<_LlvmLibExtension Condition=" '$(HostOS)' == 'Darwin' ">dylib</_LlvmLibExtension>
6+
</PropertyGroup>
7+
8+
<ItemGroup>
9+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\aarch64-linux-android-as" />
10+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\aarch64-linux-android-ld" />
11+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\aarch64-linux-android-strip" />
12+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\arm-linux-androideabi-as" />
13+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\arm-linux-androideabi-ld" />
14+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\arm-linux-androideabi-strip" />
15+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\as" />
16+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\i686-linux-android-as" />
17+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\i686-linux-android-ld" />
18+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\i686-linux-android-strip" />
19+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\ld" />
20+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\llvm-mc" />
21+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\llvm-strip" />
22+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\x86_64-linux-android-as" />
23+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\x86_64-linux-android-ld" />
24+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\bin\x86_64-linux-android-strip" />
25+
26+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\liblldCOFF.$(_LlvmLibExtension)" />
27+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\liblldCommon.$(_LlvmLibExtension)" />
28+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\liblldCore.$(_LlvmLibExtension)" />
29+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\liblldDriver.$(_LlvmLibExtension)" />
30+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\liblldELF.$(_LlvmLibExtension)" />
31+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\liblldMachO.$(_LlvmLibExtension)" />
32+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\liblldMachO2.$(_LlvmLibExtension)" />
33+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\liblldMinGW.$(_LlvmLibExtension)" />
34+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\liblldReaderWriter.$(_LlvmLibExtension)" />
35+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\liblldWasm.$(_LlvmLibExtension)" />
36+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\liblldYAML.$(_LlvmLibExtension)" />
37+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMAArch64AsmParser.$(_LlvmLibExtension)" />
38+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMAArch64CodeGen.$(_LlvmLibExtension)" />
39+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMAArch64Desc.$(_LlvmLibExtension)" />
40+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMAArch64Disassembler.$(_LlvmLibExtension)" />
41+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMAArch64Info.$(_LlvmLibExtension)" />
42+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMAArch64Utils.$(_LlvmLibExtension)" />
43+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMAggressiveInstCombine.$(_LlvmLibExtension)" />
44+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMAnalysis.$(_LlvmLibExtension)" />
45+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMARMAsmParser.$(_LlvmLibExtension)" />
46+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMARMCodeGen.$(_LlvmLibExtension)" />
47+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMARMDesc.$(_LlvmLibExtension)" />
48+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMARMDisassembler.$(_LlvmLibExtension)" />
49+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMARMInfo.$(_LlvmLibExtension)" />
50+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMARMUtils.$(_LlvmLibExtension)" />
51+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMAsmParser.$(_LlvmLibExtension)" />
52+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMAsmPrinter.$(_LlvmLibExtension)" />
53+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMBinaryFormat.$(_LlvmLibExtension)" />
54+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMBitReader.$(_LlvmLibExtension)" />
55+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMBitstreamReader.$(_LlvmLibExtension)" />
56+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMBitWriter.$(_LlvmLibExtension)" />
57+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMCFGuard.$(_LlvmLibExtension)" />
58+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMCodeGen.$(_LlvmLibExtension)" />
59+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMCore.$(_LlvmLibExtension)" />
60+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMCoroutines.$(_LlvmLibExtension)" />
61+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMDebugInfoCodeView.$(_LlvmLibExtension)" />
62+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMDebugInfoDWARF.$(_LlvmLibExtension)" />
63+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMDebugInfoMSF.$(_LlvmLibExtension)" />
64+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMDebugInfoPDB.$(_LlvmLibExtension)" />
65+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMDemangle.$(_LlvmLibExtension)" />
66+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMExtensions.$(_LlvmLibExtension)" />
67+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMFrontendOpenMP.$(_LlvmLibExtension)" />
68+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMGlobalISel.$(_LlvmLibExtension)" />
69+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMInstCombine.$(_LlvmLibExtension)" />
70+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMInstrumentation.$(_LlvmLibExtension)" />
71+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMipo.$(_LlvmLibExtension)" />
72+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMIRReader.$(_LlvmLibExtension)" />
73+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMLibDriver.$(_LlvmLibExtension)" />
74+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMLinker.$(_LlvmLibExtension)" />
75+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMLTO.$(_LlvmLibExtension)" />
76+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMMC.$(_LlvmLibExtension)" />
77+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMMCDisassembler.$(_LlvmLibExtension)" />
78+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMMCParser.$(_LlvmLibExtension)" />
79+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMMIRParser.$(_LlvmLibExtension)" />
80+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMObjCARCOpts.$(_LlvmLibExtension)" />
81+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMObject.$(_LlvmLibExtension)" />
82+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMOption.$(_LlvmLibExtension)" />
83+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMPasses.$(_LlvmLibExtension)" />
84+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMProfileData.$(_LlvmLibExtension)" />
85+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMRemarks.$(_LlvmLibExtension)" />
86+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMScalarOpts.$(_LlvmLibExtension)" />
87+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMSelectionDAG.$(_LlvmLibExtension)" />
88+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMSupport.$(_LlvmLibExtension)" />
89+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMTableGen.$(_LlvmLibExtension)" />
90+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMTableGenGlobalISel.$(_LlvmLibExtension)" />
91+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMTarget.$(_LlvmLibExtension)" />
92+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMTextAPI.$(_LlvmLibExtension)" />
93+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMTransformUtils.$(_LlvmLibExtension)" />
94+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMVectorize.$(_LlvmLibExtension)" />
95+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMWindowsManifest.$(_LlvmLibExtension)" />
96+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMX86AsmParser.$(_LlvmLibExtension)" />
97+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMX86CodeGen.$(_LlvmLibExtension)" />
98+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMX86Desc.$(_LlvmLibExtension)" />
99+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMX86Disassembler.$(_LlvmLibExtension)" />
100+
<_MSBuildFilesUnixSignAndHarden Include="$(MSBuildSrcDir)\$(HostOS)\binutils\lib\libLLVMX86Info.$(_LlvmLibExtension)" />
101+
</ItemGroup>
102+
</Project>

build-tools/xaprepare/xaprepare/Application/NDKTool.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ class NDKTool
66
{
77
public string Name { get; }
88
public string DestinationName { get; } = String.Empty;
9+
public bool Prefixed { get; }
910

10-
public NDKTool (string name, string? destinationName = null)
11+
public NDKTool (string name, string? destinationName = null, bool prefixed = false)
1112
{
1213
if (name.Trim ().Length == 0) {
1314
throw new ArgumentException (nameof (name), "must not be empty");
1415
}
16+
Prefixed = prefixed;
1517
Name = name;
1618
if (String.IsNullOrWhiteSpace (destinationName)) {
1719
return;

build-tools/xaprepare/xaprepare/ConfigAndData/Configurables.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace Xamarin.Android.Prepare
1515
//
1616
partial class Configurables
1717
{
18-
const string BinutilsVersion = "2.35.2-XA.1";
18+
const string BinutilsVersion = "L_13.0.1-4.0.1";
1919

2020
const string MicrosoftOpenJDK11Version = "11.0.10";
2121
const string MicrosoftOpenJDK11Release = "9.1";
@@ -53,7 +53,7 @@ public static partial class Urls
5353

5454
public static Uri MonoArchive_BaseUri = new Uri ("https://xamjenkinsartifact.azureedge.net/mono-sdks/");
5555

56-
public static Uri BinutilsArchive = new Uri ($"https://github.com/xamarin/xamarin-android-binutils/releases/download/{BinutilsVersion}/xamarin-android-binutils-{BinutilsVersion}.7z");
56+
public static Uri BinutilsArchive = new Uri ($"https://github.com/xamarin/xamarin-android-binutils/releases/download/{BinutilsVersion}/xamarin-android-toolchain-{BinutilsVersion}.7z");
5757
}
5858

5959
public static partial class Defaults
@@ -219,9 +219,16 @@ public static partial class Defaults
219219
};
220220

221221
public static readonly List <NDKTool> NDKTools = new List<NDKTool> {
222+
// Tools prefixed with architecture triple
223+
new NDKTool (name: "as", prefixed: true),
224+
new NDKTool (name: "ld", prefixed: true),
225+
new NDKTool (name: "strip", prefixed: true),
226+
227+
// Unprefixed tools
222228
new NDKTool (name: "as"),
223229
new NDKTool (name: "ld"),
224-
new NDKTool (name: "strip"),
230+
new NDKTool (name: "llvm-mc"),
231+
new NDKTool (name: "llvm-strip"),
225232
};
226233
}
227234

build-tools/xaprepare/xaprepare/Steps/Step_InstallGNUBinutils.Unix.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ namespace Xamarin.Android.Prepare
22
{
33
partial class Step_InstallGNUBinutils
44
{
5-
const string? ExecutableExtension = null;
5+
const string[]? ExecutableExtensions = null;
66
}
77
}

0 commit comments

Comments
 (0)