Signed-off-by: Denis 'GNUtoo' Carikli <[email protected]>
---
 build-toolchain | 435 +++++++++++++++++++++++++++---------------------
 1 file changed, 245 insertions(+), 190 deletions(-)

diff --git a/build-toolchain b/build-toolchain
index 622d4e1b..4d090873 100755
--- a/build-toolchain
+++ b/build-toolchain
@@ -20,196 +20,251 @@ set -e
 
 BASEDIR=$(pwd)
 
-GOLD_LD=/usr/bin/ld.gold
-BFD_LD=/usr/bin/ld.bfd
-
-printf "%s\n%s\n%s\n" \
-    "+-------------------------------+" \
-    "| build llvm and clang binaries |" \
-    "+-------------------------------+"
-
-mkdir -p $BASEDIR/toolchain/clang
-cd       $BASEDIR/toolchain/clang
-
-cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86;ARM" \
-      -DLLVM_EXTERNAL_CLANG_SOURCE_DIR=$BASEDIR/external/clang \
-      -DCMAKE_C_FLAGS="-O2" $BASEDIR/external/llvm/
-make -j $(nproc)
-
-printf "%s\n%s\n%s\n" \
-       "+------------------------+" \
-       "| 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
-
-$BASEDIR/toolchain/src/binutils/binutils-2.25/configure \
-    --prefix=$BASEDIR/toolchain/gcc/arm/arm-linux-androideabi/install \
-    --target=arm-linux-androideabi \
-    --enable-gold=default \
-    --enable-plugins \
-    --disable-werror \
-
-make -j $(nproc)
-make install
-
-printf "%s\n%s\n%s\n" \
-       "+-------------------+" \
-       "| build gcc for arm |" \
-       "+-------------------+"
-
-mkdir -p $BASEDIR/toolchain/gcc/arm/arm-linux-androideabi/build/gcc
-cd       $BASEDIR/toolchain/gcc/arm/arm-linux-androideabi/build/gcc
-
-$BASEDIR/toolchain/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
-
-printf "%s\n%s\n%s\n" \
-       "+-------------------------+" \
-       "| build binutils for host |" \
-       "+-------------------------+"
-
-mkdir -p $BASEDIR/toolchain/gcc/host/build/binutils
-cd       $BASEDIR/toolchain/gcc/host/build/binutils
-
-$BASEDIR/toolchain/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' 
\
-    --enable-plugins \
-    --disable-ld \
-    --disable-werror \
-
-make -j $(nproc)
-make install
-
-printf "%s\n%s\n%s\n" \
-       "+--------------------+" \
-       "| build gcc for host |" \
-       "+--------------------+"
-
-mkdir -p $BASEDIR/toolchain/gcc/host/build/gcc
-cd       $BASEDIR/toolchain/gcc/host/build/gcc
-
-$BASEDIR/toolchain/src/gcc/gcc-4.9/configure \
-    --prefix=$BASEDIR/toolchain/gcc/host/install \
-    --target=x86_64-linux \
-    --host=x86_64-linux-gnu \
-    --build=x86_64-linux-gnu \
-    --enable-multiarch \
-    --with-arch-32=i686 \
-    --with-abi=m64 \
-    --with-arch=x86-64 \
-    --with-multilib-list=m32,m64 \
-    --disable-nls \
-    --enable-target-optspace \
-    --disable-plugin \
-    --disable-docs \
-    --disable-bootstrap \
-    --disable-libgomp \
-    --disable-libmudflap \
-    --disable-libquadmath \
-    --disable-libsanitizer \
-    --enable-languages=c,c++ \
-    --with-ld=$GOLD_LD
-
-make -j $(nproc)
-make install
-
-# we need to link against the correct stdatomic.h
-cd $BASEDIR/toolchain/gcc/host/install/lib/gcc/x86_64-linux/4.9.x/include
-rm stdatomic.h
-ln -s $BASEDIR/bionic/libc/include/stdatomic.h stdatomic.h
-# link ld from /usr
-cd $BASEDIR/toolchain/gcc/host/install/x86_64-linux/bin/
-rm -f ld ld.gold ld.bfd
-ln -s "$GOLD_LD" ld
-ln -s "$GOLD_LD" ld.gold
-ln -s "$BFD_LD" ld.bfd
-
-# an empty Android.mk is needed (Android.mk in jack and jill repo should be
-# ignored)
-touch $BASEDIR/toolchain/src/Android.mk
-
-# clang needs this header as a system header
-mkdir -p $BASEDIR/toolchain/headers/clang
-cd       $BASEDIR/toolchain/headers/clang
-
-if [ ! -f stdatomic.h ]
-then
+usage()
+{
+    echo -e "Usage:\n" \
+         "\t$0 help  # Prints this help\n" \
+         "\t$0 clean # Removes the toolchain\n" \
+         "\t$0       # Builds and installs the toolchain"
+}
+
+build_toolchain()
+{
+    GOLD_LD=/usr/bin/ld.gold
+    BFD_LD=/usr/bin/ld.bfd
+
+    printf "%s\n%s\n%s\n" \
+           "+-------------------------------+" \
+           "| build llvm and clang binaries |" \
+           "+-------------------------------+"
+
+    mkdir -p $BASEDIR/toolchain/clang
+    cd       $BASEDIR/toolchain/clang
+
+    cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86;ARM" \
+         -DLLVM_EXTERNAL_CLANG_SOURCE_DIR=$BASEDIR/external/clang \
+         -DCMAKE_C_FLAGS="-O2" $BASEDIR/external/llvm/
+    make -j $(nproc)
+
+    printf "%s\n%s\n%s\n" \
+          "+------------------------+" \
+          "| 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
+
+    $BASEDIR/toolchain/src/binutils/binutils-2.25/configure \
+       --prefix=$BASEDIR/toolchain/gcc/arm/arm-linux-androideabi/install \
+       --target=arm-linux-androideabi \
+       --enable-gold=default \
+       --enable-plugins \
+       --disable-werror \
+
+       make -j $(nproc)
+    make install
+
+    printf "%s\n%s\n%s\n" \
+          "+-------------------+" \
+          "| build gcc for arm |" \
+          "+-------------------+"
+
+    mkdir -p $BASEDIR/toolchain/gcc/arm/arm-linux-androideabi/build/gcc
+    cd       $BASEDIR/toolchain/gcc/arm/arm-linux-androideabi/build/gcc
+
+    $BASEDIR/toolchain/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
+
+    printf "%s\n%s\n%s\n" \
+          "+-------------------------+" \
+          "| build binutils for host |" \
+          "+-------------------------+"
+
+    mkdir -p $BASEDIR/toolchain/gcc/host/build/binutils
+    cd       $BASEDIR/toolchain/gcc/host/build/binutils
+
+    $BASEDIR/toolchain/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' \
+       --enable-plugins \
+       --disable-ld \
+       --disable-werror \
+
+       make -j $(nproc)
+    make install
+
+    printf "%s\n%s\n%s\n" \
+          "+--------------------+" \
+          "| build gcc for host |" \
+          "+--------------------+"
+
+    mkdir -p $BASEDIR/toolchain/gcc/host/build/gcc
+    cd       $BASEDIR/toolchain/gcc/host/build/gcc
+
+    $BASEDIR/toolchain/src/gcc/gcc-4.9/configure \
+       --prefix=$BASEDIR/toolchain/gcc/host/install \
+       --target=x86_64-linux \
+       --host=x86_64-linux-gnu \
+       --build=x86_64-linux-gnu \
+       --enable-multiarch \
+       --with-arch-32=i686 \
+       --with-abi=m64 \
+       --with-arch=x86-64 \
+       --with-multilib-list=m32,m64 \
+       --disable-nls \
+       --enable-target-optspace \
+       --disable-plugin \
+       --disable-docs \
+       --disable-bootstrap \
+       --disable-libgomp \
+       --disable-libmudflap \
+       --disable-libquadmath \
+       --disable-libsanitizer \
+       --enable-languages=c,c++ \
+       --with-ld=$GOLD_LD
+
+    make -j $(nproc)
+    make install
+
+    # we need to link against the correct stdatomic.h
+    cd $BASEDIR/toolchain/gcc/host/install/lib/gcc/x86_64-linux/4.9.x/include
+    rm stdatomic.h
     ln -s $BASEDIR/bionic/libc/include/stdatomic.h stdatomic.h
-fi
-
-
-printf "%s\n%s\n%s\n" \
-       "+---------------------------+" \
-       "| build jack/jill toolchain |" \
-       "+---------------------------+"
-
-# first the simple lib
-cd $BASEDIR/toolchain/src/jack/simple
-# Try to use mvn-debian and if it's not available, try to use mvn
-$(basename $(which mvn-debian || which mvn)) \
+    # link ld from /usr
+    cd $BASEDIR/toolchain/gcc/host/install/x86_64-linux/bin/
+    rm -f ld ld.gold ld.bfd
+    ln -s "$GOLD_LD" ld
+    ln -s "$GOLD_LD" ld.gold
+    ln -s "$BFD_LD" ld.bfd
+
+    # an empty Android.mk is needed (Android.mk in jack and jill repo should be
+    # ignored)
+    touch $BASEDIR/toolchain/src/Android.mk
+
+    # clang needs this header as a system header
+    mkdir -p $BASEDIR/toolchain/headers/clang
+    cd       $BASEDIR/toolchain/headers/clang
+
+    if [ ! -f stdatomic.h ]
+    then
+       ln -s $BASEDIR/bionic/libc/include/stdatomic.h stdatomic.h
+    fi
+
+
+    printf "%s\n%s\n%s\n" \
+          "+---------------------------+" \
+          "| build jack/jill toolchain |" \
+          "+---------------------------+"
+
+    # first the simple lib
+    cd $BASEDIR/toolchain/src/jack/simple
+    # Try to use mvn-debian and if it's not available, try to use mvn
+    $(basename $(which mvn-debian || which mvn)) \
        clean package -Dmaven.test.skip=true
 
-# then jack
-cd $BASEDIR/toolchain/src/jack
-ant clean dist
-
-# setup the jack/jill binary folder
-cd $BASEDIR/toolchain/jack_jill
-cp $BASEDIR/toolchain/src/jack/jack/etc/Android.mk.build \
-   $BASEDIR/toolchain/jack_jill/Android.mk
-cp build/jack/dist/jack .
-chmod +x jack
-cp build/jack/dist/jack-admin .
-chmod +x jack-admin
-cp build/jack/dist/jack.jar .
-cp build/jack/dist/jack-launcher.jar .
-
-# finally the jill.jar
-cd $BASEDIR/toolchain/src/jill
-ant clean dist
-cp $BASEDIR/toolchain/jack_jill/build/jill/dist/jill.jar \
-   $BASEDIR/toolchain/jack_jill/
-
-cd $BASEDIR
+    # then jack
+    cd $BASEDIR/toolchain/src/jack
+    ant clean dist
+
+    # setup the jack/jill binary folder
+    cd $BASEDIR/toolchain/jack_jill
+    cp $BASEDIR/toolchain/src/jack/jack/etc/Android.mk.build \
+       $BASEDIR/toolchain/jack_jill/Android.mk
+    cp build/jack/dist/jack .
+    chmod +x jack
+    cp build/jack/dist/jack-admin .
+    chmod +x jack-admin
+    cp build/jack/dist/jack.jar .
+    cp build/jack/dist/jack-launcher.jar .
+
+    # finally the jill.jar
+    cd $BASEDIR/toolchain/src/jill
+    ant clean dist
+    cp $BASEDIR/toolchain/jack_jill/build/jill/dist/jill.jar \
+       $BASEDIR/toolchain/jack_jill/
+
+    cd $BASEDIR
+}
+
+clean_toolchain()
+{
+    rm -rf \
+       $BASEDIR/toolchain/clang \
+       $BASEDIR/toolchain/gcc/arm/arm-linux-androideabi/build/binutils \
+       $BASEDIR/toolchain/gcc/arm/arm-linux-androideabi/install \
+       $BASEDIR/toolchain/gcc/arm/arm-linux-androideabi/build/gcc \
+       $BASEDIR/toolchain/gcc/arm/arm-linux-androideabi/install \
+       $BASEDIR/toolchain/gcc/host/build/binutils \
+       $BASEDIR/toolchain/gcc/host/install \
+       $BASEDIR/toolchain/gcc/host/build/gcc \
+       $BASEDIR/toolchain/gcc/host/install \
+       $BASEDIR/toolchain/headers/clang
+
+    cd $BASEDIR/toolchain/src/jack/simple
+    # Try to use mvn-debian and if it's not available, try to use mvn
+    $(basename $(which mvn-debian || which mvn)) clean
+
+    # then jack
+    cd $BASEDIR/toolchain/src/jack
+    ant clean
+
+    # clean the jack/jill binary folder
+    rm -f $BASEDIR/toolchain/jack_jill/Android.mk
+    rm -f $BASEDIR/toolchain/jack_jill/jack
+    rm -f $BASEDIR/toolchain/jack_jill/jack-admin
+    rm -f $BASEDIR/toolchain/jack_jill/jack.jar
+    rm -f $BASEDIR/toolchain/jack_jill/jack-launcher.jar
+
+    # finally the jill.jar
+    cd $BASEDIR/toolchain/src/jill
+    ant clean
+    rm -f $BASEDIR/toolchain/jack_jill/jill.jar
+}
+
+if [ $# -eq 1 ] && [ "$1" = "help" ] ; then
+    usage
+    exit 0
+elif [ $# -eq 1 ] && [ "$1" = "clean" ] ; then
+    clean_toolchain
+else
+    build_toolchain
+fi
-- 
2.37.3

_______________________________________________
Replicant mailing list
[email protected]
https://lists.osuosl.org/mailman/listinfo/replicant

Reply via email to