46b133c041
remove patch, commit is now included in prebuilt ndk Signed-off-by: Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>
163 lines
4.4 KiB
Bash
Executable File
163 lines
4.4 KiB
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
|
|
BASEDIR=$(pwd)
|
|
|
|
mkdir -p $BASEDIR/toolchain/clang
|
|
cd $BASEDIR/toolchain/clang
|
|
|
|
# build llvm and clang binaries
|
|
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86;ARM" \
|
|
-DLLVM_EXTERNAL_CLANG_SOURCE_DIR=../../external/clang \
|
|
-DCMAKE_C_FLAGS="-O2" ../../external/llvm/
|
|
make -j $(nproc)
|
|
|
|
cd $BASEDIR
|
|
|
|
|
|
# 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
|
|
|
|
|
|
#############################
|
|
# build jack/jill toolchain
|
|
|
|
# first the simple lib
|
|
cd ../../src/jack/simple
|
|
mvn-debian clean package -Dmaven.test.skip=true
|
|
cd ..
|
|
|
|
# then jack
|
|
ant clean dist
|
|
|
|
# setup the jack/jill binary folder
|
|
mkdir -p ../../jack_jill
|
|
cp jack/etc/Android.mk.build ../../jack_jill/Android.mk
|
|
cp dist/jack ../../jack_jill/
|
|
chmod +x ../../jack_jill/jack
|
|
cp dist/jack-admin ../../jack_jill/
|
|
chmod +x ../../jack_jill/jack-admin
|
|
cp dist/jack.jar ../../jack_jill/
|
|
cp dist/jack-launcher.jar ../../jack_jill/
|
|
|
|
# finally the jill.jar
|
|
cd ../jill
|
|
ant clean dist
|
|
cp dist/jill.jar ../../jack_jill/
|
|
|
|
cd $BASEDIR
|
|
|
|
|
|
#TODO:
|
|
# search for binaries in external and remove them
|
|
# build manifest merger from source
|
|
# jack source has prebuilts
|