1c28ef8d4566ba755f57d2bd1acf41de7cb9a5e9
[termux-packages] / packages / gcc / build.sh
1 TERMUX_PKG_HOMEPAGE=http://gcc.gnu.org/
2 TERMUX_PKG_DESCRIPTION="GNU C compiler"
3 TERMUX_PKG_DEPENDS="binutils, libgmp, libmpfr, libmpc, ndk-sysroot, libgcc, libisl, libgnustl"
4 TERMUX_PKG_VERSION=6.1.0
5 TERMUX_PKG_BUILD_REVISION=2
6 TERMUX_PKG_SRCURL=ftp://ftp.gnu.org/gnu/gcc/gcc-${TERMUX_PKG_VERSION}/gcc-${TERMUX_PKG_VERSION}.tar.bz2
7 TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--enable-languages=c,c++ --with-system-zlib --disable-multilib --disable-lto"
8 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --target=$TERMUX_HOST_PLATFORM"
9 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --with-gmp=$TERMUX_PREFIX --with-mpfr=$TERMUX_PREFIX --with-mpc=$TERMUX_PREFIX"
10 # To build gcc as a PIE binary:
11 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --with-stage1-ldflags=\"-specs=$TERMUX_SCRIPTDIR/termux.spec\""
12 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --with-isl-include=$TERMUX_PREFIX/include --with-isl-lib=$TERMUX_PREFIX/lib"
13 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --disable-isl-version-check"
14 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --disable-tls"
15 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --enable-host-shared"
16 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --enable-default-pie"
17
18 if [ "$TERMUX_ARCH" = "arm" ]; then
19 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --with-arch=armv7-a --with-fpu=neon --with-float=softfp"
20 elif [ "$TERMUX_ARCH" = "aarch64" ]; then
21 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --with-arch=armv8-a"
22 elif [ "$TERMUX_ARCH" = "i686" ]; then
23 # -mstackrealign -msse3 -m32
24 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --with-arch=i686 --with-tune=atom --with-fpmath=sse"
25 fi
26 TERMUX_PKG_RM_AFTER_INSTALL="bin/gcc-ar bin/gcc-ranlib bin/*c++ bin/gcc-nm lib/gcc/*-linux-*/${TERMUX_PKG_VERSION}/plugin lib/gcc/*-linux-*/${TERMUX_PKG_VERSION}/include-fixed lib/gcc/*-linux-*/$TERMUX_PKG_VERSION/install-tools libexec/gcc/*-linux-*/${TERMUX_PKG_VERSION}/plugin libexec/gcc/*-linux-*/${TERMUX_PKG_VERSION}/install-tools share/man/man7"
27
28 export AR_FOR_TARGET="$AR"
29 export AS_FOR_TARGET="$AS"
30 export CC_FOR_TARGET="$CC"
31 export CFLAGS_FOR_TARGET="$CFLAGS"
32 export CPP_FOR_TARGET="$CPP"
33 export CPPFLAGS_FOR_TARGET="$CPPFLAGS"
34 export CXXFLAGS_FOR_TARGET="$CXXFLAGS"
35 export CXX_FOR_TARGET="$CXX"
36 export LDFLAGS_FOR_TARGET="$LDFLAGS"
37 export LD_FOR_TARGET="$LD"
38 export PKG_CONFIG_FOR_TARGET="$PKG_CONFIG"
39 export RANLIB_FOR_TARGET="$RANLIB"
40
41 unset AR
42 unset AS
43 unset CC
44 unset CFLAGS
45 unset CPP
46 unset CPPFLAGS
47 unset CXXFLAGS
48 unset CXX
49 unset LDFLAGS
50 unset LD
51 unset PKG_CONFIG
52 unset RANLIB
53
54 termux_step_make () {
55 make -j $TERMUX_MAKE_PROCESSES all-gcc
56 }
57
58 termux_step_make_install () {
59 make install-gcc
60 }
61
62 termux_step_post_make_install () {
63 # Android 5.0 only supports PIE binaries, so build that by default with a specs file:
64 local GCC_SPECS=$TERMUX_PREFIX/lib/gcc/$TERMUX_HOST_PLATFORM/$TERMUX_PKG_VERSION/specs
65 cp $TERMUX_SCRIPTDIR/termux.spec $GCC_SPECS
66
67 if [ $TERMUX_ARCH = "i686" ]; then
68 # See https://github.com/termux/termux-packages/issues/3
69 # and https://github.com/termux/termux-packages/issues/14
70 cat >> $GCC_SPECS <<HERE
71
72 *link_emulation:
73 elf_i386
74
75 *dynamic_linker:
76 /system/bin/linker
77 HERE
78 fi
79
80 # Replace hardlinks with symlinks:
81 cd $TERMUX_PREFIX/bin
82 rm ${TERMUX_HOST_PLATFORM}-g++; ln -s g++ ${TERMUX_HOST_PLATFORM}-g++
83 rm ${TERMUX_HOST_PLATFORM}-gcc; ln -s gcc ${TERMUX_HOST_PLATFORM}-gcc
84 rm ${TERMUX_HOST_PLATFORM}-gcc-${TERMUX_PKG_VERSION}; ln -s gcc ${TERMUX_HOST_PLATFORM}-gcc-${TERMUX_PKG_VERSION}
85 }