X-Git-Url: https://git.distorted.org.uk/~mdw/termux-packages/blobdiff_plain/0ae97c5e985892744202a4d264b268f887eb3c0d..8f19a179fefffd6d2c7011e7acfd817bf2a538eb:/build-package.sh diff --git a/build-package.sh b/build-package.sh index bd66cd7f..a19b8bb1 100755 --- a/build-package.sh +++ b/build-package.sh @@ -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" @@ -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