Skip to content

Instantly share code, notes, and snippets.

@cwpearson
Last active June 13, 2019 12:50
Show Gist options
  • Save cwpearson/fc91b92c3d49d75a1b3a559aacb1d38e to your computer and use it in GitHub Desktop.
Save cwpearson/fc91b92c3d49d75a1b3a559aacb1d38e to your computer and use it in GitHub Desktop.
Use clang8 to bootstrap clang8+openmp+libcxx+compiler-rt
#! /bin/bash
set -eou pipefail
workdir=`mktemp -d -p $HOME`
workdir=`readlink -f $workdir`
echo $workdir
#trap "{ echo cleaning up $workdir; rm -r $workdir; }" EXIT
trap "{ echo workdir was $workdir; }" EXIT
cd $workdir
# llvm
wget http://releases.llvm.org/8.0.0/llvm-8.0.0.src.tar.xz
tar -vxf llvm-8.0.0.src.tar.xz
# clang
wget http://releases.llvm.org/8.0.0/cfe-8.0.0.src.tar.xz
tar -vxf cfe-8.0.0.src.tar.xz
# libc++
wget http://releases.llvm.org/8.0.0/libcxx-8.0.0.src.tar.xz
tar -vxf libcxx-8.0.0.src.tar.xz
# libc++abi
wget http://releases.llvm.org/8.0.0/libcxxabi-8.0.0.src.tar.xz
tar -vxf libcxxabi-8.0.0.src.tar.xz
# openmp
wget http://releases.llvm.org/8.0.0/openmp-8.0.0.src.tar.xz
tar -vxf openmp-8.0.0.src.tar.xz
# compiler-rt
wget http://releases.llvm.org/8.0.0/compiler-rt-8.0.0.src.tar.xz
tar -vxf compiler-rt-8.0.0.src.tar.xz
# build a basic clang to bootstrap the libcxx build
mv cfe-8.0.0.src llvm-8.0.0.src/tools/clang
mkdir -p $workdir/build-base
cd $workdir/build-base && cmake ../llvm-8.0.0.src \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_TARGETS_TO_BUILD="PowerPC" \
-DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON
cd $workdir/build-base && nice -n20 make -j40 -k || make
# use the clang8 build to build clang again, but this time with all the bells and whistles
cd $workdir
mv libcxx-8.0.0.src llvm-8.0.0.src/projects/libcxx
mv libcxxabi-8.0.0.src llvm-8.0.0.src/projects/libcxxabi
mv openmp-8.0.0.src llvm-8.0.0.src/projects/openmp
mv compiler-rt-8.0.0.src llvm-8.0.0.src/projects/openmp
mkdir -p $workdir/build
cd $workdir/build && cmake $workdir/llvm-8.0.0.src \
-DCMAKE_CXX_COMPILER=$workdir/build-base/bin/clang++ \
-DCMAKE_C_COMPILER=$workdir/build-base/bin/clang \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$HOME/software/clang-8.0.0
cd $workdir/build && nice -n20 make -j40 -k || make
cd $workdir/build && make install
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment