X-Git-Url: https://git.distorted.org.uk/~mdw/termux-packages/blobdiff_plain/59ff7c032a792e709405134c4b1934335a518db8..f2344eab0f6a1a19f9d4be8a58252fedeea1cb2d:/build-package.sh diff --git a/build-package.sh b/build-package.sh index 4d51e051..79df22db 100755 --- a/build-package.sh +++ b/build-package.sh @@ -47,7 +47,7 @@ if [ "$TERMUX_CLANG" = "" ]; then else : ${TERMUX_STANDALONE_TOOLCHAIN:="$HOME/lib/android-standalone-toolchain-${TERMUX_ARCH}-api${TERMUX_API_LEVEL}-clang38"} fi -: ${TERMUX_ANDROID_BUILD_TOOLS_VERSION:="23.0.2"} +: ${TERMUX_ANDROID_BUILD_TOOLS_VERSION:="23.0.3"} # We do not put all of build-tools/$TERMUX_ANDROID_BUILD_TOOLS_VERSION/ into PATH # to avoid stuff like arm-linux-androideabi-ld there to conflict with ones from # the standalone toolchain. @@ -80,7 +80,7 @@ if [ "$TERMUX_CLANG" = "" ]; then export CXX=$TERMUX_HOST_PLATFORM-g++ _SPECSFLAG="-specs=$TERMUX_SCRIPTDIR/termux.spec" else - export AS=${TERMUX_HOST_PLATFORM}-clang + export AS=${TERMUX_HOST_PLATFORM}-gcc export CC=$TERMUX_HOST_PLATFORM-clang export CXX=$TERMUX_HOST_PLATFORM-clang++ # TODO: clang does not have specs file, how to ensure pie @@ -102,19 +102,11 @@ export CFLAGS="$_SPECSFLAG" export LDFLAGS="$_SPECSFLAG -L${TERMUX_PREFIX}/lib" if [ "$TERMUX_ARCH" = "arm" ]; then - # For hard support: http://blog.alexrp.com/2014/02/18/android-hard-float-support/ - # "First, to utilize the hard float ABI, you must either compile every last component of your application - # as hard float (the -mhard-float GCC/Clang switch), or mark individual functions with the appropriate - # __attribute__ to indicate the desired ABI. For example, to mark a function so that it’s called with the - # soft float ABI, stick __attribute__((pcs("aapcs"))) on it. - # Note that the NDK will link to a libm which uses the aforementioned attribute on all of its functions. - # This means that if you use libm functions a lot, you’re not likely to get much of a boost in those places. - # The way to fix this is to add -mhard-float -D_NDK_MATH_NO_SOFTFP=1 to your GCC/Clang command line. Then - # add -lm_hard to your linker command line (or -Wl,-lm_hard if you just invoke GCC/Clang to link). This will - # make your application link statically to a libm compiled for the hard float ABI. The only downside of this - # is that your application will increase somewhat in size." - CFLAGS+=" -march=armv7-a -mfpu=neon -mhard-float -Wl,--no-warn-mismatch" - LDFLAGS+=" -march=armv7-a -Wl,--no-warn-mismatch" + CFLAGS+=" -march=armv7-a -mfpu=neon -mfloat-abi=softfp" + # "first flag instructs the linker to pick libgcc.a, libgcov.a, and + # crt*.o, which are tailored for armv7-a" + # - https://developer.android.com/ndk/guides/standalone_toolchain.html + LDFLAGS+=" -march=armv7-a -Wl,--fix-cortex-a8" elif [ $TERMUX_ARCH = "i686" ]; then # From $NDK/docs/CPU-ARCH-ABIS.html: CFLAGS+=" -march=i686 -msse3 -mstackrealign -mfpmath=sse" @@ -164,10 +156,9 @@ if [ ! -d $TERMUX_STANDALONE_TOOLCHAIN ]; then patch -p1; echo "PATCHING FILE $f done!" done - # sha1.h was removed from android ndk for platforms above 19, but needed by the aapt package - # JNIHelp.h is also used by aapt - # sysexits.h is header-only and used by some unix code - cp $TERMUX_SCRIPTDIR/ndk_patches/{sha1.h,sysexits.h} $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/include + # elf.h is taken from glibc since the elf.h in the NDK is lacking. + # sysexits.h is header-only and used by a few programs. + cp $TERMUX_SCRIPTDIR/ndk_patches/{elf.h,sysexits.h} $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/include fi export TERMUX_COMMON_CACHEDIR="$TERMUX_TOPDIR/_cache"