A Recipe for building Saar Raz’s clang concepts branch
Saar Raz has been working on a Concepts implementation, available at https://github.com/saarraz/clang-concepts It’s not much harder to build it than clang usually is, it’s just a matter of getting things checked out into the right places before configuring the build. Just like LLVM and clang normally.
In order to double check how, I peeked at the shell script used by the compiler explorer image to build the clang-concepts compiler: https://github.com/mattgodbolt/compiler-explorer-image/blob/master/clang/build/build-concepts.sh
The really important bit is getting exactly the right commit from LLVM, 893a41656b527af1b00a1f9e5c8fcecfff62e4b6.
To get a working directory something like: Starting from where you want your working tree and build tree, e.g ~/bld/llvm-concepts
git clone https://github.com/llvm-mirror/llvm.git pushd llvm git reset --hard 893a41656b527af1b00a1f9e5c8fcecfff62e4b6 popd pushd llvm/tools git clone https://github.com/saarraz/clang-concepts.git clang popd pushd llvm/projects git clone https://github.com/llvm-mirror/libcxx.git git clone https://github.com/llvm-mirror/libcxxabi.git # The sanitizers: this is optional but you want them git clone https://github.com/llvm-mirror/compiler-rt.git popd
Then to build and install
mkdir build && cd build cmake \ -DCMAKE_INSTALL_PREFIX=~/install/llvm-concepts/ \ -DLLVM_ENABLE_LIBCXX=yes \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_ASSERTIONS=yes \ -DLLVM_PARALLEL_LINK_JOBS=1 \ -G Ninja \ ../llvm/ ninja ninja check ninja install
Note that I install into a separate prefix, keeping it isolated from everything else. The compiler can be invoked as ~/install/llvm-concepts/bin/clang++. There’s no particular reason to put the compiler on your PATH.