diff --git a/Configuration.Override.props.in b/Configuration.Override.props.in index d3a75d2e12b..ba4be4b9b5f 100644 --- a/Configuration.Override.props.in +++ b/Configuration.Override.props.in @@ -7,7 +7,7 @@ v6.0 - armeabi:armeabi-v7a:arm64-v8a:x86:x86_64 + armeabi:armeabi-v7a:arm64-v8a:x86:x86_64 + + + Darwin:mxe-Win64 clang diff --git a/Configuration.props b/Configuration.props index b2f41653912..31f583a0348 100644 --- a/Configuration.props +++ b/Configuration.props @@ -23,7 +23,8 @@ $(AndroidToolchainDirectory)\mxe $(AndroidToolchainDirectory)\sdk $(AndroidToolchainDirectory)\ndk - host-$(HostOS):armeabi-v7a + $(HostOS) + armeabi-v7a $(MSBuildThisFileDirectory)external\Java.Interop $(MSBuildThisFileDirectory)external\mono $(MSBuildThisFileDirectory)external\sqlite @@ -38,19 +39,30 @@ $([System.IO.Path]::GetFullPath ('$(MonoSourceDirectory)')) $([System.IO.Path]::GetFullPath ('$(SqliteSourceDirectory)')) + + + $(AndroidSupportedHostJitAbis) + $(AndroidSupportedHostJitAbisForConditionalChecks): + :$(AndroidSupportedHostJitAbisForConditionalChecks) + $(AndroidSupportedHostJitAbis.Split(':')) + - - - + - $([System.String]::Copy('$(AndroidSupportedAbis)').Replace (':', ';').Replace ('host-$(HostOS)', '').Replace (';;', ';') - $(AndroidSupportedAbis) - $(AndroidSupportedAbisForConditionalChecks): - :$(AndroidSupportedAbisForConditionalChecks) + $(AndroidSupportedTargetJitAbis) + $(AndroidSupportedTargetJitAbisForConditionalChecks): + :$(AndroidSupportedTargetJitAbisForConditionalChecks) + $(AndroidSupportedTargetJitAbis.Split(':')) + + + diff --git a/README.md b/README.md index a6dcc758aa3..749ac4865a3 100644 --- a/README.md +++ b/README.md @@ -32,30 +32,30 @@ Overridable MSBuild properties include: * `$(AndroidFrameworkVersion)`: The Xamarin.Android `$(TargetFrameworkVersion)` version which corresponds to `$(AndroidApiLevel)`. This is *usually* the Android version number with a leading `v`, e.g. `v4.0.3` for API-15. -* `$(AndroidSupportedAbis)`: The Android ABIs to build for inclusion within - apps. This is a `:`-separated list of ABIs to build. Supported values are: - - * `armeabi` - * `armeabi-v7a` - * `arm64-v8a` - * `x86` - * `x86_64` - - Addtionally there are a set of "host" values. The "host ABI" is used - to build mono for the *currently executing operating system*, in - particular to build the base class libraries such as `mscorlib.dll`. +* `$(AndroidSupportedHostJitAbis)`: The Android ABIs for which to build a + host JIT *and* Xamarin.Android base class libraries (`mscorlib.dll`/etc.). + The "host JIT" is used e.g. with the Xamarin Studio Designer, to render + Xamarin.Android apps on the developer's machine. There can also be support for cross-compiling mono for a different host, e.g. to build Windows `libmonosgen-2.0.dll` from OS X. Supported host values include: - * `host-Darwin` - * `host-Linux` - * `host-win64`: Cross-compile Windows 64-bit binaries from Unix. + * `Darwin` + * `Linux` + * `mxe-Win64`: Cross-compile Windows 64-bit binaries from Unix. - The default value is `host-$(HostOS):armeabi-v7a`, where `$(HostOS)` - is based on probing various environment variables and filesystem locations. - On OS X, the default would be `host-Darwin:armeabi-v7a`. + The default value is `$(HostOS)`, where `$(HostOS)` is based on probing + various environment variables and filesystem locations. + On OS X, the default would be `Darwin`. +* `$(AndroidSupportedTargetJitAbis)`: The Android ABIs for which to build the + the Mono JIT for inclusion within apps. This is a `:`-separated list of + ABIs to build. Supported values are: + * `armeabi` + * `armeabi-v7a` + * `arm64-v8a` + * `x86` + * `x86_64` * `$(AndroidToolchainCacheDirectory)`: The directory to cache the downloaded Android NDK and SDK files. This value defaults to `$(HOME)\android-archives`. diff --git a/Xamarin.Android.sln b/Xamarin.Android.sln index de4d20d7a6f..6b3c16e7815 100644 --- a/Xamarin.Android.sln +++ b/Xamarin.Android.sln @@ -81,8 +81,6 @@ Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|AnyCPU = Debug|AnyCPU Release|AnyCPU = Release|AnyCPU - XAIntegrationDebug|Any CPU = XAIntegrationDebug|Any CPU - XAIntegrationRelease|Any CPU = XAIntegrationRelease|Any CPU XAIntegrationDebug|AnyCPU = XAIntegrationDebug|AnyCPU XAIntegrationRelease|AnyCPU = XAIntegrationRelease|AnyCPU EndGlobalSection diff --git a/build-tools/android-toolchain/android-toolchain.projitems b/build-tools/android-toolchain/android-toolchain.projitems index f84c761efef..633aee3efb1 100644 --- a/build-tools/android-toolchain/android-toolchain.projitems +++ b/build-tools/android-toolchain/android-toolchain.projitems @@ -44,19 +44,19 @@ - <_NdkToolchain Include="arm-linux-androideabi-clang" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains(':armeabi:')) Or $(AndroidSupportedAbisForConditionalChecks.Contains(':armeabi-v7a:'))"> + <_NdkToolchain Include="arm-linux-androideabi-clang" Condition="$(AndroidSupportedTargetJitAbisForConditionalChecks.Contains(':armeabi:')) Or $(AndroidSupportedTargetJitAbisForConditionalChecks.Contains(':armeabi-v7a:'))"> android-4 arm - <_NdkToolchain Include="aarch64-linux-android-clang" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains(':arm64-v8a:'))"> + <_NdkToolchain Include="aarch64-linux-android-clang" Condition="$(AndroidSupportedTargetJitAbisForConditionalChecks.Contains(':arm64-v8a:'))"> android-21 arm64 - <_NdkToolchain Include="x86-clang" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains(':x86:'))"> + <_NdkToolchain Include="x86-clang" Condition="$(AndroidSupportedTargetJitAbisForConditionalChecks.Contains(':x86:'))"> android-9 x86 - <_NdkToolchain Include="x86_64-clang" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains(':x86_64:'))"> + <_NdkToolchain Include="x86_64-clang" Condition="$(AndroidSupportedTargetJitAbisForConditionalChecks.Contains(':x86_64:'))"> android-21 x86_64 @@ -65,37 +65,37 @@ <_RequiredProgram Include="$(ManagedRuntime)" Condition=" '$(ManagedRuntime)' != '' " /> <_RequiredProgram Include="$(HostCc)" /> <_RequiredProgram Include="$(HostCxx)" /> - <_RequiredProgram Include="7za" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':host-win64:'))"> + <_RequiredProgram Include="7za" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:'))"> p7zip <_RequiredProgram Include="autoconf" /> <_RequiredProgram Include="automake" /> - <_RequiredProgram Include="cmake" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':host-win64:'))" /> - <_RequiredProgram Include="gdk-pixbuf-csource" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':host-win64:'))"> + <_RequiredProgram Include="cmake" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:'))" /> + <_RequiredProgram Include="gdk-pixbuf-csource" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:'))"> gdk-pixbuf - <_RequiredProgram Include="gettext" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':host-win64:'))" /> - <_RequiredProgram Include="glibtool" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':host-win64:'))"> + <_RequiredProgram Include="gettext" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:'))" /> + <_RequiredProgram Include="glibtool" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:'))"> libtool - <_RequiredProgram Include="gsed" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':host-win64:'))"> + <_RequiredProgram Include="gsed" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:'))"> gnu-sed - <_RequiredProgram Include="intltoolize" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':host-win64:'))"> + <_RequiredProgram Include="intltoolize" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:'))"> intltool <_RequiredProgram Include="make" /> - <_RequiredProgram Include="pkg-config" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':host-win64:'))"> + <_RequiredProgram Include="pkg-config" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:'))"> pkg-config - <_RequiredProgram Include="ruby" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':host-win64:'))" /> - <_RequiredProgram Include="scons" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':host-win64:'))"> + <_RequiredProgram Include="ruby" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:'))" /> + <_RequiredProgram Include="scons" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:'))"> scons - <_RequiredProgram Include="wget" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':host-win64:'))"> + <_RequiredProgram Include="wget" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:'))"> wget - <_RequiredProgram Include="xz" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':host-win64:'))"> + <_RequiredProgram Include="xz" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:'))"> xz diff --git a/build-tools/android-toolchain/android-toolchain.targets b/build-tools/android-toolchain/android-toolchain.targets index 5a94714c616..6fe6cfb2ac8 100644 --- a/build-tools/android-toolchain/android-toolchain.targets +++ b/build-tools/android-toolchain/android-toolchain.targets @@ -112,7 +112,7 @@ /> + Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:')) Or $(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win32:'))"> - <_MonoRuntime Include="armeabi" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':armeabi:'))"> + <_MonoRuntime Include="armeabi" Condition="$(AndroidSupportedTargetJitAbis.Contains (':armeabi:'))"> $(_ArmAr) $(_ArmAs) $(_ArmCc) @@ -21,7 +21,7 @@ libmono-profiler-log libMonoPosixHelper - <_MonoRuntime Include="armeabi-v7a" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':armeabi-v7a:'))"> + <_MonoRuntime Include="armeabi-v7a" Condition="$(AndroidSupportedTargetJitAbis.Contains (':armeabi-v7a:'))"> $(_ArmAr) $(_ArmAs) $(_ArmCc) @@ -41,7 +41,7 @@ libmono-profiler-log libMonoPosixHelper - <_MonoRuntime Include="arm64-v8a" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':arm64-v8a:'))"> + <_MonoRuntime Include="arm64-v8a" Condition="$(AndroidSupportedTargetJitAbis.Contains (':arm64-v8a:'))"> $(_Arm64Ar) $(_Arm64As) $(_Arm64Cc) @@ -61,7 +61,7 @@ libmono-profiler-log libMonoPosixHelper - <_MonoRuntime Include="x86" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':x86:'))"> + <_MonoRuntime Include="x86" Condition="$(AndroidSupportedTargetJitAbis.Contains (':x86:'))"> $(_X86Ar) $(_X86As) $(_X86Cc) @@ -81,7 +81,7 @@ libmono-profiler-log libMonoPosixHelper - <_MonoRuntime Include="x86_64" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':x86_64:'))"> + <_MonoRuntime Include="x86_64" Condition="$(AndroidSupportedTargetJitAbis.Contains (':x86_64:'))"> $(_X86_64Ar) $(_X86_64As) $(_X86_64Cc) @@ -101,7 +101,7 @@ libmono-profiler-log libMonoPosixHelper - <_MonoRuntime Include="host-Win64" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':host-win64:'))"> + <_MonoRuntime Include="host-mxe-Win64" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':mxe-Win64:'))"> $(AndroidMxeFullPath)\bin\x86_64-w64-mingw32.static-ar $(AndroidMxeFullPath)\bin\x86_64-w64-mingw32.static-as $(AndroidMxeFullPath)\bin\x86_64-w64-mingw32.static-gcc @@ -122,7 +122,7 @@ libMonoPosixHelper - <_MonoRuntime Include="host-Darwin" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':host-Darwin:'))"> + <_MonoRuntime Include="host-Darwin" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':Darwin:'))"> ar as $(HostCc) @@ -140,7 +140,7 @@ libmono-profiler-log libMonoPosixHelper - <_MonoRuntime Include="host-Linux" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (':host-Linux:'))"> + <_MonoRuntime Include="host-Linux" Condition="$(AndroidSupportedHostJitAbisForConditionalChecks.Contains (':Linux:'))"> ar as $(HostCc) diff --git a/src/Mono.Android.Export/Mono.Android.Export.csproj b/src/Mono.Android.Export/Mono.Android.Export.csproj index c02368d4c27..3d34a232afd 100644 --- a/src/Mono.Android.Export/Mono.Android.Export.csproj +++ b/src/Mono.Android.Export/Mono.Android.Export.csproj @@ -36,15 +36,15 @@ $(OutputPath)..\v1.0\mscorlib.dll False - + $(OutputPath)..\v1.0\System.dll False - + $(OutputPath)..\v1.0\System.Core.dll False - + $(OutputPath)..\v1.0\System.Xml.dll False diff --git a/src/Mono.Android/Mono.Android.csproj b/src/Mono.Android/Mono.Android.csproj index 83f12fcefad..88013184d6c 100644 --- a/src/Mono.Android/Mono.Android.csproj +++ b/src/Mono.Android/Mono.Android.csproj @@ -39,23 +39,23 @@ $(OutputPath)..\v1.0\mscorlib.dll False - + $(OutputPath)..\v1.0\System.dll False - + $(OutputPath)..\v1.0\System.Core.dll False - + $(OutputPath)..\v1.0\System.Net.Http.dll False - + $(OutputPath)..\v1.0\System.Runtime.Serialization.dll False - + $(OutputPath)..\v1.0\System.Xml.dll False diff --git a/src/Mono.Data.Sqlite/Mono.Data.Sqlite.csproj b/src/Mono.Data.Sqlite/Mono.Data.Sqlite.csproj index 24cbf3d0545..23b522f0583 100644 --- a/src/Mono.Data.Sqlite/Mono.Data.Sqlite.csproj +++ b/src/Mono.Data.Sqlite/Mono.Data.Sqlite.csproj @@ -179,8 +179,7 @@ - <_SupportedAbi Include="$(AndroidSupportedDeviceAbis)" /> - + diff --git a/src/Mono.Posix/Mono.Posix.csproj b/src/Mono.Posix/Mono.Posix.csproj index 57fcd4e4c25..3039972d661 100644 --- a/src/Mono.Posix/Mono.Posix.csproj +++ b/src/Mono.Posix/Mono.Posix.csproj @@ -255,19 +255,19 @@ $(OutputPath)\..\..\..\xbuild\Xamarin\Android\lib - + MonoPosixHelper\arm64-v8a\libMonoPosixHelper.so - + MonoPosixHelper\armeabi\libMonoPosixHelper.so - + MonoPosixHelper\armeabi-v7a\libMonoPosixHelper.so - + MonoPosixHelper\x86\libMonoPosixHelper.so - + MonoPosixHelper\x86_64\libMonoPosixHelper.so diff --git a/src/monodroid/monodroid.projitems b/src/monodroid/monodroid.projitems index 9c7e0040e0c..7378aba4c2b 100644 --- a/src/monodroid/monodroid.projitems +++ b/src/monodroid/monodroid.projitems @@ -1,11 +1,5 @@ - - <_SupportedAbis>$(AndroidSupportedAbis.Replace(':', ';')) - - - <_MonoRuntime Include="$(_SupportedAbis)" Exclude="@(HostOSName)" /> - <_RequiredProgram Include="xxd" /> diff --git a/src/monodroid/monodroid.targets b/src/monodroid/monodroid.targets index 5e3a057f0ae..6cdb61447e2 100644 --- a/src/monodroid/monodroid.targets +++ b/src/monodroid/monodroid.targets @@ -1,5 +1,6 @@ + @@ -10,10 +11,10 @@ + Outputs="@(AndroidSupportedTargetJitAbi->'$(OutputPath)\%(Identity)\libmono-android.$(_Conf).so')"> - <_AppAbi>@(_MonoRuntime->'%(Identity)', ' ') + <_AppAbi>@(AndroidSupportedTargetJitAbi->'%(Identity)', ' ') - - + + diff --git a/src/sqlite-xamarin/sqlite-xamarin.targets b/src/sqlite-xamarin/sqlite-xamarin.targets index 5c9be77e591..f2861089f30 100644 --- a/src/sqlite-xamarin/sqlite-xamarin.targets +++ b/src/sqlite-xamarin/sqlite-xamarin.targets @@ -16,7 +16,6 @@ - <_SupportedAbi Include="$(AndroidSupportedDeviceAbis)" /> - <_LibSqliteXamarin Include="@(_SupportedAbi->'src\main\libs\%(Identity)\libsqlite3_xamarin.so')" /> + <_LibSqliteXamarin Include="@(AndroidSupportedTargetJitAbi->'src\main\libs\%(Identity)\libsqlite3_xamarin.so')" /> - <_AppAbi>$([System.String]::Copy('$(AndroidSupportedDeviceAbis)').Replace (';', ' ')) + <_AppAbi>$(AndroidSupportedTargetJitAbis.Replace (':', ' '))