|
|
|
@ -12,8 +12,6 @@
|
|
|
|
|
</ItemGroup>
|
|
|
|
|
|
|
|
|
|
<PropertyGroup>
|
|
|
|
|
<XenkoNativeAndroidGCC>-nostdlib -ldl -lstdc++ -lc -lm</XenkoNativeAndroidGCC>
|
|
|
|
|
|
|
|
|
|
<!--Use "-v" to debug the tooling -->
|
|
|
|
|
<XenkoNativeToolingDebug></XenkoNativeToolingDebug>
|
|
|
|
|
|
|
|
|
@ -196,39 +194,42 @@
|
|
|
|
|
<Delete Files="@(XenkoNativePathLibs2->'$(XenkoNativeOutputPath)\%(Filename).a', ' ')" />
|
|
|
|
|
</Target>
|
|
|
|
|
|
|
|
|
|
<!-- RELEASE.TXT does not seem to exist anymore
|
|
|
|
|
<PropertyGroup Condition="Exists('$(AndroidNdkDirectory)\RELEASE.TXT')">
|
|
|
|
|
<XenkoNativeAndroidIs64Bit Condition="'$([System.Text.RegularExpressions.Regex]::Match($([System.IO.File]::ReadAllText(`$(AndroidNdkDirectory)\RELEASE.TXT`)), `r\d\d\w?\s\(64-bit\)`).Success)' == 'true'">-x86_64</XenkoNativeAndroidIs64Bit>
|
|
|
|
|
<XenkoNativeAndroidIs64Bit Condition="'$([System.Text.RegularExpressions.Regex]::Match($([System.IO.File]::ReadAllText(`$(AndroidNdkDirectory)\RELEASE.TXT`)), `r\d\d\w?\s\(64-bit\)`).Success)' == 'false'"></XenkoNativeAndroidIs64Bit>
|
|
|
|
|
</PropertyGroup>
|
|
|
|
|
-->
|
|
|
|
|
|
|
|
|
|
<PropertyGroup>
|
|
|
|
|
<XenkoNativeAndroidIs64Bit>-x86_64</XenkoNativeAndroidIs64Bit>
|
|
|
|
|
</PropertyGroup>
|
|
|
|
|
|
|
|
|
|
<Target Name="CompileNativeClang_Android" Inputs="@(XenkoNativeCFile);@(XenkoNativeHFile)" Outputs="@(XenkoNativeOutput)" Condition="'$(XenkoPlatform)' == 'Android' And $(DesignTimeBuild) != true And $(BuildingProject) != false" BeforeTargets="CoreCompile" DependsOnTargets="_XenkoRegisterNativeOutputs">
|
|
|
|
|
<Error Text="The AndroidNdkDirectory environment variable is not set!" Condition="'$(AndroidNdkDirectory)' == ''" />
|
|
|
|
|
<PropertyGroup>
|
|
|
|
|
<XenkoNativeAndroidClang>-lc++abi -lm --sysroot="$(AndroidNdkDirectory)\toolchains\llvm\prebuilt\windows-x86_64\sysroot"</XenkoNativeAndroidClang>
|
|
|
|
|
|
|
|
|
|
<_XenkoNativeAndroidNdkSourceProperties Condition="Exists('$(AndroidNdkDirectory)\source.properties')">$([System.IO.File]::ReadAllText('$(AndroidNdkDirectory)\source.properties'))</_XenkoNativeAndroidNdkSourceProperties>
|
|
|
|
|
<XenkoNativeAndroidNdkVersion>$([System.Text.RegularExpressions.Regex]::Match($(_XenkoNativeAndroidNdkSourceProperties), `Pkg\.Revision = (.*)`).Groups[1].Value)</XenkoNativeAndroidNdkVersion>
|
|
|
|
|
<XenkoNativeAndroidNdkVersionMinimum>19.0</XenkoNativeAndroidNdkVersionMinimum>
|
|
|
|
|
|
|
|
|
|
<!-- Try to guess Android SDK version from build parameters, otherwise fallback to 27 (8.1) -->
|
|
|
|
|
<XenkoNativeAndroidPlatformVersion Condition="'$(_AndroidApiLevel)' != ''">$(_AndroidApiLevel)</XenkoNativeAndroidPlatformVersion>
|
|
|
|
|
<XenkoNativeAndroidPlatformVersion Condition="'$(XenkoNativeAndroidPlatformVersion)' == ''">27</XenkoNativeAndroidPlatformVersion>
|
|
|
|
|
</PropertyGroup>
|
|
|
|
|
|
|
|
|
|
<Error Condition="'$(XenkoNativeAndroidNdkVersion)' == ''" Text="Could not figure out Android NDK version from $(AndroidNdkDirectory). There should be a source.properties file with Pkg.Revision properly set." />
|
|
|
|
|
<Error Condition="$([System.Version]::Parse('$(XenkoNativeAndroidNdkVersionMinimum)').CompareTo($([System.Version]::Parse('$(XenkoNativeAndroidNdkVersion)')))) >= 0" Text="The Android NDK version is too old. Found: $(XenkoNativeAndroidNdkVersion), Expected: $(XenkoNativeAndroidNdkVersionMinimum), Location: $(AndroidNdkDirectory)" />
|
|
|
|
|
|
|
|
|
|
<MakeDir Directories="$(XenkoNativeOutputPath)\armeabi-v7a"/>
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' != '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_armeabi-v7a.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -target armv7-none-android" />
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' == '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClangCPP) $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_armeabi-v7a.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -target armv7-none-android" />
|
|
|
|
|
<Exec Command=""$(AndroidNdkDirectory)\toolchains\arm-linux-androideabi-4.9\prebuilt\windows$(XenkoNativeAndroidIs64Bit)\bin\arm-linux-androideabi-gcc.exe" $(XenkoNativeToolingDebug) -shared -o "$(XenkoNativeOutputPath)\armeabi-v7a\$(XenkoNativeOutputName)$(XenkoNativeLibraryTargetExt)" @(XenkoNativeCFile->'"$(OutputObjectPath)\%(Filename)_armeabi-v7a.o"', ' ') --sysroot="$(AndroidNdkDirectory)\platforms\android-9\arch-arm" @(XenkoNativePathLibs2->'"$(XenkoDependenciesDir)\NativePath\Android\armeabi-v7a\%(Filename).a"', ' ') "$(XenkoDependenciesDir)\NativePath\Android\armeabi-v7a\libNativePath.a" $(XenkoNativeAndroidGCC)" />
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' != '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_armeabi-v7a.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -fPIC --target=armv7-linux-android$(XenkoNativeAndroidPlatformVersion)" />
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' == '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClangCPP) $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_armeabi-v7a.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -fPIC --target=armv7-linux-android$(XenkoNativeAndroidPlatformVersion)" />
|
|
|
|
|
<Exec Command=""$(AndroidNdkDirectory)\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe" $(XenkoNativeToolingDebug) -shared -o "$(XenkoNativeOutputPath)\armeabi-v7a\$(XenkoNativeOutputName)$(XenkoNativeLibraryTargetExt)" @(XenkoNativeCFile->'"$(OutputObjectPath)\%(Filename)_armeabi-v7a.o"', ' ') --sysroot="$(AndroidNdkDirectory)\platforms\android-9\arch-arm" @(XenkoNativePathLibs2->'"$(XenkoDependenciesDir)\NativePath\Android\armeabi-v7a\%(Filename).a"', ' ') "$(XenkoDependenciesDir)\NativePath\Android\armeabi-v7a\libNativePath.a" $(XenkoNativeAndroidClang) --target=armv7-linux-android$(XenkoNativeAndroidPlatformVersion)" />
|
|
|
|
|
|
|
|
|
|
<MakeDir Directories="$(XenkoNativeOutputPath)\arm64-v8a"/>
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' != '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_arm64-v8a.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -target aarch64-none-android" />
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' == '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClangCPP) $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_arm64-v8a.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -target aarch64-none-android" />
|
|
|
|
|
<Exec Command=""$(AndroidNdkDirectory)\toolchains\aarch64-linux-android-4.9\prebuilt\windows$(XenkoNativeAndroidIs64Bit)\bin\aarch64-linux-android-gcc.exe" $(XenkoNativeToolingDebug) -shared -o "$(XenkoNativeOutputPath)\arm64-v8a\$(XenkoNativeOutputName)$(XenkoNativeLibraryTargetExt)" @(XenkoNativeCFile->'"$(OutputObjectPath)\%(Filename)_arm64-v8a.o"', ' ') --sysroot="$(AndroidNdkDirectory)\platforms\android-21\arch-arm64" @(XenkoNativePathLibs2->'"$(XenkoDependenciesDir)\NativePath\Android\arm64-v8a\%(Filename).a"', ' ') "$(XenkoDependenciesDir)\NativePath\Android\arm64-v8a\libNativePath.a" $(XenkoNativeAndroidGCC)" />
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' != '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_arm64-v8a.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -fPIC --target=aarch64-linux-android$(XenkoNativeAndroidPlatformVersion)" />
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' == '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClangCPP) $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_arm64-v8a.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -fPIC --target=aarch64-linux-android$(XenkoNativeAndroidPlatformVersion)" />
|
|
|
|
|
<Exec Command=""$(AndroidNdkDirectory)\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe" $(XenkoNativeToolingDebug) -shared -o "$(XenkoNativeOutputPath)\arm64-v8a\$(XenkoNativeOutputName)$(XenkoNativeLibraryTargetExt)" @(XenkoNativeCFile->'"$(OutputObjectPath)\%(Filename)_arm64-v8a.o"', ' ') --sysroot="$(AndroidNdkDirectory)\platforms\android-21\arch-arm64" @(XenkoNativePathLibs2->'"$(XenkoDependenciesDir)\NativePath\Android\arm64-v8a\%(Filename).a"', ' ') "$(XenkoDependenciesDir)\NativePath\Android\arm64-v8a\libNativePath.a" $(XenkoNativeAndroidClang) --target=aarch64-linux-android$(XenkoNativeAndroidPlatformVersion)" />
|
|
|
|
|
|
|
|
|
|
<MakeDir Directories="$(XenkoNativeOutputPath)\x86"/>
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' != '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_x86.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -target i386-none-android" />
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' == '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClangCPP) $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_x86.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -target i386-none-android" />
|
|
|
|
|
<Exec Command=""$(AndroidNdkDirectory)\toolchains\x86-4.9\prebuilt\windows$(XenkoNativeAndroidIs64Bit)\bin\i686-linux-android-gcc.exe" $(XenkoNativeToolingDebug) -shared -o "$(XenkoNativeOutputPath)\x86\$(XenkoNativeOutputName)$(XenkoNativeLibraryTargetExt)" @(XenkoNativeCFile->'"$(OutputObjectPath)\%(Filename)_x86.o"', ' ') --sysroot="$(AndroidNdkDirectory)\platforms\android-9\arch-x86" @(XenkoNativePathLibs2->'"$(XenkoDependenciesDir)\NativePath\Android\x86\%(Filename).a"', ' ') "$(XenkoDependenciesDir)\NativePath\Android\x86\libNativePath.a" $(XenkoNativeAndroidGCC)" />
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' != '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_x86.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -fPIC --target=i386-linux-android$(XenkoNativeAndroidPlatformVersion)" />
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' == '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClangCPP) $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_x86.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -fPIC --target=i386-linux-android$(XenkoNativeAndroidPlatformVersion)" />
|
|
|
|
|
<Exec Command=""$(AndroidNdkDirectory)\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe" $(XenkoNativeToolingDebug) -shared -o "$(XenkoNativeOutputPath)\x86\$(XenkoNativeOutputName)$(XenkoNativeLibraryTargetExt)" @(XenkoNativeCFile->'"$(OutputObjectPath)\%(Filename)_x86.o"', ' ') --sysroot="$(AndroidNdkDirectory)\platforms\android-9\arch-x86" @(XenkoNativePathLibs2->'"$(XenkoDependenciesDir)\NativePath\Android\x86\%(Filename).a"', ' ') "$(XenkoDependenciesDir)\NativePath\Android\x86\libNativePath.a" $(XenkoNativeAndroidClang) --target=i386-linux-android$(XenkoNativeAndroidPlatformVersion)" />
|
|
|
|
|
|
|
|
|
|
<MakeDir Directories="$(XenkoNativeOutputPath)\x86_64"/>
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' != '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_x86_64.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -target x86_64-none-android" />
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' == '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClangCPP) $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_x86_64.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -target x86_64-none-android" />
|
|
|
|
|
<Exec Command=""$(AndroidNdkDirectory)\toolchains\x86_64-4.9\prebuilt\windows$(XenkoNativeAndroidIs64Bit)\bin\x86_64-linux-android-gcc.exe" $(XenkoNativeToolingDebug) -shared -o "$(XenkoNativeOutputPath)\x86_64\$(XenkoNativeOutputName)$(XenkoNativeLibraryTargetExt)" @(XenkoNativeCFile->'"$(OutputObjectPath)\%(Filename)_x86_64.o"', ' ') --sysroot="$(AndroidNdkDirectory)\platforms\android-21\arch-x86_64" @(XenkoNativePathLibs2->'"$(XenkoDependenciesDir)\NativePath\Android\x86_64\%(Filename).a"', ' ') "$(XenkoDependenciesDir)\NativePath\Android\x86_64\libNativePath.a" $(XenkoNativeAndroidGCC)" />
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' != '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_x86_64.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -fPIC --target=x86_64-linux-android$(XenkoNativeAndroidPlatformVersion)" />
|
|
|
|
|
<Exec Condition="'%(XenkoNativeCFile.Extension)' == '.cpp'" Command=""$(XenkoDependenciesDir)\LLVM\clang.exe" $(XenkoNativeClangCPP) $(XenkoNativeClang) -o "$(OutputObjectPath)\%(XenkoNativeCFile.Filename)_x86_64.o" -c "%(XenkoNativeCFile.FullPath)" -DANDROID -fPIC --target=x86_64-linux-android$(XenkoNativeAndroidPlatformVersion)" />
|
|
|
|
|
<Exec Command=""$(AndroidNdkDirectory)\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe" $(XenkoNativeToolingDebug) -shared -o "$(XenkoNativeOutputPath)\x86_64\$(XenkoNativeOutputName)$(XenkoNativeLibraryTargetExt)" @(XenkoNativeCFile->'"$(OutputObjectPath)\%(Filename)_x86_64.o"', ' ') --sysroot="$(AndroidNdkDirectory)\platforms\android-21\arch-x86_64" @(XenkoNativePathLibs2->'"$(XenkoDependenciesDir)\NativePath\Android\x86_64\%(Filename).a"', ' ') "$(XenkoDependenciesDir)\NativePath\Android\x86_64\libNativePath.a" $(XenkoNativeAndroidClang) --target=x86_64-linux-android$(XenkoNativeAndroidPlatformVersion)" />
|
|
|
|
|
|
|
|
|
|
<!-- Workaround: forcing C# rebuild so that timestamp are up to date (ideally we should have separate input/output groups for C# and Native) -->
|
|
|
|
|
<Delete Files="@(IntermediateAssembly)"/>
|
|
|
|
|