Skip to content

Instantly share code, notes, and snippets.

@HerrSpace
Created July 25, 2022 15:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save HerrSpace/1dfd2f0929d94221fd04647095a56ace to your computer and use it in GitHub Desktop.
Save HerrSpace/1dfd2f0929d94221fd04647095a56ace to your computer and use it in GitHub Desktop.
Building a bunch of LLVM versions from source
CONTAINER='debian:buster'
if [ ! -d ~/repos/llvm-project ]; then
mkdir -p ~/repos/
cd ~/repos/
git clone https://github.com/llvm/llvm-project.git
fi
mkdir -p ~/repos/llvm-bin/
cat << EOF > ~/repos/llvm-bin/build.bash
#!/bin/bash
set -x
set -e
apt update
apt install -y python3 git cmake clang build-essential
cat << EOT > /tmp/hello.c
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
EOT
versions=("14.0.6" "13.0.1" "12.0.1" "11.1.0" "10.0.1" "9.0.1" "8.0.1" "7.1.0" "6.0.1" "5.0.2" "4.0.1")
for version in \${versions[*]}; do
cd /llvm
git clean -xf
git checkout "llvmorg-\$version"
rm -rf /llvm/install /llvm/build
mkdir -p /llvm/install /llvm/build
cd /llvm/build
cmake -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../install -G "Unix Makefiles" ../llvm
make -j`nproc`
make install
rm -f /tmp/hello
/llvm/install/bin/clang -v
/llvm/install/bin/clang /tmp/hello.c -o /tmp/hello
/tmp/hello
mv /llvm/install "/llvm-bin/llvm-\$version"
export CC="/llvm-bin/llvm-\$version/bin/clang"
export CXX="/llvm-bin/llvm-\$version/bin/clang++"
done
EOF
chmod +x ~/repos/llvm-bin/build.bash
docker run -w /llvm -v "$(pwd)/llvm-project:/llvm" -v "$(pwd)/llvm-bin:/llvm-bin" $CONTAINER /llvm-bin/build.bash
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment