Skip to content

Instantly share code, notes, and snippets.

@cwpearson
Last active March 25, 2022 16:02
Show Gist options
  • Save cwpearson/c5521dfc50175b1d977643b2fc5a2bb1 to your computer and use it in GitHub Desktop.
Save cwpearson/c5521dfc50175b1d977643b2fc5a2bb1 to your computer and use it in GitHub Desktop.
Use clang5 to bootstrap clang5+openmp+libcxx
#! /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/5.0.0/llvm-5.0.0.src.tar.xz
tar -vxf llvm-5.0.0.src.tar.xz
# clang
wget http://releases.llvm.org/5.0.0/cfe-5.0.0.src.tar.xz
tar -vxf cfe-5.0.0.src.tar.xz
# libc++
wget http://releases.llvm.org/5.0.0/libcxx-5.0.0.src.tar.xz
tar -vxf libcxx-5.0.0.src.tar.xz
# libc++abi
wget http://releases.llvm.org/5.0.0/libcxxabi-5.0.0.src.tar.xz
tar -vxf libcxxabi-5.0.0.src.tar.xz
# openmp
wget http://releases.llvm.org/5.0.0/openmp-5.0.0.src.tar.xz
tar -vxf openmp-5.0.0.src.tar.xz
# build a basic clang5 to bootstrap the libcxx build
mv cfe-5.0.0.src llvm-5.0.0.src/tools/clang
mkdir -p $workdir/build-base
cd $workdir/build-base && cmake ../llvm-5.0.0.src \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_TARGETS_TO_BUILD="PowerPC"
cd $workdir/build-base && nice -n20 make -j40 -k || make
# use the clang5 build to build clang again, but this time with libcxx
cd $workdir
mv libcxx-5.0.0.src llvm-5.0.0.src/projects/libcxx
mv libcxxabi-5.0.0.src llvm-5.0.0.src/projects/libcxxabi
mv openmp-5.0.0.src llvm-5.0.0.src/projects/openmp
mkdir -p $workdir/build
cd $workdir/build && cmake $workdir/llvm-5.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-5.0.0
cd $workdir/build && nice -n20 make -j40 -k || make
cd $workdir/build && make install
@barracuda156
Copy link

@cwpearson does it produce correct code though?
@kencu had clang5 built for PowerPC, but it was broken.

@cwpearson
Copy link
Author

Can't speak to that, sorry!

@barracuda156
Copy link

Can't speak to that, sorry!

Thank you for replying, got it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment