diff --git a/environment/toolchain/.gitignore b/environment/toolchain/.gitignore new file mode 100644 index 000000000..335ec9573 --- /dev/null +++ b/environment/toolchain/.gitignore @@ -0,0 +1 @@ +*.tar.gz diff --git a/environment/toolchain/v4.sh b/environment/toolchain/v4.sh index 34ce2c052..259804fa9 100755 --- a/environment/toolchain/v4.sh +++ b/environment/toolchain/v4.sh @@ -10,6 +10,14 @@ cd "$DIR" source "$DIR/../util.sh" DISTRO="$(operating_system)" +function log_tool_name () { + echo "" + echo "" + echo "#### $1 ####" + echo "" + echo "" +} + for_arm=false if [[ "$#" -eq 1 ]]; then if [[ "$1" == "--for-arm" ]]; then @@ -20,9 +28,11 @@ if [[ "$#" -eq 1 ]]; then fi fi -os="$1" - -# toolchain version +TOOLCHAIN_STDCXX="${TOOLCHAIN_STDCXX:-libstdc++}" +if [[ "$TOOLCHAIN_STDCXX" != "libstdc++" && "$TOOLCHAIN_STDCXX" != "libc++" ]]; then + echo "Only GCC (libstdc++) or LLVM (libc++) C++ standard library implementations are supported." + exit 1 +fi TOOLCHAIN_VERSION=4 # package versions used @@ -99,6 +109,8 @@ if [ ! -f llvm-$LLVM_VERSION.src.tar.xz ]; then wget https://github.com/llvm/llvm-project/releases/download/llvmorg-$LLVM_VERSION/clang-tools-extra-$LLVM_VERSION.src.tar.xz wget https://github.com/llvm/llvm-project/releases/download/llvmorg-$LLVM_VERSION/compiler-rt-$LLVM_VERSION.src.tar.xz wget https://github.com/llvm/llvm-project/releases/download/llvmorg-$LLVM_VERSION/libunwind-$LLVM_VERSION.src.tar.xz + wget https://github.com/llvm/llvm-project/releases/download/llvmorg-$LLVM_VERSION/libcxx-$LLVM_VERSION.src.tar.xz + wget https://github.com/llvm/llvm-project/releases/download/llvmorg-$LLVM_VERSION/libcxxabi-$LLVM_VERSION.src.tar.xz fi if [ ! -f pahole-gdb-master.zip ]; then wget https://github.com/PhilArmstrong/pahole-gdb/archive/master.zip -O pahole-gdb-master.zip @@ -156,6 +168,8 @@ if [ ! -f llvm-$LLVM_VERSION.src.tar.xz.sig ]; then wget https://github.com/llvm/llvm-project/releases/download/llvmorg-$LLVM_VERSION/clang-tools-extra-$LLVM_VERSION.src.tar.xz.sig wget https://github.com/llvm/llvm-project/releases/download/llvmorg-$LLVM_VERSION/compiler-rt-$LLVM_VERSION.src.tar.xz.sig wget https://github.com/llvm/llvm-project/releases/download/llvmorg-$LLVM_VERSION/libunwind-$LLVM_VERSION.src.tar.xz.sig + wget https://github.com/llvm/llvm-project/releases/download/llvmorg-$LLVM_VERSION/libcxx-$LLVM_VERSION.src.tar.xz.sig + wget https://github.com/llvm/llvm-project/releases/download/llvmorg-$LLVM_VERSION/libcxxabi-$LLVM_VERSION.src.tar.xz.sig fi # list of valid llvm gnupg keys: https://releases.llvm.org/download.html $GPG --keyserver $KEYSERVER --recv-keys 0x474E22316ABF4785A88C6E8EA2C794A986419D8A @@ -165,6 +179,8 @@ $GPG --verify lld-$LLVM_VERSION.src.tar.xz.sig lld-$LLVM_VERSION.src.tar.xz $GPG --verify clang-tools-extra-$LLVM_VERSION.src.tar.xz.sig clang-tools-extra-$LLVM_VERSION.src.tar.xz $GPG --verify compiler-rt-$LLVM_VERSION.src.tar.xz.sig compiler-rt-$LLVM_VERSION.src.tar.xz $GPG --verify libunwind-$LLVM_VERSION.src.tar.xz.sig libunwind-$LLVM_VERSION.src.tar.xz +$GPG --verify libcxx-$LLVM_VERSION.src.tar.xz.sig libcxx-$LLVM_VERSION.src.tar.xz +$GPG --verify libcxxabi-$LLVM_VERSION.src.tar.xz.sig libcxxabi-$LLVM_VERSION.src.tar.xz popd @@ -172,7 +188,7 @@ popd mkdir -p build pushd build -# compile gcc +log_tool_name "GCC $GCC_VERSION" if [ ! -f $PREFIX/bin/gcc ]; then if [ -d gcc-$GCC_VERSION ]; then rm -rf gcc-$GCC_VERSION @@ -263,7 +279,7 @@ fi export PATH=$PREFIX/bin:$PATH export LD_LIBRARY_PATH=$PREFIX/lib64 -# compile binutils +log_tool_name "binutils $BINUTILS_VERSION" if [ ! -f $PREFIX/bin/ld.gold ]; then if [ -d binutils-$BINUTILS_VERSION ]; then rm -rf binutils-$BINUTILS_VERSION @@ -327,7 +343,7 @@ if [ ! -f $PREFIX/bin/ld.gold ]; then popd && popd fi -# compile gdb +log_tool_name "GDB $GDB_VERSION" if [ ! -f $PREFIX/bin/gdb ]; then if [ -d gdb-$GDB_VERSION ]; then rm -rf gdb-$GDB_VERSION @@ -398,13 +414,13 @@ if [ ! -f $PREFIX/bin/gdb ]; then popd && popd fi -# install pahole +log_tool_name "install pahole" if [ ! -d $PREFIX/share/pahole-gdb ]; then unzip ../archives/pahole-gdb-master.zip mv pahole-gdb-master $PREFIX/share/pahole-gdb fi -# setup system gdbinit +log_tool_name "setup system gdbinit" if [ ! -f $PREFIX/etc/gdb/gdbinit ]; then mkdir -p $PREFIX/etc/gdb cat >$PREFIX/etc/gdb/gdbinit <