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