X-Git-Url: https://git.distorted.org.uk/~mdw/termux-packages/blobdiff_plain/99dd1a492e62e8b1483e856d8b94ed9ef0d5f523..f2344eab0f6a1a19f9d4be8a58252fedeea1cb2d:/build-package.sh diff --git a/build-package.sh b/build-package.sh index 43483906..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,JNIHelp.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" @@ -273,7 +264,7 @@ HERE fi TERMUX_ELF_CLEANER=$TERMUX_COMMON_CACHEDIR/termux-elf-cleaner -TERMUX_ELF_CLEANER_SRC=$TERMUX_SCRIPTDIR/packages/termux-tools/termux-elf-cleaner.cpp +TERMUX_ELF_CLEANER_SRC=$TERMUX_SCRIPTDIR/packages/termux-elf-cleaner/termux-elf-cleaner.cpp if [ $TERMUX_ELF_CLEANER_SRC -nt $TERMUX_ELF_CLEANER ]; then g++ -std=c++11 -Wall -Wextra -pedantic -Os $TERMUX_ELF_CLEANER_SRC -o $TERMUX_ELF_CLEANER fi @@ -326,7 +317,9 @@ termux_step_patch_package () { cd $TERMUX_PKG_SRCDIR # Suffix patch with ".patch32" or ".patch64" to only apply for these bitnesses: for patch in $TERMUX_PKG_BUILDER_DIR/*.patch{$TERMUX_ARCH_BITS,}; do - test -f $patch && sed "s%\@TERMUX_PREFIX\@%${TERMUX_PREFIX}%g" $patch | patch -p1 + test -f $patch && sed "s%\@TERMUX_PREFIX\@%${TERMUX_PREFIX}%g" $patch | \ + sed "s%\@TERMUX_HOME\@%${TERMUX_ANDROID_HOME}%g" | \ + patch -p1 done find . -name config.sub -exec chmod u+w '{}' \; -exec cp $TERMUX_COMMON_CACHEDIR/config.sub '{}' \; @@ -602,7 +595,7 @@ termux_setup_golang () { exit 1 fi - local TERMUX_GO_VERSION=go1.6.1 + local TERMUX_GO_VERSION=go1.6.2 local TERMUX_GO_PLATFORM=linux-amd64 test `uname` = "Darwin" && TERMUX_GO_PLATFORM=darwin-amd64