Skip to content

Commit 44e2aba

Browse files
committed
[mxe] Add Windows cross-compiler support.
Certain Xamarin.Android features require that Mono be built for Windows, e.g. the [AOT compilers][aot] require a build of mono that executes on Windows to generate the AOT native libraries. Unfortunately, building Mono on Windows continues to be a massive PITA. (Autotools on Windows requires Cygwin/mingw, running shell scripts on Windows is painfully slow, it's all brittle, etc.) To work around this pain, we instead build the Mono/Windows binaries on OS X, via [MXE][mxe], which produces a gcc-based cross-compiler which generates Windows binaries and is executable from Unix. This in turn requires that we have MXE, so add a `_CreateMxeToolchains` target to `android-toolchain.targets` which will build MXE. The installation prefix for MXE can be overridden via the new `$(AndroidMxeInstallPrefix)` MSBuild property; it defaults to `$HOME/android-toolchain/mxe`. Rework the `$(AndroidSupportedAbis)` MSBuild property so that it must include the "host" ABI, and add support for a new `host-win64` value which will use MXE to generate 64-bit Windows binaries for libmonosgen-2.0.dll and libMonoPosixHelper.dll. We can't always process `host-$(HostOS)` because of an xbuild bug. The scenario is that if you want to just build `host-win64`, the obvious thing to do is: cd build-tools/mono-runtimes xbuild /p:AndroidSupportedAbis=host-win64 Alas, if `host-$(HostOS)` is always processed, this inexplicably causes `host-$(HostOS)` to be re-rebuilt, which (1) is a waste of time, and (2) fails -- inexplicably -- in the `_BuildRuntimes` target because make(1) thinks that the configure flags have somehow changed, which currently makes no sense at all. (When can we move to MSBuild?) Changing `$(AndroidSupportedAbis)` so that `host-$(HostOS)` is explicitly processed instead of implicitly processed allows working around the above xbuild bug, as `host-$(HostOS)` won't be implicitly processed on every build, but only when required. Additionally, we add a new <Which/> MSBuild task so that we can determine of a particular process is in `$PATH`. This is useful becuase listing requirements within README.md is a road to pain -- e.g. xxd(1) is required to build `src/monodroid` but if it's missing it'll still *build* but you'll instead get a *linker* failure because the `monodroid_config` and `monodroid_machine_config` symbols aren't present. Building MXE requires that even more programs be present within $PATH, so explicitly check for these so that *useful* error messages can be generated instead of obscure ones. Finally, a note about autotools and generating Windows native libraries: creation of `.dll` files *requires* that an appropriate objdump be present so it can determine if e.g. `libkernel32.a` is an import library or an archive. If `x86_64-w64-mingw32.static-objdump` isn't found -- e.g. because $PATH doesn't contain it -- then no `.dll` files will be created, and much head scratching will occur. To rectify this, override the OBJDUMP and DLLTOOL values when invoking `configure` so that that full paths are used and `$PATH` use is reduced. (Who wants `x86_64-w64-mingw32.static-objdump` in `$PATH`?) [aot]: https://developer.xamarin.com/releases/android/xamarin.android_5/xamarin.android_5.1/#AOT_Support [mxe]: http://mxe.cc/
1 parent 877d88d commit 44e2aba

File tree

15 files changed

+245
-24
lines changed

15 files changed

+245
-24
lines changed

.gitmodules

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,7 @@
66
path = external/mono
77
url = https://github.com/mono/mono.git
88
branch = mono-4.5.0-branch
9+
[submodule "external/mxe"]
10+
path = external/mxe
11+
url = https://github.com/xamarin/mxe.git
12+
branch = xamarin

Configuration.Override.props.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@
2525
<!-- These must be FULL PATHS -->
2626
<AndroidToolchainCacheDirectory>$(HOME)\android-archives</AndroidToolchainCacheDirectory>
2727
<AndroidToolchainDirectory>$(HOME)\android-toolchain</AndroidToolchainDirectory>
28+
<AndroidMxeInstallPrefix>$(AndroidToolchainDirectory)\mxe</AndroidMxeInstallPrefix>
2829
</PropertyGroup>
2930
</Project>

Configuration.props

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,23 @@
99
<HostOS Condition=" '$(HostOS)' == '' And '$(OS)' == 'Unix' And Exists ('/Applications') ">Darwin</HostOS>
1010
<HostOS Condition=" '$(HostOS)' == '' And '$(OS)' == 'Unix' ">Linux</HostOS>
1111
<HostCc Condition=" '$(HostCc)' == '' ">clang</HostCc>
12-
<HostCxx Condition=" '$(HostCc)' == '' ">clang++</HostCxx>
12+
<HostCxx Condition=" '$(HostCxx)' == '' ">clang++</HostCxx>
1313
<ManagedRuntime Condition=" '$(ManagedRuntime)' == '' And '$(OS)' != 'Windows_NT' ">mono</ManagedRuntime>
1414
<HOME Condition=" '$(HOME)' == '' ">$(HOMEDRIVE)$(HOMEPATH)</HOME>
1515
<AndroidApiLevel Condition=" '$(AndroidApiLevel)' == '' ">23</AndroidApiLevel>
1616
<AndroidFrameworkVersion Condition=" '$(AndroidFrameworkVersion)' == '' ">v6.0</AndroidFrameworkVersion>
1717
<AndroidToolchainCacheDirectory Condition=" '$(AndroidToolchainCacheDirectory)' == '' ">$(HOME)\android-archives</AndroidToolchainCacheDirectory>
1818
<AndroidToolchainDirectory Condition=" '$(AndroidToolchainDirectory)' == '' ">$(HOME)\android-toolchain</AndroidToolchainDirectory>
19+
<AndroidMxeInstallPrefix Condition=" '$(AndroidMxeInstallPrefix)' == '' ">$(AndroidToolchainDirectory)\mxe</AndroidMxeInstallPrefix>
1920
<AndroidSdkDirectory>$(AndroidToolchainDirectory)\sdk</AndroidSdkDirectory>
2021
<AndroidNdkDirectory>$(AndroidToolchainDirectory)\ndk</AndroidNdkDirectory>
21-
<AndroidSupportedAbis Condition=" '$(AndroidSupportedAbis)' == '' ">armeabi-v7a</AndroidSupportedAbis>
22+
<AndroidSupportedAbis Condition=" '$(AndroidSupportedAbis)' == '' ">host-$(HostOS),armeabi-v7a</AndroidSupportedAbis>
2223
<MonoSourceDirectory>$(MSBuildThisFileDirectory)external\mono</MonoSourceDirectory>
2324
<XamarinAndroidSourcePath>$(MSBuildThisFileDirectory)</XamarinAndroidSourcePath>
2425
</PropertyGroup>
26+
<PropertyGroup>
27+
<AndroidMxeFullPath>$([System.IO.Path]::GetFullPath ('$(AndroidMxeInstallPrefix)'))</AndroidMxeFullPath>
28+
</PropertyGroup>
2529
<!--
2630
"Fixup" $(AndroidSupportedAbis) so that Condition attributes elsewhere
2731
can use `,ABI-NAME,`, to avoid substring mismatches.

README.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,20 @@ Overridable MSBuild properties include:
4141
* `x86`
4242
* `x86_64`
4343

44-
The default value is `armeabi-v7a`.
44+
Addtionally there are a set of "host" values. The "host ABI" is used
45+
to build mono for the *currently executing operating system*, in
46+
particular to build the base class libraries such as `mscorlib.dll`.
47+
There can also be support for cross-compiling mono for a different
48+
host, e.g. to build Windows `libmonosgen-2.0.dll` from OS X.
49+
Supported host values include:
50+
51+
* `host-Darwin`
52+
* `host-Linux`
53+
* `host-win64`: Cross-compile Windows 64-bit binaries from Unix.
54+
55+
The default value is `host-$(HostOS);armeabi-v7a`, where `$(HostOS)`
56+
is based on probing various environment variables and filesystem locations.
57+
On OS X, the default would be `host-Darwin;armeabi-v7a`.
4558

4659
* `$(AndroidToolchainCacheDirectory)`: The directory to cache the downloaded
4760
Android NDK and SDK files. This value defaults to

build-tools/android-toolchain/android-toolchain.mdproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818
<BuildDependsOn>
1919
ResolveReferences;
2020
_CopyBootstrapTasksAssembly;
21+
_CheckForRequiredPrograms;
2122
_DownloadItems;
2223
_UnzipFiles;
2324
_CreateNdkToolchains;
25+
_CreateMxeToolchains;
2426
</BuildDependsOn>
2527
</PropertyGroup>
2628
<ItemGroup>

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

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,42 @@
6161
<Arch>x86_64</Arch>
6262
</_NdkToolchain>
6363
</ItemGroup>
64+
<ItemGroup>
65+
<_RequiredProgram Include="$(ManagedRuntime)" Condition=" '$(ManagedRuntime)' != '' " />
66+
<_RequiredProgram Include="$(HostCc)" />
67+
<_RequiredProgram Include="$(HostCxx)" />
68+
<_RequiredProgram Include="7za" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,'))">
69+
<Homebrew>p7zip</Homebrew>
70+
</_RequiredProgram>
71+
<_RequiredProgram Include="autoconf" />
72+
<_RequiredProgram Include="automake" />
73+
<_RequiredProgram Include="cmake" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,'))" />
74+
<_RequiredProgram Include="gdk-pixbuf-csource" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,'))">
75+
<Homebrew>gdk-pixbuf</Homebrew>
76+
</_RequiredProgram>
77+
<_RequiredProgram Include="gettext" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,'))" />
78+
<_RequiredProgram Include="glibtool" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,'))">
79+
<Homebrew>libtool</Homebrew>
80+
</_RequiredProgram>
81+
<_RequiredProgram Include="gsed" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,'))">
82+
<Homebrew>gnu-sed</Homebrew>
83+
</_RequiredProgram>
84+
<_RequiredProgram Include="intltoolize" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,'))">
85+
<Homebrew>intltool</Homebrew>
86+
</_RequiredProgram>
87+
<_RequiredProgram Include="make" />
88+
<_RequiredProgram Include="pkg-config" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,'))">
89+
<Homebrew>pkg-config</Homebrew>
90+
</_RequiredProgram>
91+
<_RequiredProgram Include="ruby" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,'))" />
92+
<_RequiredProgram Include="scons" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,'))">
93+
<Homebrew>scons</Homebrew>
94+
</_RequiredProgram>
95+
<_RequiredProgram Include="wget" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,'))">
96+
<Homebrew>wget</Homebrew>
97+
</_RequiredProgram>
98+
<_RequiredProgram Include="xz" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,'))">
99+
<Homebrew>xz</Homebrew>
100+
</_RequiredProgram>
101+
</ItemGroup>
64102
</Project>

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

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,22 @@
1212
<UsingTask AssemblyFile="$(OutputPath)\Xamarin.Android.Tools.BootstrapTasks.dll" TaskName="Xamarin.Android.Tools.BootstrapTasks.CreateTemporaryDirectory" />
1313
<UsingTask AssemblyFile="$(OutputPath)\Xamarin.Android.Tools.BootstrapTasks.dll" TaskName="Xamarin.Android.Tools.BootstrapTasks.DownloadUri" />
1414
<UsingTask AssemblyFile="$(OutputPath)\Xamarin.Android.Tools.BootstrapTasks.dll" TaskName="Xamarin.Android.Tools.BootstrapTasks.UnzipDirectoryChildren" />
15+
<UsingTask AssemblyFile="$(OutputPath)\Xamarin.Android.Tools.BootstrapTasks.dll" TaskName="Xamarin.Android.Tools.BootstrapTasks.Which" />
16+
<Target Name="_CheckForRequiredPrograms">
17+
<Which Program="%(_RequiredProgram.Identity)" Required="True" />
18+
<OnError ExecuteTargets="_PrintRequiredPrograms" />
19+
</Target>
20+
<Target Name="_PrintRequiredPrograms">
21+
<Error
22+
ContinueOnError="True"
23+
Text="The following programs are required: @(_RequiredProgram->'%(Identity)', ' ')"
24+
/>
25+
<Error
26+
Condition=" '$(HostOS)' == 'Darwin' "
27+
ContinueOnError="True"
28+
Text="Please try running: brew install @(_RequiredProgram->'%(Homebrew)', ' ')`"
29+
/>
30+
</Target>
1531
<Target Name="_DetermineItems">
1632
<CreateItem
1733
Include="@(AndroidSdkItem)"
@@ -95,4 +111,34 @@
95111
Importance="High"
96112
/>
97113
</Target>
114+
<Target Name="_SetMxeToolchainMakefileTimeToLastCommitTimestamp"
115+
Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,')) Or $(AndroidSupportedAbisForConditionalChecks.Contains (',host-win32,'))">
116+
<Exec
117+
Command="touch -m -t `git log -1 --format=%25cd --date=format-local:%25Y%25m%25d%25H%25M.%25S` Makefile"
118+
WorkingDirectory="..\..\external\mxe"
119+
/>
120+
</Target>
121+
<Target Name="_CreateMxeW32Toolchain"
122+
DependsOnTargets="_SetMxeToolchainMakefileTimeToLastCommitTimestamp"
123+
Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,'))"
124+
Inputs="..\..\external\mxe\Makefile"
125+
Outputs="$(AndroidMxeFullPath)\bin\i686-w64-mingw32.static-gcc">
126+
<Exec
127+
Command="make $(MAKEFLAGS) MXE_TARGETS=&quot;i686-w64-mingw32.static&quot; gcc PREFIX=&quot;$(AndroidMxeFullPath)&quot;"
128+
WorkingDirectory="..\..\external\mxe"
129+
/>
130+
</Target>
131+
<Target Name="_CreateMxeW64Toolchain"
132+
DependsOnTargets="_SetMxeToolchainMakefileTimeToLastCommitTimestamp"
133+
Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,'))"
134+
Inputs="..\..\external\mxe\Makefile"
135+
Outputs="$(AndroidMxeFullPath)\bin\x86_64-w64-mingw32.static-gcc">
136+
<Exec
137+
Command="make $(MAKEFLAGS) MXE_TARGETS=&quot;x86_64-w64-mingw32.static&quot; gcc PREFIX=&quot;$(AndroidMxeFullPath)&quot;"
138+
WorkingDirectory="..\..\external\mxe"
139+
/>
140+
</Target>
141+
<Target Name="_CreateMxeToolchains"
142+
DependsOnTargets="_CreateMxeW32Toolchain;_CreateMxeW64Toolchain">
143+
</Target>
98144
</Project>

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

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<CxxCpp>$(_ArmCxxCpp) $(_ArmCppFlags)</CxxCpp>
1313
<Ld>$(_ArmLd)</Ld>
1414
<LdFlags>$(_ArmLdFlags)</LdFlags>
15+
<Objdump>$(_ArmObjdump)</Objdump>
1516
<RanLib>$(_ArmRanLib)</RanLib>
1617
<Strip>$(_ArmStrip)</Strip>
1718
<ConfigureFlags>--host=armv5-linux-androideabi $(_TargetConfigureFlags)</ConfigureFlags>
@@ -31,6 +32,7 @@
3132
<CxxCpp>$(_ArmCxxCpp) $(_ArmCppFlags)</CxxCpp>
3233
<Ld>$(_ArmLd)</Ld>
3334
<LdFlags>$(_ArmLdFlags)</LdFlags>
35+
<Objdump>$(_ArmObjdump)</Objdump>
3436
<RanLib>$(_ArmRanLib)</RanLib>
3537
<Strip>$(_ArmStrip)</Strip>
3638
<ConfigureFlags>--host=armv5-linux-androideabi $(_TargetConfigureFlags)</ConfigureFlags>
@@ -50,6 +52,7 @@
5052
<CxxCpp>$(_Arm64CxxCpp) $(_Arm64CppFlags)</CxxCpp>
5153
<Ld>$(_Arm64Ld)</Ld>
5254
<LdFlags>$(_Arm64LdFlags)</LdFlags>
55+
<Objdump>$(_Arm64Objdump)</Objdump>
5356
<RanLib>$(_Arm64RanLib)</RanLib>
5457
<Strip>$(_Arm64Strip)</Strip>
5558
<ConfigureFlags>--host=aarch64-linux-android $(_TargetConfigureFlags)</ConfigureFlags>
@@ -69,6 +72,7 @@
6972
<CxxCpp>$(_X86CxxCpp) $(_X86CppFlags)</CxxCpp>
7073
<Ld>$(_X86Ld)</Ld>
7174
<LdFlags>$(_X86LdFlags)</LdFlags>
75+
<Objdump>$(_X86Objdump)</Objdump>
7276
<RanLib>$(_X86RanLib)</RanLib>
7377
<Strip>$(_X86Strip)</Strip>
7478
<ConfigureFlags>--host=i686-linux-android $(_TargetConfigureFlags)</ConfigureFlags>
@@ -89,14 +93,36 @@
8993
<Ld>$(_X86_64Ld)</Ld>
9094
<LdFlags>$(_X86_64LdFlags)</LdFlags>
9195
<RanLib>$(_X86_64RanLib)</RanLib>
96+
<Objdump>$(_X86_64Objdump)</Objdump>
9297
<Strip>$(_X86_64Strip)</Strip>
9398
<ConfigureFlags>--host=x86_64-linux-android $(_TargetConfigureFlags)</ConfigureFlags>
9499
<OutputRuntimeFilename>libmonosgen-2.0</OutputRuntimeFilename>
95100
<NativeLibraryExtension>so</NativeLibraryExtension>
96101
<OutputProfilerFilename>libmono-profiler-log</OutputProfilerFilename>
97102
<OutputMonoPosixHelperFilename>libMonoPosixHelper</OutputMonoPosixHelperFilename>
98103
</_MonoRuntime>
99-
<_MonoRuntime Include="host-Darwin" Condition=" '$(HostOS)' == 'Darwin' ">
104+
<_MonoRuntime Include="host-Win64" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-win64,'))">
105+
<Ar>$(AndroidMxeFullPath)\bin\x86_64-w64-mingw32.static-ar</Ar>
106+
<As>$(AndroidMxeFullPath)\bin\x86_64-w64-mingw32.static-as</As>
107+
<Cc>$(AndroidMxeFullPath)\bin\x86_64-w64-mingw32.static-gcc</Cc>
108+
<Cpp></Cpp>
109+
<CFlags>$(_HostWin64CFlags)</CFlags>
110+
<Cxx>$(AndroidMxeFullPath)\bin\x86_64-w64-mingw32.static-g++</Cxx>
111+
<CxxFlags>$(_HostWin64CFlags)</CxxFlags>
112+
<CxxCpp></CxxCpp>
113+
<DllTool>$(AndroidMxeFullPath)\bin\x86_64-w64-mingw32.static-dlltool</DllTool>
114+
<Ld>$(AndroidMxeFullPath)\bin\x86_64-w64-mingw32.static-ld</Ld>
115+
<LdFlags></LdFlags>
116+
<Objdump>$(AndroidMxeFullPath)\bin\x86_64-w64-mingw32.static-objdump</Objdump>
117+
<RanLib>$(AndroidMxeFullPath)\bin\x86_64-w64-mingw32.static-ranlib</RanLib>
118+
<Strip>$(AndroidMxeFullPath)\bin\x86_64-w64-mingw32.static-strip</Strip>
119+
<ConfigureFlags>PATH="$PATH:$(AndroidMxeFullPath)\bin" --host=x86_64-w64-mingw32.static --target=x86_64-w64-mingw32.static --disable-boehm --enable-mcs-build=no --enable-nls=no --enable-maintainer-mode --with-monodroid --disable-llvm</ConfigureFlags>
120+
<NativeLibraryExtension>dll</NativeLibraryExtension>
121+
<OutputRuntimeFilename>libmonosgen-2.0</OutputRuntimeFilename>
122+
<OutputProfilerFilename></OutputProfilerFilename>
123+
<OutputMonoPosixHelperFilename>libMonoPosixHelper</OutputMonoPosixHelperFilename>
124+
</_MonoRuntime>
125+
<_MonoRuntime Include="host-Darwin" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-Darwin,'))">
100126
<Ar>ar</Ar>
101127
<As>as</As>
102128
<Cc>$(HostCc)</Cc>
@@ -114,7 +140,7 @@
114140
<OutputProfilerFilename>libmono-profiler-log</OutputProfilerFilename>
115141
<OutputMonoPosixHelperFilename>libMonoPosixHelper</OutputMonoPosixHelperFilename>
116142
</_MonoRuntime>
117-
<_MonoRuntime Include="host-Linux" Condition=" '$(HostOS)' == 'Linux' ">
143+
<_MonoRuntime Include="host-Linux" Condition="$(AndroidSupportedAbisForConditionalChecks.Contains (',host-Linux,'))">
118144
<Ar>ar</Ar>
119145
<As>as</As>
120146
<Cc>$(HostCc)</Cc>

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
<PropertyGroup>
44
<_CommonCFlags Condition=" '$(Configuration)' == 'Debug' ">-ggdb3 -O0 -fno-omit-frame-pointer</_CommonCFlags>
55
<_CommonCFlags Condition=" '$(Configuration)' == 'Release' ">-g -O2</_CommonCFlags>
6+
<_HostWinCFlags Condition=" '$(Configuration)' == 'Debug' ">-ggdb3 -O0 -DXAMARIN_PRODUCT_VERSION=0</_HostWinCFlags>
7+
<_HostWinCFlags Condition=" '$(Configuration)' == 'Release' ">-g -O2 -DXAMARIN_PRODUCT_VERSION=0</_HostWinCFlags>
68
<_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>
79
<_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>
810
<_SecurityCFlags>-Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack -fstack-protector</_SecurityCFlags>
@@ -23,6 +25,7 @@
2325
<_ArmCxxCpp>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-cpp</_ArmCxxCpp>
2426
<_ArmLd>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-ld</_ArmLd>
2527
<_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>
28+
<_ArmObjdump>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-objdump</_ArmObjdump>
2629
<_ArmRanLib>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-ranlib</_ArmRanLib>
2730
<_ArmStrip>$(AndroidToolchainDirectory)\toolchains\arm-linux-androideabi-clang\bin\arm-linux-androideabi-strip</_ArmStrip>
2831
</PropertyGroup>
@@ -39,6 +42,7 @@
3942
<_Arm64CxxCpp>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-cpp</_Arm64CxxCpp>
4043
<_Arm64Ld>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-ld</_Arm64Ld>
4144
<_Arm64LdFlags>$(_TargetLdFlags) -Wl,-rpath-link=$(_Arm64NdkPlatformPath)\arch-arm64\usr\lib,-dynamic-linker=/system/bin/linker -L$(_Arm64NdkPlatformPath)\arch-arm64\usr\lib</_Arm64LdFlags>
45+
<_Arm64Objdump>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-objdump</_Arm64Objdump>
4246
<_Arm64RanLib>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-ranlib</_Arm64RanLib>
4347
<_Arm64Strip>$(AndroidToolchainDirectory)\toolchains\aarch64-linux-android-clang\bin\aarch64-linux-android-strip</_Arm64Strip>
4448
</PropertyGroup>
@@ -55,6 +59,7 @@
5559
<_X86CxxCpp>$(AndroidToolchainDirectory)\toolchains\x86-clang\bin\i686-linux-android-cpp</_X86CxxCpp>
5660
<_X86Ld>$(AndroidToolchainDirectory)\toolchains\x86-clang\bin\i686-linux-android-ld</_X86Ld>
5761
<_X86LdFlags>$(_TargetLdFlags) -Wl,-rpath-link=$(_X86NdkPlatformPath)\arch-x86\usr\lib,-dynamic-linker=/system/bin/linker -L$(_X86NdkPlatformPath)\arch-x86\usr\lib</_X86LdFlags>
62+
<_X86Objdump>$(AndroidToolchainDirectory)\toolchains\x86-clang\bin\i686-linux-android-objdump</_X86Objdump>
5863
<_X86RanLib>$(AndroidToolchainDirectory)\toolchains\x86-clang\bin\i686-linux-android-ranlib</_X86RanLib>
5964
<_X86Strip>$(AndroidToolchainDirectory)\toolchains\x86-clang\bin\i686-linux-android-strip</_X86Strip>
6065
</PropertyGroup>
@@ -71,7 +76,11 @@
7176
<_X86_64CxxCpp>$(AndroidToolchainDirectory)\toolchains\x86_64-clang\bin\x86_64-linux-android-cpp</_X86_64CxxCpp>
7277
<_X86_64Ld>$(AndroidToolchainDirectory)\toolchains\x86_64-clang\bin\x86_64-linux-android-ld</_X86_64Ld>
7378
<_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>
79+
<_X86_64Objdump>$(AndroidToolchainDirectory)\toolchains\x86_64-clang\bin\x86_64-linux-android-objdump</_X86_64Objdump>
7480
<_X86_64RanLib>$(AndroidToolchainDirectory)\toolchains\x86_64-clang\bin\x86_64-linux-android-ranlib</_X86_64RanLib>
7581
<_X86_64Strip>$(AndroidToolchainDirectory)\toolchains\x86_64-clang\bin\x86_64-linux-android-strip</_X86_64Strip>
7682
</PropertyGroup>
83+
<PropertyGroup>
84+
<_HostWin64CFlags>$(_HostWinCFlags)</_HostWin64CFlags>
85+
</PropertyGroup>
7786
</Project>

0 commit comments

Comments
 (0)