Skip to content

Commit ea40c33

Browse files
committed
Install binutils as well
1 parent 499cacb commit ea40c33

File tree

1 file changed

+40
-17
lines changed

1 file changed

+40
-17
lines changed

build.sh

Lines changed: 40 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ source $_SCRIPTDIR/common-files/termux_download.sh
2929
: ${_MAKE_PROCESSES:=$(nproc)}
3030
: ${GCC_VERSION:=12.1.0}
3131
: ${GCC_SHA256:=e88a004a14697bbbaba311f38a938c716d9a652fd151aaaa4cf1b5b99b90e2de}
32+
: ${BINUTILS_VERSION:=2.39}
33+
: ${BINUTILS_SHA256:=d12ea6f239f1ffe3533ea11ad6e224ffcb89eb5d01bbea589e9158780fa11f10}
3234

3335
export TOOLCHAIN_ARCH
3436

@@ -39,16 +41,18 @@ mkdir -p $_TMP_DIR
3941

4042
_HOST_PLATFORM="${TOOLCHAIN_ARCH}-linux-android"
4143

42-
_EXTRA_HOST_BUILD=""
44+
_GCC_EXTRA_HOST_BUILD=""
45+
_BINUTILS_EXTRA_HOST_BUILD="--enable-gold=default"
4346
if [ "$TOOLCHAIN_ARCH" = "arm" ]; then
4447
_HOST_PLATFORM="${_HOST_PLATFORM}eabi"
45-
_EXTRA_HOST_BUILD="--with-arch=armv7-a --with-float=soft --with-fpu=vfp"
48+
_GCC_EXTRA_HOST_BUILD="--with-arch=armv7-a --with-float=soft --with-fpu=vfp"
4649
elif [ "$TOOLCHAIN_ARCH" = "aarch64" ]; then
47-
_EXTRA_HOST_BUILD="--enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419"
50+
_GCC_EXTRA_HOST_BUILD="--enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419"
51+
_BINUTILS_EXTRA_HOST_BUILD="--enable-gold $_GCC_EXTRA_HOST_BUILD"
4852
elif [ "$TOOLCHAIN_ARCH" = "i686" ]; then
49-
_EXTRA_HOST_BUILD="--with-arch=i686 --with-fpmath=sse "
53+
_GCC_EXTRA_HOST_BUILD="--with-arch=i686 --with-fpmath=sse "
5054
elif [ "$TOOLCHAIN_ARCH" = "x86_64" ]; then
51-
_EXTRA_HOST_BUILD="--with-arch=x86-64 --with-fpmath=sse"
55+
_GCC_EXTRA_HOST_BUILD="--with-arch=x86-64 --with-fpmath=sse"
5256
fi
5357

5458
# Install dependencies
@@ -59,39 +63,57 @@ sudo apt install -y libgmp-dev libmpfr-dev libmpc-dev zlib1g-dev libisl-dev libt
5963
pushd $_TMP_DIR
6064

6165
# Download source
62-
SRC_URL=https://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.gz
63-
SRC_FILE=$_CACHE_DIR/gcc-${GCC_VERSION}.tar.gz
64-
SRC_DIR=$_TMP_DIR/gcc-${GCC_VERSION}
65-
termux_download $SRC_URL $SRC_FILE $GCC_SHA256
66+
GCC_SRC_URL=https://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.gz
67+
GCC_SRC_FILE=$_CACHE_DIR/gcc-${GCC_VERSION}.tar.gz
68+
GCC_SRC_DIR=$_TMP_DIR/gcc-${GCC_VERSION}
69+
termux_download $GCC_SRC_URL $GCC_SRC_FILE $GCC_SHA256
70+
BINUTILS_SRC_URL=https://ftp.gnu.org/gnu/binutils/binutils-${BINUTILS_VERSION}.tar.gz
71+
BINUTILS_SRC_FILE=$_CACHE_DIR/binutils-${BINUTILS_VERSION}.tar.gz
72+
BINUTILS_SRC_DIR=$_TMP_DIR/binutils-${BINUTILS_VERSION}
73+
termux_download $BINUTILS_SRC_URL $BINUTILS_SRC_FILE $BINUTILS_SHA256
6674

6775
# Setup a standalone toolchain
6876
_setup_standalone_toolchain_ndk_r17c $_TMP_DIR/standalone-toolchain
6977
cp -R $_TMP_DIR/standalone-toolchain/sysroot/usr/include/$_HOST_PLATFORM/* $_TMP_DIR/standalone-toolchain/sysroot/usr/include/
7078

71-
PATH="$_TMP_DIR/standalone-toolchain/bin:$PATH"
72-
7379
# Extract source
74-
tar -xf $SRC_FILE -C $_TMP_DIR/
80+
tar -xf $GCC_SRC_FILE -C $_TMP_DIR/
7581
pushd $_TMP_DIR
7682
PATCHES="$(find "$_SCRIPTDIR/patches/" -maxdepth 1 -type f -name *.patch | sort)"
7783
for f in $PATCHES; do
7884
echo "Applying patch: $(basename $f)"
79-
patch -d "$SRC_DIR/" -p1 < "$f";
85+
patch -d "$GCC_SRC_DIR/" -p1 < "$f";
8086
done
87+
tar -xf $BINUTILS_SRC_FILE -C $_TMP_DIR/
8188
popd
8289

83-
# Build a custom toolchain
90+
# Copy sysroot
8491
mkdir -p $_TMP_DIR/newer-toolchain
8592
cp -R $_TMP_DIR/standalone-toolchain/sysroot $_TMP_DIR/newer-toolchain/
8693

94+
# Build binutils
95+
mkdir -p binutils-build
96+
pushd binutils-build
97+
$BINUTILS_SRC_DIR/configure \
98+
--target=$_HOST_PLATFORM \
99+
--prefix=$_TMP_DIR/newer-toolchain \
100+
--with-sysroot=$_TMP_DIR/newer-toolchain/sysroot \
101+
$_BINUTILS_EXTRA_HOST_BUILD
102+
make -j $_MAKE_PROCESSES
103+
make -j $_MAKE_PROCESSES install-strip
104+
popd # binutils-build
105+
106+
export PATH="$_TMP_DIR/newer-toolchain/bin:$PATH"
107+
108+
# Build GCC toolchain
87109
mkdir -p newer-toolchain-build
88110
pushd newer-toolchain-build
89111

90112
export CFLAGS="-D__ANDROID_API__=$_API_LEVEL"
91113
export CPPFLAGS="-D__ANDROID_API__=$_API_LEVEL"
92114
export CXXFLAGS="-D__ANDROID_API__=$_API_LEVEL"
93115

94-
$SRC_DIR/configure \
116+
$GCC_SRC_DIR/configure \
95117
--host=x86_64-linux-gnu \
96118
--build=x86_64-linux-gnu \
97119
--target=$_HOST_PLATFORM \
@@ -102,6 +124,7 @@ $SRC_DIR/configure \
102124
--with-gnu-as --with-gnu-ld \
103125
--disable-libstdc__-v3 \
104126
--disable-tls \
127+
--disable-ssp \
105128
--disable-bootstrap \
106129
--enable-initfini-array \
107130
--enable-libatomic-ifuncs=no \
@@ -115,12 +138,12 @@ $SRC_DIR/configure \
115138
--enable-eh-frame-hdr-for-static \
116139
--enable-graphite=yes --with-isl \
117140
--disable-multilib \
118-
$_EXTRA_HOST_BUILD \
141+
$_GCC_EXTRA_HOST_BUILD \
119142
--with-sysroot=$_TMP_DIR/newer-toolchain/sysroot \
120143
--with-gxx-include-dir=$_TMP_DIR/newer-toolchain/include/c++/$GCC_VERSION
121144

122145
make -j $_MAKE_PROCESSES
123-
make -j $_MAKE_PROCESSES install
146+
make -j $_MAKE_PROCESSES install-strip
124147

125148
popd # newer-toolchain-build
126149

0 commit comments

Comments
 (0)