Skip to content

Commit ba00293

Browse files
jonpryorradical
authored andcommitted
[android-toolchains, mono-runtimes] Build armeabi, arm64-v8a, x86, x86_64 (#40)
Commit 38dbfca mentions that commercial Xamarin.Android 6.0 provides Mono for five architectures, but "[i]n the interest of expediency" only adds support to build *one* architecture: armeabi-v7a (32-bit ARM v7). It's time to fix that: add build system support for armeabi, arm64-v8a, x86, and x86_64. *However*, it takes *time* to build all those ABIs: on a 2013 6-core Mac Pro, it takes ~29 minutes to build all five of those ABIs plus the "host" ABI (for BCL assemblies), which is presumably 29 minutes that very few people want to spend, and will be even longer in a variety of build environments (virtual machines, slower hardware, etc.). Which means we don't want to require that they all be built. To better support this, add a new `$(AndroidSupportedAbis)` MSBuild property which contains a comma-separated list of ABIs to support. This allows manually overriding the ABIs on the command-line: # build everything! $ xbuild /p:AndroidSupportedAbis=armeabi,armeabi-v7a,arm64-v8a,x86,x86_64 or setting a value within `Configuration.Override.props`: <PropertyGroup> <!-- only build x86 --> <AndroidSupportedAbis>x86,x86_64</AndroidSupportedAbis> </PropertyGroup> The *default* continues to be just armeabi-v7a.
1 parent 7634c6d commit ba00293

File tree

12 files changed

+199
-22
lines changed

12 files changed

+199
-22
lines changed

Configuration.Override.props.in

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,18 @@
66
<!-- The Xamarin.Android $(TargetFrameworkVersion) value that corresponds to $(AndroidApiLevel) -->
77
<AndroidFrameworkVersion>v6.0</AndroidFrameworkVersion>
88

9+
<!--
10+
Comma-separated list of ABIs to build mono for.
11+
Supported ABIs include:
12+
- armeabi
13+
- armeabi-v7a
14+
- arm64-v8a
15+
- x86
16+
- x86_64
17+
Note: Why comma? Because ';' can't be specified on the command-line.
18+
-->
19+
<AndroidSupportedAbis>armeabi,armeabi-v7a,arm64-v8a,x86,x86_64</AndroidSupportedAbis>
20+
921
<!-- C and C++ compilers to emit host-native binaries -->
1022
<HostCc>clang</HostCc>
1123
<HostCxx>clang++</HostCxx>

Configuration.props

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,15 @@
1818
<AndroidToolchainDirectory Condition=" '$(AndroidToolchainDirectory)' == '' ">$(HOME)\android-toolchain</AndroidToolchainDirectory>
1919
<AndroidSdkDirectory>$(AndroidToolchainDirectory)\sdk</AndroidSdkDirectory>
2020
<AndroidNdkDirectory>$(AndroidToolchainDirectory)\ndk</AndroidNdkDirectory>
21+
<AndroidSupportedAbis Condition=" '$(AndroidSupportedAbis)' == '' ">armeabi-v7a</AndroidSupportedAbis>
22+
</PropertyGroup>
23+
<!--
24+
"Fixup" $(AndroidSupportedAbis) so that Condition attributes elsewhere
25+
can use `,ABI-NAME,`, to avoid substring mismatches.
26+
-->
27+
<PropertyGroup>
28+
<AndroidSupportedAbisForConditionalChecks>$(AndroidSupportedAbis)</AndroidSupportedAbisForConditionalChecks>
29+
<AndroidSupportedAbisForConditionalChecks Condition=" !$(AndroidSupportedAbisForConditionalChecks.EndsWith (',')) " >$(AndroidSupportedAbisForConditionalChecks),</AndroidSupportedAbisForConditionalChecks>
30+
<AndroidSupportedAbisForConditionalChecks Condition=" !$(AndroidSupportedAbisForConditionalChecks.StartsWith (',')) " >,$(AndroidSupportedAbisForConditionalChecks)</AndroidSupportedAbisForConditionalChecks>
2131
</PropertyGroup>
2232
</Project>

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,17 @@ Overridable MSBuild properties include:
3232
* `$(AndroidFrameworkVersion)`: The Xamarin.Android `$(TargetFrameworkVersion)`
3333
version which corresponds to `$(AndroidApiLevel)`. This is *usually* the
3434
Android version number with a leading `v`, e.g. `v4.0.3` for API-15.
35+
* `$(AndroidSupportedAbis)`: The Android ABIs to build for inclusion within
36+
apps. This is a `,`-separated list of ABIs to build. Supported values are:
37+
38+
* `armeabi`
39+
* `armeabi-v7a`
40+
* `arm64-v8a`
41+
* `x86`
42+
* `x86_64`
43+
44+
The default value is `armeabi-v7a`.
45+
3546
* `$(AndroidToolchainCacheDirectory)`: The directory to cache the downloaded
3647
Android NDK and SDK files. This value defaults to
3748
`$(HOME)\android-archives`.

build-tools/android-toolchain/android-toolchain.projitems

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,22 @@
4343
<DestDir>platforms\android-23</DestDir>
4444
</AndroidSdkItem>
4545
</ItemGroup>
46+
<ItemGroup>
47+
<_NdkToolchain Include="arm-linux-androideabi-clang" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains(',armeabi,')) Or $(AndroidSupportedAbisForConditionalChecks.Contains(',armeabi-v7a,'))">
48+
<Platform>android-4</Platform>
49+
<Arch>arm</Arch>
50+
</_NdkToolchain>
51+
<_NdkToolchain Include="aarch64-linux-android-clang" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains(',arm64-v8a,'))">
52+
<Platform>android-21</Platform>
53+
<Arch>arm64</Arch>
54+
</_NdkToolchain>
55+
<_NdkToolchain Include="x86-clang" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains(',x86,'))">
56+
<Platform>android-9</Platform>
57+
<Arch>x86</Arch>
58+
</_NdkToolchain>
59+
<_NdkToolchain Include="x86_64-clang" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains(',x86_64,'))">
60+
<Platform>android-21</Platform>
61+
<Arch>x86_64</Arch>
62+
</_NdkToolchain>
63+
</ItemGroup>
4664
</Project>

build-tools/android-toolchain/android-toolchain.targets

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -68,26 +68,19 @@
6868
AlwaysCreate="True"
6969
/>
7070
</Target>
71-
<ItemGroup>
72-
<_NdkToolchain Include="arm-linux-androideabi-clang">
73-
<Platform>android-4</Platform>
74-
<Arch>arm</Arch>
75-
</_NdkToolchain>
76-
</ItemGroup>
7771
<Target Name="_CreateNdkToolchains"
7872
Condition=" '$(OS)' == 'Unix' "
7973
Inputs="$(AndroidToolchainDirectory)\ndk\.stamp-ndk"
80-
Outputs="@(_NdkToolchain->'$(AndroidToolchainDirectory)\.stamp-toolchains-%(Identity)')">
74+
Outputs="@(_NdkToolchain->'$(AndroidToolchainDirectory)\toolchains\%(Identity)\AndroidVersion.txt')">
8175
<PropertyGroup>
8276
<_Script>$(AndroidToolchainDirectory)\ndk\build\tools\make-standalone-toolchain.sh</_Script>
8377
<_Install>@(_NdkToolchain->'$(AndroidToolchainDirectory)\toolchains\%(Identity)')</_Install>
84-
<_Arch>@(_NdkToolchain->'%(Arch)')</_Arch>
8578
<_Toolchain>@(_NdkToolchain->'%(Identity)')</_Toolchain>
8679
</PropertyGroup>
87-
<Exec Command="bash &quot;$(_Script)&quot; --platform=%(_NdkToolchain.Platform) &quot;--install-dir=$(_Install)&quot; --arch=$(_Arch) --toolchain=$(_Toolchain)" />
80+
<Exec Command="bash &quot;$(_Script)&quot; --platform=%(_NdkToolchain.Platform) &quot;--install-dir=$(_Install)&quot; --arch=%(_NdkToolchain.Arch) --toolchain=$(_Toolchain)" />
8881
<Touch
89-
Files="@(_NdkToolchain->'$(AndroidToolchainDirectory)\.stamp-toolchains-%(Identity)')"
90-
AlwaysCreate="True"
82+
Files="@(_NdkToolchain->'$(AndroidToolchainDirectory)\toolchains\%(Identity)\AndroidVersion.txt')"
83+
AlwaysCreate="False"
9184
/>
9285
</Target>
9386
<Target Name="_GetAndroidSdkDirectory">

build-tools/mono-runtimes/mono-runtimes.projitems

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,25 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<ItemGroup>
4-
<_MonoRuntime Include="armeabi-v7a">
4+
<_MonoRuntime Include="armeabi" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',armeabi,'))">
5+
<Ar>$(_ArmAr)</Ar>
6+
<As>$(_ArmAs)</As>
7+
<Cc>$(_ArmCc)</Cc>
8+
<Cpp>$(_ArmCpp) $(_ArmCppFlags)</Cpp>
9+
<CFlags>$(_ArmCFlags) -march=armv5te $(_TargetCFlags)</CFlags>
10+
<Cxx>$(_ArmCxx)</Cxx>
11+
<CxxFlags>$(_ArmCxxFlags) -march=armv5te $(_TargetCxxFlags)</CxxFlags>
12+
<CxxCpp>$(_ArmCxxCpp) $(_ArmCppFlags)</CxxCpp>
13+
<Ld>$(_ArmLd)</Ld>
14+
<LdFlags>$(_ArmLdFlags)</LdFlags>
15+
<RanLib>$(_ArmRanLib)</RanLib>
16+
<Strip>$(_ArmStrip)</Strip>
17+
<ConfigureFlags>--host=armv5-linux-androideabi $(_TargetConfigureFlags)</ConfigureFlags>
18+
<OutputRuntime>libmonosgen-2.0.so</OutputRuntime>
19+
<OutputProfiler>libmono-profiler-log.so</OutputProfiler>
20+
<OutputMonoPosixHelper>libMonoPosixHelper.so</OutputMonoPosixHelper>
21+
</_MonoRuntime>
22+
<_MonoRuntime Include="armeabi-v7a" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',armeabi-v7a,'))">
523
<Ar>$(_ArmAr)</Ar>
624
<As>$(_ArmAs)</As>
725
<Cc>$(_ArmCc)</Cc>
@@ -19,6 +37,60 @@
1937
<OutputProfiler>libmono-profiler-log.so</OutputProfiler>
2038
<OutputMonoPosixHelper>libMonoPosixHelper.so</OutputMonoPosixHelper>
2139
</_MonoRuntime>
40+
<_MonoRuntime Include="arm64-v8a" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',arm64-v8a,'))">
41+
<Ar>$(_Arm64Ar)</Ar>
42+
<As>$(_Arm64As)</As>
43+
<Cc>$(_Arm64Cc)</Cc>
44+
<Cpp>$(_Arm64Cpp) $(_Arm64CppFlags)</Cpp>
45+
<CFlags>$(_Arm64CFlags) $(_TargetCFlags)</CFlags>
46+
<Cxx>$(_Arm64Cxx)</Cxx>
47+
<CxxFlags>$(_Arm64CxxFlags) $(_TargetCxxFlags) </CxxFlags>
48+
<CxxCpp>$(_Arm64CxxCpp) $(_Arm64CppFlags)</CxxCpp>
49+
<Ld>$(_Arm64Ld)</Ld>
50+
<LdFlags>$(_Arm64LdFlags)</LdFlags>
51+
<RanLib>$(_Arm64RanLib)</RanLib>
52+
<Strip>$(_Arm64Strip)</Strip>
53+
<ConfigureFlags>--host=aarch64-linux-android $(_TargetConfigureFlags)</ConfigureFlags>
54+
<OutputRuntime>libmonosgen-2.0.so</OutputRuntime>
55+
<OutputProfiler>libmono-profiler-log.so</OutputProfiler>
56+
<OutputMonoPosixHelper>libMonoPosixHelper.so</OutputMonoPosixHelper>
57+
</_MonoRuntime>
58+
<_MonoRuntime Include="x86" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',x86,'))">
59+
<Ar>$(_X86Ar)</Ar>
60+
<As>$(_X86As)</As>
61+
<Cc>$(_X86Cc)</Cc>
62+
<Cpp>$(_X86Cpp) $(_X86CppFlags)</Cpp>
63+
<CFlags>$(_X86CFlags) $(_TargetCFlags)</CFlags>
64+
<Cxx>$(_X86Cxx)</Cxx>
65+
<CxxFlags>$(_X86CxxFlags) $(_TargetCxxFlags) </CxxFlags>
66+
<CxxCpp>$(_X86CxxCpp) $(_X86CppFlags)</CxxCpp>
67+
<Ld>$(_X86Ld)</Ld>
68+
<LdFlags>$(_X86LdFlags)</LdFlags>
69+
<RanLib>$(_X86RanLib)</RanLib>
70+
<Strip>$(_X86Strip)</Strip>
71+
<ConfigureFlags>--host=i686-linux-android $(_TargetConfigureFlags)</ConfigureFlags>
72+
<OutputRuntime>libmonosgen-2.0.so</OutputRuntime>
73+
<OutputProfiler>libmono-profiler-log.so</OutputProfiler>
74+
<OutputMonoPosixHelper>libMonoPosixHelper.so</OutputMonoPosixHelper>
75+
</_MonoRuntime>
76+
<_MonoRuntime Include="x86_64" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',x86_64,'))">
77+
<Ar>$(_X86_64Ar)</Ar>
78+
<As>$(_X86_64As)</As>
79+
<Cc>$(_X86_64Cc)</Cc>
80+
<Cpp>$(_X86_64Cpp) $(_X86_64CppFlags)</Cpp>
81+
<CFlags>$(_X86_64CFlags) $(_TargetCFlags)</CFlags>
82+
<Cxx>$(_X86_64Cxx)</Cxx>
83+
<CxxFlags>$(_X86_64CxxFlags) $(_TargetCxxFlags) </CxxFlags>
84+
<CxxCpp>$(_X86_64CxxCpp) $(_X86_64CppFlags)</CxxCpp>
85+
<Ld>$(_X86_64Ld)</Ld>
86+
<LdFlags>$(_X86_64LdFlags)</LdFlags>
87+
<RanLib>$(_X86_64RanLib)</RanLib>
88+
<Strip>$(_X86_64Strip)</Strip>
89+
<ConfigureFlags>--host=x86_64-linux-android $(_TargetConfigureFlags)</ConfigureFlags>
90+
<OutputRuntime>libmonosgen-2.0.so</OutputRuntime>
91+
<OutputProfiler>libmono-profiler-log.so</OutputProfiler>
92+
<OutputMonoPosixHelper>libMonoPosixHelper.so</OutputMonoPosixHelper>
93+
</_MonoRuntime>
2294
<_MonoRuntime Include="host-Darwin" Condition=" '$(HostOS)' == 'Darwin' ">
2395
<Ar>ar</Ar>
2496
<As>as</As>

build-tools/mono-runtimes/mono-runtimes.props

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44
<_CommonCFlags Condition=" '$(Configuration)' == 'Debug' ">-ggdb3 -O0 -fno-omit-frame-pointer</_CommonCFlags>
55
<_CommonCFlags Condition=" '$(Configuration)' == 'Release' ">-g -O2</_CommonCFlags>
66
<_CommonConfigureFlags>--without-ikvm-native --enable-maintainer-mode --with-profile2=no --with-profile4=no --with-profile4_5=no --with-monodroid --enable-nls=no --with-sigaltstack=yes --with-tls=pthread mono_cv_uscore=yes</_CommonConfigureFlags>
7-
<_TargetConfigureFlags>$(_CommonConfigureFlags) --enable-minimal=ssa,portability,attach,verifier,full_messages,sgen_remset,sgen_marksweep_par,sgen_marksweep_fixed,sgen_marksweep_fixed_par,sgen_copying,logging,security,shared_handles --disable-mcs-build --disable-executables</_TargetConfigureFlags>
7+
<_TargetConfigureFlags>$(_CommonConfigureFlags) --enable-minimal=ssa,portability,attach,verifier,full_messages,sgen_remset,sgen_marksweep_par,sgen_marksweep_fixed,sgen_marksweep_fixed_par,sgen_copying,logging,security,shared_handles --disable-mcs-build --disable-executables --disable-iconv</_TargetConfigureFlags>
88
<_SecurityCFlags>-Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack -fstack-protector</_SecurityCFlags>
99
<_TargetCFlags>$(_SecurityCFlags) -DMONODROID=1</_TargetCFlags>
1010
<_TargetCxxFlags>$(_SecurityCFlags) -DMONODROID=1</_TargetCxxFlags>
1111
<_TargetLdFlags>-ldl -lm -llog -lc -lgcc</_TargetLdFlags>
12+
</PropertyGroup>
13+
<PropertyGroup>
1214
<_ArmNdkPlatformPath>$(AndroidToolchainDirectory)\ndk\platforms\android-4</_ArmNdkPlatformPath>
1315
<_ArmAr>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-ar</_ArmAr>
1416
<_ArmAs>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-as</_ArmAs>
@@ -17,11 +19,59 @@
1719
<_ArmCpp>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-cpp</_ArmCpp>
1820
<_ArmCppFlags>-I$(_ArmNdkPlatformPath)\arch-arm\usr\include\</_ArmCppFlags>
1921
<_ArmCxx>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-clang++</_ArmCxx>
20-
<_ArmCxxFlags>-I$(_ArmNdkPlatformPath)\arch-arm\usr\include\</_ArmCxxFlags>
22+
<_ArmCxxFlags>$(_ArmCFlags)</_ArmCxxFlags>
2123
<_ArmCxxCpp>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-cpp</_ArmCxxCpp>
2224
<_ArmLd>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-ld</_ArmLd>
2325
<_ArmLdFlags>$(_TargetLdFlags) -Wl,--fix-cortex-a8 -Wl,-rpath-link=$(_ArmNdkPlatformPath)\arch-arm\usr\lib,-dynamic-linker=/system/bin/linker -L$(_ArmNdkPlatformPath)\arch-arm\usr\lib</_ArmLdFlags>
2426
<_ArmRanLib>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-ranlib</_ArmRanLib>
2527
<_ArmStrip>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-strip</_ArmStrip>
2628
</PropertyGroup>
29+
<PropertyGroup>
30+
<_Arm64NdkPlatformPath>$(AndroidToolchainDirectory)\ndk\platforms\android-21</_Arm64NdkPlatformPath>
31+
<_Arm64Ar>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-ar</_Arm64Ar>
32+
<_Arm64As>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-as</_Arm64As>
33+
<_Arm64Cc>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-clang</_Arm64Cc>
34+
<_Arm64CFlags>$(_CommonCFlags) -D__POSIX_VISIBLE=201002 -DSK_RELEASE -DNDEBUG -UDEBUG -fpic -DL_cuserid=9 -DANDROID64</_Arm64CFlags>
35+
<_Arm64Cpp>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-cpp</_Arm64Cpp>
36+
<_Arm64CppFlags>-I$(_Arm64NdkPlatformPath)\arch-arm64\usr\include</_Arm64CppFlags>
37+
<_Arm64Cxx>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-clang++</_Arm64Cxx>
38+
<_Arm64CxxFlags>$(_Arm64CFlags)</_Arm64CxxFlags>
39+
<_Arm64CxxCpp>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-cpp</_Arm64CxxCpp>
40+
<_Arm64Ld>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-ld</_Arm64Ld>
41+
<_Arm64LdFlags>$(_TargetLdFlags) -Wl,-rpath-link=$(_Arm64NdkPlatformPath)\arch-arm64\usr\lib,-dynamic-linker=/system/bin/linker -L$(_Arm64NdkPlatformPath)\arch-arm64\usr\lib</_Arm64LdFlags>
42+
<_Arm64RanLib>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-ranlib</_Arm64RanLib>
43+
<_Arm64Strip>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-strip</_Arm64Strip>
44+
</PropertyGroup>
45+
<PropertyGroup>
46+
<_X86NdkPlatformPath>$(AndroidToolchainDirectory)\ndk\platforms\android-9</_X86NdkPlatformPath>
47+
<_X86Ar>$(AndroidToolchainDirectory)\toolchains\x86-clang\bin\i686-linux-android-ar</_X86Ar>
48+
<_X86As>$(AndroidToolchainDirectory)\toolchains\x86-clang\bin\i686-linux-android-as</_X86As>
49+
<_X86Cc>$(AndroidToolchainDirectory)\toolchains\x86-clang\bin\i686-linux-android-clang</_X86Cc>
50+
<_X86CFlags>$(_CommonCFlags)</_X86CFlags>
51+
<_X86Cpp>$(AndroidToolchainDirectory)\toolchains\x86-clang\bin\i686-linux-android-cpp</_X86Cpp>
52+
<_X86CppFlags>-I$(_X86NdkPlatformPath)\arch-x86\usr\include</_X86CppFlags>
53+
<_X86Cxx>$(AndroidToolchainDirectory)\toolchains\x86-clang\bin\i686-linux-android-clang++</_X86Cxx>
54+
<_X86CxxFlags>$(_X86CFlags)</_X86CxxFlags>
55+
<_X86CxxCpp>$(AndroidToolchainDirectory)\toolchains\x86-clang\bin\i686-linux-android-cpp</_X86CxxCpp>
56+
<_X86Ld>$(AndroidToolchainDirectory)\toolchains\x86-clang\bin\i686-linux-android-ld</_X86Ld>
57+
<_X86LdFlags>$(_TargetLdFlags) -Wl,-rpath-link=$(_X86NdkPlatformPath)\arch-x86\usr\lib,-dynamic-linker=/system/bin/linker -L$(_X86NdkPlatformPath)\arch-x86\usr\lib</_X86LdFlags>
58+
<_X86RanLib>$(AndroidToolchainDirectory)\toolchains\x86-clang\bin\i686-linux-android-ranlib</_X86RanLib>
59+
<_X86Strip>$(AndroidToolchainDirectory)\toolchains\x86-clang\bin\i686-linux-android-strip</_X86Strip>
60+
</PropertyGroup>
61+
<PropertyGroup>
62+
<_X86_64NdkPlatformPath>$(AndroidToolchainDirectory)\ndk\platforms\android-21</_X86_64NdkPlatformPath>
63+
<_X86_64Ar>$(AndroidToolchainDirectory)\toolchains\x86_64-clang\bin\x86_64-linux-android-ar</_X86_64Ar>
64+
<_X86_64As>$(AndroidToolchainDirectory)\toolchains\x86_64-clang\bin\x86_64-linux-android-as</_X86_64As>
65+
<_X86_64Cc>$(AndroidToolchainDirectory)\toolchains\x86_64-clang\bin\x86_64-linux-android-clang</_X86_64Cc>
66+
<_X86_64CFlags>$(_CommonCFlags) -DL_cuserid=9</_X86_64CFlags>
67+
<_X86_64Cpp>$(AndroidToolchainDirectory)\toolchains\x86_64-clang\bin\x86_64-linux-android-cpp</_X86_64Cpp>
68+
<_X86_64CppFlags>-I$(_X86_64NdkPlatformPath)\arch-x86\usr\include</_X86_64CppFlags>
69+
<_X86_64Cxx>$(AndroidToolchainDirectory)\toolchains\x86_64-clang\bin\x86_64-linux-android-clang++</_X86_64Cxx>
70+
<_X86_64CxxFlags>$(_X86_64CFlags)</_X86_64CxxFlags>
71+
<_X86_64CxxCpp>$(AndroidToolchainDirectory)\toolchains\x86_64-clang\bin\x86_64-linux-android-cpp</_X86_64CxxCpp>
72+
<_X86_64Ld>$(AndroidToolchainDirectory)\toolchains\x86_64-clang\bin\x86_64-linux-android-ld</_X86_64Ld>
73+
<_X86_64LdFlags>$(_TargetLdFlags) -Wl,-rpath-link=$(_X86_64NdkPlatformPath)\arch-x86_64\usr\lib,-dynamic-linker=/system/bin/linker -L$(_X86_64NdkPlatformPath)\arch-x86_64\usr\lib</_X86_64LdFlags>
74+
<_X86_64RanLib>$(AndroidToolchainDirectory)\toolchains\x86_64-clang\bin\x86_64-linux-android-ranlib</_X86_64RanLib>
75+
<_X86_64Strip>$(AndroidToolchainDirectory)\toolchains\x86_64-clang\bin\x86_64-linux-android-strip</_X86_64Strip>
76+
</PropertyGroup>
2777
</Project>

build-tools/mono-runtimes/mono-runtimes.targets

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
</Target>
7676
<Target Name="_ConfigureRuntimes"
7777
Inputs="$(_MonoPath)\configure"
78-
Outputs="@(_MonoRuntime->'$(IntermediateOutputPath)\%(Identity)\.stamp')">
78+
Outputs="@(_MonoRuntime->'$(IntermediateOutputPath)\%(Identity)\Makefile')">
7979
<MakeDir Directories="@(_MonoRuntime->'$(IntermediateOutputPath)\%(Identity)')" />
8080
<Exec
8181
Command="..\..\..\$(_MonoPath)\configure LDFLAGS=&quot;%(_MonoRuntime.LdFlags)&quot; CFLAGS=&quot;%(_MonoRuntime.CFlags)&quot; CXXFLAGS=&quot;%(_MonoRuntime.CxxFlags)&quot; CC=&quot;%(_MonoRuntime.Cc)&quot; CXX=&quot;%(_MonoRuntime.Cxx)&quot; CPP=&quot;%(_MonoRuntime.Cpp)&quot; CXXCPP=&quot;%(_MonoRuntime.CxxCpp)&quot; LD=&quot;%(_MonoRuntime.Ld)&quot; AR=&quot;%(_MonoRuntime.Ar)&quot; AS=&quot;%(_MonoRuntime.As)&quot; RANLIB=&quot;%(_MonoRuntime.RanLib)&quot; STRIP=&quot;%(_MonoRuntime.Strip)&quot; --cache-file=..\%(_MonoRuntime.Identity).config.cache %(_MonoRuntime.ConfigureFlags)"
@@ -113,7 +113,7 @@
113113
DestinationFiles="@(_MonoRuntime->'$(OutputPath)\lib\xbuild\Xamarin\Android\lib\%(Identity)\%(OutputRuntime)-unstripped')"
114114
/>
115115
<Exec
116-
Command="%(_MonoRuntime.Strip) &quot;@(_MonoRuntime->'$(OutputPath)\lib\xbuild\Xamarin\Android\lib\%(Identity)\%(OutputRuntime)')&quot;"
116+
Command="%(_MonoRuntime.Strip) &quot;$(OutputPath)\lib\xbuild\Xamarin\Android\lib\%(Identity)\%(OutputRuntime)&quot;"
117117
/>
118118
<Copy
119119
SourceFiles="@(_MonoRuntime->'$(IntermediateOutputPath)\%(Identity)\mono\profiler\.libs\%(OutputProfiler)')"
@@ -160,7 +160,7 @@
160160
DestinationFolder="$(_BclFrameworkDir)"
161161
/>
162162
<Touch
163-
Files="$(_BclFrameworkDir)\mscorlib.dll"
163+
Files="@(_BclInstalledItem)"
164164
/>
165165
<ItemGroup>
166166
<FrameworkList Include="&lt;FileList Redist=&quot;MonoAndroid&quot; Name=&quot;Xamarin.Android Base Class Libraries&quot;&gt;" />
@@ -175,5 +175,6 @@
175175
<Target Name="_CleanRuntimes"
176176
AfterTargets="Clean">
177177
<RemoveDir Directories="@(_MonoRuntime->'$(IntermediateOutputPath)\%(Identity)')" />
178+
<Delete Files="@(_MonoRuntime->'$(IntermediateOutputPath)\%(Identity).config.cache')" />
178179
</Target>
179180
</Project>

src/monodroid/jni/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
Application.mk
12
config.include
23
machine.config.include

src/monodroid/jni/Application.mk

Lines changed: 0 additions & 2 deletions
This file was deleted.

0 commit comments

Comments
 (0)