Created
May 12, 2016 17:02
-
-
Save jonpryor/298ecddc18d6700b1add996081cc3e6d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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