forked from LeenkxTeam/LNXSDK
214 lines
8.8 KiB
XML
214 lines
8.8 KiB
XML
<xml>
|
|
|
|
<!-- Android TOOLS -------------------------------------->
|
|
<!--
|
|
Configure build via variables, otherwise defaults will be used:
|
|
Set the path to the exact ndk to use with ANDROID_NDK_ROOT,
|
|
or set where all your ndks are installed with ANDROID_NDK_DIR and hxcpp will guess.
|
|
Set the version number by setting the variable:
|
|
NDKV?? - base version of ndk to use, hxcpp will find the letter, like "NDKV10" -> may end up with "10c"
|
|
TOOLCHAIN_VERSION - the compiler number, like "4.8" or "4.4.3"
|
|
PLATFORM - the android platform api level, like "android-19"
|
|
- you can also set the variable "android-19" directly
|
|
-->
|
|
|
|
<set name="HXCPP_CPP11" value="1" if="NDKV9+ || NDKV10+" unless="HXCPP_NO_CPP11" />
|
|
|
|
|
|
<!-- Set architecture -->
|
|
<section if="HXCPP_X86">
|
|
<set name="ARCH" value="-x86" />
|
|
<set name="ABI" value="x86" />
|
|
<set name="PLATFORM_ARCH" value="arch-x86" />
|
|
<set name="TOOLCHAIN" value="x86-${TOOLCHAIN_VERSION}" />
|
|
<set name="EXEPREFIX" value="i686-linux-android" />
|
|
<set name="PLATFORM" value="android-14" unless="PLATFORM" />
|
|
</section>
|
|
|
|
<section unless="HXCPP_X86">
|
|
<set name="ARCH" value="-v7" if="HXCPP_ARMV7" />
|
|
<set name="ABI" value="armeabi" />
|
|
<set name="PLATFORM_ARCH" value="arch-arm" />
|
|
<set name="TOOLCHAIN" value="arm-linux-androideabi-${TOOLCHAIN_VERSION}" />
|
|
<set name="EXEPREFIX" value="arm-linux-androideabi" />
|
|
<set name="PLATFORM" value="android-5" unless="PLATFORM" />
|
|
</section>
|
|
|
|
<section if="HXCPP_ARM64">
|
|
<set name="ARCH" value="-64"/>
|
|
<set name="ABI" value="arm64-v8a" />
|
|
<set name="PLATFORM_ARCH" value="arch-arm64" />
|
|
<set name="TOOLCHAIN" value="aarch64-linux-android-${TOOLCHAIN_VERSION}" />
|
|
<set name="EXEPREFIX" value="aarch64-linux-android" />
|
|
<set name="PLATFORM" value="android-19" unless="PLATFORM" />
|
|
</section>
|
|
|
|
<set name="prebuiltBase" value="${ANDROID_NDK_ROOT}/toolchains/${TOOLCHAIN}/prebuilt/${ANDROID_HOST}" />
|
|
|
|
<path name="${prebuiltBase}/bin" />
|
|
|
|
<set name="HXCPP_AR" value="${EXEPREFIX}-ar" />
|
|
|
|
<include name="toolchain/gcc-toolchain.xml"/>
|
|
|
|
<compiler id="android-gcc" exe="g++">
|
|
|
|
<exe name="${EXEPREFIX}-g++" />
|
|
|
|
<!-- These must appear in this order! -->
|
|
<flag value="--sysroot=${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/${PLATFORM_ARCH}"/>
|
|
<section if="NDKV8+">
|
|
<flag value="-I${ANDROID_NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/${TOOLCHAIN_VERSION}/include" />
|
|
<flag value="-I${ANDROID_NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/${TOOLCHAIN_VERSION}/libs/${ABI}/include" />
|
|
</section>
|
|
<section unless="NDKV8+">
|
|
<flag value="-I${ANDROID_NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/libs/${ABI}/include" />
|
|
<flag value="-I${ANDROID_NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/include" />
|
|
</section>
|
|
|
|
<include name="toolchain/common-defines.xml" />
|
|
<flag value="-flto" if="HXCPP_OPTIMIZE_LINK" unless="debug"/>
|
|
<flag value="-I${HXCPP}/include"/>
|
|
<flag value="-Iinclude"/>
|
|
<flag value="-fpic"/>
|
|
<flag value="-fvisibility=hidden"/>
|
|
<flag value="-ffunction-sections"/>
|
|
<flag value="-funwind-tables"/>
|
|
<flag value="-fstack-protector"/>
|
|
<flag value="-fno-short-enums"/>
|
|
<flag value="-Wno-overflow" />
|
|
<cppflag value="-Wno-invalid-offsetof" />
|
|
<cppflag value="-frtti"/>
|
|
<flag value="-D_LINUX_STDDEF_H "/> <!-- Avoid compiler including 2 version of file -->
|
|
<flag value="-Wno-psabi" />
|
|
<cppflag value="-std=c++11" if="HXCPP_CPP11"/>
|
|
<flag value="-DHXCPP_CPP11" if="HXCPP_CPP11"/>
|
|
|
|
<section unless="HXCPP_X86">
|
|
|
|
<section if="HXCPP_ARM64">
|
|
<flag value="-DHXCPP_ARM64" />
|
|
</section>
|
|
<section if="HXCPP_ARMV7">
|
|
<flag value="-DHXCPP_ARMV7" />
|
|
<flag value="-march=armv7-a" />
|
|
<flag value="-mfpu=vfpv3-d16" />
|
|
<flag value="-mfloat-abi=softfp" />
|
|
</section>
|
|
<section unless="HXCPP_ARMV7 || HXCPP_ARM64">
|
|
<flag value="-DHXCPP_ARMV5" />
|
|
<flag value="-D__ARM_ARCH_5__"/>
|
|
<flag value="-D__ARM_ARCH_5T__"/>
|
|
<flag value="-D__ARM_ARCH_5E__"/>
|
|
<flag value="-D__ARM_ARCH_5TE__"/>
|
|
<flag value="-march=armv5te" />
|
|
<flag value="-mtune=xscale" />
|
|
<flag value="-msoft-float" />
|
|
</section>
|
|
</section>
|
|
<section if="HXCPP_X86">
|
|
<flag value="-DANDROID_X86"/>
|
|
</section>
|
|
|
|
|
|
<flag value="-fomit-frame-pointer"/>
|
|
<flag value="-fexceptions"/>
|
|
<flag value="-fno-strict-aliasing"/>
|
|
<flag value="-finline-limit=10000"/>
|
|
<flag value="-DANDROID=ANDROID"/>
|
|
<flag value="-DHX_ANDROID"/>
|
|
<flag value="-D${ANDROID_PLATFORM_DEFINE}"/>
|
|
<!-- todo <flag value="-Werror"/> -->
|
|
<flag value="-Wa,--noexecstack"/>
|
|
<flag value="-O2" unless="debug || HXCPP_OPTIMIZE_FOR_SIZE || HXCPP_OPTIMIZE_FOR_FAST"/>
|
|
<section if="HXCPP_OPTIMIZE_FOR_SIZE" unless="debug || HXCPP_OPTIMIZE_FOR_FAST">
|
|
<!-- see https://software.intel.com/en-us/blogs/2013/01/17/x86-gcc-code-size-optimizations -->
|
|
<flag value="-Os" />
|
|
<flag value="-fno-asynchronous-unwind-tables" />
|
|
</section>
|
|
<section if="HXCPP_OPTIMIZE_FOR_FAST" unless="debug">
|
|
<flag value="-Ofast" />
|
|
</section>
|
|
<flag value="-O0" if="debug"/>
|
|
<flag value="-g" if="HXCPP_DEBUG_LINK"/>
|
|
<flag value="-DNDEBUG"/>
|
|
<flag value="-DHXCPP_LOAD_DEBUG" if="HXCPP_LOAD_DEBUG"/>
|
|
<flag value="-c"/>
|
|
<outflag value="-o"/>
|
|
<ext value=".obj"/>
|
|
<objdir value="obj/android${OBJEXT}${ARCH}" />
|
|
</compiler>
|
|
|
|
|
|
<linker id="dll" exe="g++" >
|
|
|
|
<exe name="${EXEPREFIX}-g++" />
|
|
|
|
<ext value=".so"/>
|
|
<outflag value="-o"/>
|
|
<prefix value="lib"/>
|
|
|
|
<flag value="-frtti"/>
|
|
<flag value="-nostdlib"/>
|
|
<flag value="-std=c++11" if="HXCPP_CPP11"/>
|
|
<flag value="-Wl,-shared,-Bsymbolic"/>
|
|
<section if="HXCPP_OPTIMIZE_FOR_SIZE || HXCPP_GC_SECTIONS" unless="debug">
|
|
<flag value="-Wl,--gc-sections" />
|
|
</section>
|
|
<section if="HXCPP_STRIP_ALL" unless="debug || HXCPP_DEBUG_LINK">
|
|
<flag value="-Wl,--strip-all" unless="HXCPP_DEBUG_LINK"/>
|
|
</section>
|
|
<flag value="-Wl,--no-undefined" unless="dll_import" />
|
|
<flag value="-Wl,--unresolved-symbols=ignore-in-object-files" if="dll_import" />
|
|
<flag value="-Wl,-z,noexecstack"/>
|
|
<flag value="--sysroot=${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/${PLATFORM_ARCH}"/>
|
|
<flag value="-L${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/${PLATFORM_ARCH}/usr/lib"/>
|
|
|
|
<lib name="${ANDROID_NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/libs/${ABI}/libstdc++.a" if="NDKV6" unless="dll_import" />
|
|
<lib name="${ANDROID_NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/libs/${ABI}/libgnustl_static.a" if="NDKV7" unless="dll_import" />
|
|
<lib name="${ANDROID_NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/${TOOLCHAIN_VERSION}/libs/${ABI}/libgnustl_static.a" if="NDKV8+" unless="dll_import" />
|
|
|
|
<lib name="${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/${PLATFORM_ARCH}/usr/lib/crtbegin_so.o"/>
|
|
<lib name="${prebuiltBase}/lib/gcc/${EXEPREFIX}/${TOOLCHAIN_VERSION}/libgcc.a" unless="NDKV12+"/>
|
|
<lib name="${prebuiltBase}/lib/gcc/${EXEPREFIX}/${TOOLCHAIN_VERSION}.x/libgcc.a" if="NDKV12+"/>
|
|
<lib name="${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/${PLATFORM_ARCH}/usr/lib/libc.so"/>
|
|
<lib name="${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/${PLATFORM_ARCH}/usr/lib/libm.so"/>
|
|
<lib name="-llog"/>
|
|
<lib name="-ldl"/>
|
|
</linker>
|
|
|
|
|
|
|
|
<linker id="exe" exe="g++" >
|
|
|
|
<exe name="${EXEPREFIX}-g++" />
|
|
|
|
<ext value=""/>
|
|
<outflag value="-o"/>
|
|
<prefix value=""/>
|
|
|
|
<flag value="-frtti"/>
|
|
<flag value="-nostdlib"/>
|
|
<flag value="-std=c++11" if="HXCPP_CPP11"/>
|
|
<flag value="-Wl,--no-undefined" unless="dll_import" />
|
|
<flag value="-Wl,--unresolved-symbols=ignore-in-object-files" if="dll_import" />
|
|
<flag value="-Wl,-z,noexecstack"/>
|
|
<flag value="--sysroot=${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/${PLATFORM_ARCH}"/>
|
|
<flag value="-L${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/${PLATFORM_ARCH}/usr/lib"/>
|
|
|
|
<lib name="${ANDROID_NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/libs/${ABI}/libstdc++.a" if="NDKV6" unless="dll_import" />
|
|
<lib name="${ANDROID_NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/libs/${ABI}/libgnustl_static.a" if="NDKV7" unless="dll_import" />
|
|
<lib name="${ANDROID_NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/${TOOLCHAIN_VERSION}/libs/${ABI}/libgnustl_static.a" if="NDKV8+" unless="dll_import" />
|
|
|
|
<lib name="${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/${PLATFORM_ARCH}/usr/lib/crtbegin_static.o"/>
|
|
<lib name="${prebuiltBase}/lib/gcc/${EXEPREFIX}/${TOOLCHAIN_VERSION}/libgcc.a" unless="NDKV12+"/>
|
|
<lib name="${prebuiltBase}/lib/gcc/${EXEPREFIX}/${TOOLCHAIN_VERSION}.x/libgcc.a" if="NDKV12+"/>
|
|
<lib name="${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/${PLATFORM_ARCH}/usr/lib/libc.so"/>
|
|
<lib name="${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/${PLATFORM_ARCH}/usr/lib/libm.so"/>
|
|
<lib name="${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/${PLATFORM_ARCH}/usr/lib/crtend_android.o"/>
|
|
<lib name="-llog"/>
|
|
<lib name="-ldl"/>
|
|
</linker>
|
|
|
|
</xml>
|