summaryrefslogtreecommitdiffstats
path: root/build-toolchain
diff options
context:
space:
mode:
authorWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2016-01-15 00:25:31 +0100
committerWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2016-01-15 00:25:35 +0100
commit6d69e550e5f676ae65543f9dbd62219ba6b5a7cb (patch)
treecc066a3b820e2e34f3658165ac8b125021e0740b /build-toolchain
parentcd55ab2858f091f08e42c515ce735fc7e3181792 (diff)
downloadvendor_replicant-6d69e550e5f676ae65543f9dbd62219ba6b5a7cb.zip
vendor_replicant-6d69e550e5f676ae65543f9dbd62219ba6b5a7cb.tar.gz
vendor_replicant-6d69e550e5f676ae65543f9dbd62219ba6b5a7cb.tar.bz2
extend toolchain script: build gcc toolchains
add patch for prebuilt/ndk Signed-off-by: Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>
Diffstat (limited to 'build-toolchain')
-rwxr-xr-xbuild-toolchain124
1 files changed, 119 insertions, 5 deletions
diff --git a/build-toolchain b/build-toolchain
index 6431908..5662253 100755
--- a/build-toolchain
+++ b/build-toolchain
@@ -14,10 +14,124 @@ make -j $(nproc)
cd $BASEDIR
-#TODO: copy include header (now in /usr/include)
-# include patch for binutils
-# enable optimization for llvm (more stuff?)
-# test with gcc-4.8 binaries if there are errors
-# document renaming of binaries of cross compiler build and export flag
+
+# build binutils for arm
+mkdir -p $BASEDIR/toolchain/gcc/arm/arm-linux-androideabi/build/binutils
+cd $BASEDIR/toolchain/gcc/arm/arm-linux-androideabi/build/binutils
+./../../../../../src/binutils/binutils-2.25/configure \
+ --prefix=$BASEDIR/toolchain/gcc/arm/arm-linux-androideabi/install \
+ --target=arm-linux-androideabi \
+ --enable-gold=default \
+ --enable-plugins
+
+make -j $(nproc) && make install
+
+# build gcc for arm
+cd .. && mkdir -p gcc && cd gcc
+./../../../../../src/gcc/gcc-4.9/configure \
+ --prefix=$BASEDIR/toolchain/gcc/arm/arm-linux-androideabi/install \
+ --target=arm-linux-androideabi \
+ --host=x86_64-linux-gnu \
+ --build=x86_64-linux-gnu \
+ --with-gnu-as \
+ --with-gnu-ld \
+ --enable-languages=c,c++ \
+ --enable-cloog-backend=isl \
+ --disable-libssp \
+ --enable-threads \
+ --disable-nls \
+ --disable-libmudflap \
+ --enable-libgomp \
+ --disable-libstdc__-v3 \
+ --disable-sjlj-exceptions \
+ --disable-shared \
+ --disable-tls \
+ --disable-libitm \
+ --with-float=soft \
+ --with-fpu=vfp \
+ --with-arch=armv5te \
+ --enable-target-optspace \
+ --enable-initfini-array \
+ --disable-bootstrap \
+ --disable-libquadmath \
+ --enable-plugins \
+ --with-sysroot=$BASEDIR/prebuilts/ndk/current/platforms/android-21/arch-arm \
+ --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' \
+ --enable-gnu-indirect-function \
+ --disable-libsanitizer \
+ --enable-graphite=yes \
+ --enable-eh-frame-hdr-for-static \
+ --enable-gold=default \
+ --program-transform-name='s&^&arm-linux-androideabi-&'
+
+make -j $(nproc) && make install
+
+
+# build binutils for host
+cd ../../../../ && mkdir -p host/build/binutils
+cd host/build/binutils
+./../../../../src/binutils/binutils-2.25/configure \
+ --prefix=$BASEDIR/toolchain/gcc/host/install \
+ --target=x86_64-linux \
+ --host=x86_64-linux-gnu \
+ --build=x86_64-linux-gnu \
+ --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' \
+ --with-gold-ldflags='-static-libgcc -static-libstdc++' \
+ --enable-gold=default \
+ --enable-plugins
+
+make -j $(nproc) && make install
+
+# build gcc for host
+cd .. && mkdir -p gcc && cd gcc
+./../../../../src/gcc/gcc-4.9/configure \
+ --prefix=$BASEDIR/toolchain/gcc/host/install \
+ --target=x86_64-linux \
+ --enable-multiarch \
+ --with-arch-32=i686 \
+ --with-abi=m64 \
+ --with-arch=x86-64 \
+ --with-multilib-list=m32,m64 \
+ --disable-nls \
+ --enable-target-optspace \
+ --host=x86_64-linux-gnu \
+ --build=x86_64-linux-gnu \
+ --disable-plugin \
+ --disable-docs \
+ --disable-bootstrap \
+ --disable-libgomp \
+ --disable-libmudflap \
+ --disable-libquadmath \
+ --disable-libsanitizer \
+ --enable-gold=default \
+ --enable-languages=c,c++
+
+make -j $(nproc) && make install
+
+# we need to link against the correct stdatomic.h
+cd ../../install/lib/gcc/x86_64-linux/4.9/include
+rm stdatomic.h
+ln -s ../../../../../../../../../bionic/libc/include/stdatomic.h stdatomic.h
+
+cd $BASEDIR
+
+# an empty Android.mk is needed (Android.mk in jack and jill repo should be ignored)
+touch toolchain/src/Android.mk
+
+# clang needs this header as a system header
+mkdir -p toolchain/headers/clang
+cd toolchain/headers/clang
+if [ ! -f stdatomic.h ]
+then
+ ln -s ../../../bionic/libc/include/stdatomic.h stdatomic.h
+fi
+
+cd $BASEDIR
+
+
+#TODO:
# review other prebuilt tools from misc, tools, devtools and sdk
# search for bin directories in external and remove binaries
+# build jack from source and rest of java toolchain (jack source has prebuilts, builds with ant dist)
+# add relocation_packer correctly as dependency
+# packages to install: gcc-arm-none-eabi