chiark / gitweb /
Merge pull request #238 from vaites/php
[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_SRCURL=ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-${TERMUX_PKG_VERSION}/gcc-${TERMUX_PKG_VERSION}.tar.bz2
6 TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--enable-languages=c,c++ --with-system-zlib --disable-multilib --disable-lto"
7 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --target=$TERMUX_HOST_PLATFORM"
8 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --with-gmp=$TERMUX_PREFIX --with-mpfr=$TERMUX_PREFIX --with-mpc=$TERMUX_PREFIX"
9 # To build gcc as a PIE binary:
10 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --with-stage1-ldflags=\"-specs=$TERMUX_SCRIPTDIR/termux.spec\""
11 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --with-isl-include=$TERMUX_PREFIX/include --with-isl-lib=$TERMUX_PREFIX/lib"
12 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --disable-isl-version-check"
13 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --disable-tls"
14 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --enable-host-shared"
15 TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --enable-default-pie"
16
17 if [ "$TERMUX_ARCH" = "arm" ]; then
18         TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --with-arch=armv7-a --with-fpu=neon --with-float=hard"
19 elif [ "$TERMUX_ARCH" = "aarch64" ]; then
20         TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --with-arch=armv8-a"
21 elif [ "$TERMUX_ARCH" = "i686" ]; then
22         # -mstackrealign -msse3 -m32
23         TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --with-arch=i686 --with-tune=atom --with-fpmath=sse"
24 fi
25 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"
26
27 export AR_FOR_TARGET="$AR"
28 export AS_FOR_TARGET="$AS"
29 export CC_FOR_TARGET="$CC"
30 export CFLAGS_FOR_TARGET="$CFLAGS"
31 export CPP_FOR_TARGET="$CPP"
32 export CPPFLAGS_FOR_TARGET="$CPPFLAGS"
33 export CXXFLAGS_FOR_TARGET="$CXXFLAGS"
34 export CXX_FOR_TARGET="$CXX"
35 export LDFLAGS_FOR_TARGET="$LDFLAGS"
36 export LD_FOR_TARGET="$LD"
37 export PKG_CONFIG_FOR_TARGET="$PKG_CONFIG"
38 export RANLIB_FOR_TARGET="$RANLIB"
39
40 unset AR
41 unset AS
42 unset CC
43 unset CFLAGS
44 unset CPP
45 unset CPPFLAGS
46 unset CXXFLAGS
47 unset CXX
48 unset LDFLAGS
49 unset LD
50 unset PKG_CONFIG
51 unset RANLIB
52
53 termux_step_make () {
54         make -j $TERMUX_MAKE_PROCESSES all-gcc
55 }
56
57 termux_step_make_install () {
58         make install-gcc
59 }
60
61 termux_step_post_make_install () {
62         # Android 5.0 only supports PIE binaries, so build that by default with a specs file:
63         local GCC_SPECS=$TERMUX_PREFIX/lib/gcc/$TERMUX_HOST_PLATFORM/$TERMUX_PKG_VERSION/specs
64         cp $TERMUX_SCRIPTDIR/termux.spec $GCC_SPECS
65
66         if [ $TERMUX_ARCH = "i686" ]; then
67                 # See https://github.com/termux/termux-packages/issues/3
68                 # and https://github.com/termux/termux-packages/issues/14
69                 cat >> $GCC_SPECS <<HERE
70
71 *link_emulation:
72 elf_i386
73
74 *dynamic_linker:
75 /system/bin/linker
76 HERE
77         fi
78
79         # Replace hardlinks with symlinks:
80         cd $TERMUX_PREFIX/bin
81         rm ${TERMUX_HOST_PLATFORM}-g++; ln -s g++ ${TERMUX_HOST_PLATFORM}-g++
82         rm ${TERMUX_HOST_PLATFORM}-gcc; ln -s gcc ${TERMUX_HOST_PLATFORM}-gcc
83         rm ${TERMUX_HOST_PLATFORM}-gcc-${TERMUX_PKG_VERSION}; ln -s gcc ${TERMUX_HOST_PLATFORM}-gcc-${TERMUX_PKG_VERSION}
84 }