Skip to content

Instantly share code, notes, and snippets.

@jonpryor
Created May 12, 2016 17:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jonpryor/298ecddc18d6700b1add996081cc3e6d to your computer and use it in GitHub Desktop.
Save jonpryor/298ecddc18d6700b1add996081cc3e6d to your computer and use it in GitHub Desktop.
commit 25b5d95a918859a5d40365af5794848983b3371d
Author: Jonathan Pryor <jonpryor@vt.edu>
Date: Thu May 12 11:34:06 2016 -0400
[android-toolchains, mono-runtimes] Build armeabi, arm64-v8a.
diff --git a/Configuration.Override.props.in b/Configuration.Override.props.in
index 099d5de..fe8d457 100644
--- a/Configuration.Override.props.in
+++ b/Configuration.Override.props.in
@@ -6,6 +6,19 @@
<!-- The Xamarin.Android $(TargetFrameworkVersion) value that corresponds to $(AndroidApiLevel) -->
<AndroidFrameworkVersion>v6.0</AndroidFrameworkVersion>
+ <!--
+ The ABIs to build mono for.
+ This list *must* begin and end with `,`, with ',' as delimiter
+ Supported ABIs include:
+ - armeabi
+ - armeabi-v7a
+ - arm64-v8a
+ - x86
+ - x86_64
+ Note: Why comma? Because ';' can't be specified on the command-line.
+ -->
+ <AndroidSupportedAbis>,armeabi,armeabi-v7a,arm64-v8a,x86,x86_64,</AndroidSupportedAbis>
+
<!-- C and C++ compilers to emit host-native binaries -->
<HostCc>clang</HostCc>
<HostCxx>clang++</HostCxx>
diff --git a/Configuration.props b/Configuration.props
index 2775e40..e2ac142 100644
--- a/Configuration.props
+++ b/Configuration.props
@@ -18,5 +18,6 @@
<AndroidToolchainDirectory Condition=" '$(AndroidToolchainDirectory)' == '' ">$(HOME)\android-toolchain</AndroidToolchainDirectory>
<AndroidSdkDirectory>$(AndroidToolchainDirectory)\sdk</AndroidSdkDirectory>
<AndroidNdkDirectory>$(AndroidToolchainDirectory)\ndk</AndroidNdkDirectory>
+ <AndroidSupportedAbis Condition=" '$(AndroidSupportedAbis)' == '' ">,armeabi-v7a,</AndroidSupportedAbis>
</PropertyGroup>
</Project>
diff --git a/build-tools/android-toolchain/android-toolchain.projitems b/build-tools/android-toolchain/android-toolchain.projitems
index 58e3401..64db07d 100644
--- a/build-tools/android-toolchain/android-toolchain.projitems
+++ b/build-tools/android-toolchain/android-toolchain.projitems
@@ -41,4 +41,14 @@
<DestDir>platforms\android-23</DestDir>
</AndroidSdkItem>
</ItemGroup>
+ <ItemGroup>
+ <_NdkToolchain Include="arm-linux-androideabi-clang" Condition="$(AndroidSupportedAbis.Contains(',armeabi,')) Or $(AndroidSupportedAbis.Contains(',armeabi-v7a,'))">
+ <Platform>android-4</Platform>
+ <Arch>arm</Arch>
+ </_NdkToolchain>
+ <_NdkToolchain Include="aarch64-linux-android-clang" Condition="$(AndroidSupportedAbis.Contains(',arm64-v8a,'))">
+ <Platform>android-21</Platform>
+ <Arch>arm64</Arch>
+ </_NdkToolchain>
+ </ItemGroup>
</Project>
diff --git a/build-tools/android-toolchain/android-toolchain.targets b/build-tools/android-toolchain/android-toolchain.targets
index a52a5af..e685b8b 100644
--- a/build-tools/android-toolchain/android-toolchain.targets
+++ b/build-tools/android-toolchain/android-toolchain.targets
@@ -65,12 +65,6 @@
AlwaysCreate="True"
/>
</Target>
- <ItemGroup>
- <_NdkToolchain Include="arm-linux-androideabi-clang">
- <Platform>android-4</Platform>
- <Arch>arm</Arch>
- </_NdkToolchain>
- </ItemGroup>
<Target Name="_CreateNdkToolchains"
Condition=" '$(OS)' == 'Unix' "
Inputs="$(AndroidToolchainDirectory)\.stamp-sdk"
diff --git a/build-tools/mono-runtimes/mono-runtimes.projitems b/build-tools/mono-runtimes/mono-runtimes.projitems
index 05ffc52..4e3dcc1 100644
--- a/build-tools/mono-runtimes/mono-runtimes.projitems
+++ b/build-tools/mono-runtimes/mono-runtimes.projitems
@@ -1,7 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
- <_MonoRuntime Include="armeabi-v7a">
+ <_MonoRuntime Include="armeabi" Condition="$(AndroidSupportedAbis.Contains (',armeabi,'))">
+ <Ar>$(_ArmAr)</Ar>
+ <As>$(_ArmAs)</As>
+ <Cc>$(_ArmCc)</Cc>
+ <Cpp>$(_ArmCpp) $(_ArmCppFlags)</Cpp>
+ <CFlags>$(_ArmCFlags) -march=armv5te $(_TargetCFlags)</CFlags>
+ <Cxx>$(_ArmCxx)</Cxx>
+ <CxxFlags>$(_ArmCxxFlags) -march=armv5te $(_TargetCxxFlags) </CxxFlags>
+ <CxxCpp>$(_ArmCxxCpp) $(_ArmCppFlags)</CxxCpp>
+ <Ld>$(_ArmLd)</Ld>
+ <LdFlags>$(_ArmLdFlags)</LdFlags>
+ <RanLib>$(_ArmRanLib)</RanLib>
+ <Strip>$(_ArmStrip)</Strip>
+ <ConfigureFlags>--host=armv5-linux-androideabi $(_TargetConfigureFlags)</ConfigureFlags>
+ <OutputRuntime>libmonosgen-2.0.so</OutputRuntime>
+ <OutputProfiler>libmono-profiler-log.so</OutputProfiler>
+ <OutputMonoPosixHelper>libMonoPosixHelper.so</OutputMonoPosixHelper>
+ </_MonoRuntime>
+ <_MonoRuntime Include="armeabi-v7a" Condition="$(AndroidSupportedAbis.Contains (',armeabi-v7a,'))">
<Ar>$(_ArmAr)</Ar>
<As>$(_ArmAs)</As>
<Cc>$(_ArmCc)</Cc>
@@ -19,6 +37,24 @@
<OutputProfiler>libmono-profiler-log.so</OutputProfiler>
<OutputMonoPosixHelper>libMonoPosixHelper.so</OutputMonoPosixHelper>
</_MonoRuntime>
+ <_MonoRuntime Include="arm64-v8a" Condition="$(AndroidSupportedAbis.Contains (',arm64-v8a,'))">
+ <Ar>$(_Arm64Ar)</Ar>
+ <As>$(_Arm64As)</As>
+ <Cc>$(_Arm64Cc)</Cc>
+ <Cpp>$(_Arm64Cpp) $(_Arm64CppFlags)</Cpp>
+ <CFlags>$(_Arm64CFlags) $(_TargetCFlags)</CFlags>
+ <Cxx>$(_Arm64Cxx)</Cxx>
+ <CxxFlags>$(_Arm64CxxFlags) $(_TargetCxxFlags) </CxxFlags>
+ <CxxCpp>$(_Arm64CxxCpp) $(_Arm64CppFlags)</CxxCpp>
+ <Ld>$(_Arm64Ld)</Ld>
+ <LdFlags>$(_Arm64LdFlags)</LdFlags>
+ <RanLib>$(_Arm64RanLib)</RanLib>
+ <Strip>$(_Arm64Strip)</Strip>
+ <ConfigureFlags>--host=aarch64-linux-android $(_TargetConfigureFlags)</ConfigureFlags>
+ <OutputRuntime>libmonosgen-2.0.so</OutputRuntime>
+ <OutputProfiler>libmono-profiler-log.so</OutputProfiler>
+ <OutputMonoPosixHelper>libMonoPosixHelper.so</OutputMonoPosixHelper>
+ </_MonoRuntime>
<_MonoRuntime Include="host-Darwin" Condition=" '$(HostOS)' == 'Darwin' ">
<Ar>ar</Ar>
<As>as</As>
diff --git a/build-tools/mono-runtimes/mono-runtimes.props b/build-tools/mono-runtimes/mono-runtimes.props
index 39bd222..38b42a3 100644
--- a/build-tools/mono-runtimes/mono-runtimes.props
+++ b/build-tools/mono-runtimes/mono-runtimes.props
@@ -23,5 +23,19 @@
<_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>
<_ArmRanLib>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-ranlib</_ArmRanLib>
<_ArmStrip>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-strip</_ArmStrip>
+ <_Arm64NdkPlatformPath>$(AndroidToolchainDirectory)\ndk\platforms\android-21</_Arm64NdkPlatformPath>
+ <_Arm64Ar>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-ar</_Arm64Ar>
+ <_Arm64As>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-as</_Arm64As>
+ <_Arm64Cc>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-clang</_Arm64Cc>
+ <_Arm64CFlags>$(_CommonCFlags) -D__POSIX_VISIBLE=201002 -DSK_RELEASE -DNDEBUG -UDEBUG -fpic -DL_cuserid=9 -DANDROID64</_Arm64CFlags>
+ <_Arm64Cpp>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-cpp</_Arm64Cpp>
+ <_Arm64CppFlags>-I$(_Arm64NdkPlatformPath)\arch-arm64\usr\include</_Arm64CppFlags>
+ <_Arm64Cxx>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-clang++</_Arm64Cxx>
+ <_Arm64CxxFlags>-I$(_ArmNdkPlatformPath)\arch-arm64\usr\include</_Arm64CxxFlags>
+ <_Arm64CxxCpp>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-cpp</_Arm64CxxCpp>
+ <_Arm64Ld>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-ld</_Arm64Ld>
+ <_Arm64LdFlags>$(_TargetLdFlags) -Wl,-rpath-link=$(_Arm64NdkPlatformPath)\arch-arm64\usr\lib,-dynamic-linker=/system/bin/linker -L$(_Arm64NdkPlatformPath)\arch-arm64\usr\lib</_Arm64LdFlags>
+ <_Arm64RanLib>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-ranlib</_Arm64RanLib>
+ <_Arm64Strip>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-strip</_Arm64Strip>
</PropertyGroup>
</Project>
\ No newline at end of file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment