|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +TARGET_DIR=${1:?"Missing installation directory argument"} |
| 4 | +ON_PATCH_FAIL="exit 1" |
| 5 | + |
| 6 | +if test "x$2" == "x--debug-build"; |
| 7 | +then |
| 8 | +LLVM_BUILD_MODE="-DCMAKE_BUILD_TYPE=Debug -DLLVM_ENABLE_ASSERTIONS=ON" |
| 9 | +export CFLAGS=-O0 |
| 10 | +export CPPFLAGS=-O0 |
| 11 | +export CXXFLAGS=-O0 |
| 12 | +build_dir=llvm-build-Debug |
| 13 | +else |
| 14 | +export CFLAGS=-O3 |
| 15 | +export CPPFLAGS=-O3 |
| 16 | +export CXXFLAGS=-O3 |
| 17 | +LLVM_BUILD_MODE="-DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON" |
| 18 | +build_dir=llvm-build-Release |
| 19 | +fi |
| 20 | + |
| 21 | +echo "### LLVM build mode: "$LLVM_BUILD_MODE |
| 22 | + |
| 23 | +script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" |
| 24 | +patch_dir=$script_dir/../patches |
| 25 | +llvm_co_dir=release_21 |
| 26 | +llvm_branch=openasip-llvm-22-patched |
| 27 | + |
| 28 | +mkdir -p $build_dir |
| 29 | +cd $build_dir |
| 30 | + |
| 31 | +function eexit { |
| 32 | + echo "$1" |
| 33 | + exit 1 |
| 34 | +} |
| 35 | + |
| 36 | +function fetch_llvm { |
| 37 | + REV_TO_FETCH=$1 |
| 38 | + if [ -n "$REV_TO_FETCH" ]; then |
| 39 | + REV_TO_FETCH="-r$REV_TO_FETCH" |
| 40 | + fi |
| 41 | + |
| 42 | + if ! test -d $llvm_co_dir; |
| 43 | + then |
| 44 | + git clone --single-branch --depth=1 --branch $llvm_branch https://github.com/cpc/llvmtce.git $llvm_co_dir\ |
| 45 | + || eexit "Git clone $REV_TOFETCH from llvm failed" |
| 46 | + else |
| 47 | + cd $llvm_co_dir; |
| 48 | + git checkout $llvm_branch || eexit "checking out git branch failed" |
| 49 | + git fetch |
| 50 | + git reset --hard $llvm_branch || eexit "resetting --hard HEAD failed" |
| 51 | + cd ..; |
| 52 | + fi |
| 53 | +} |
| 54 | + |
| 55 | +fetch_llvm |
| 56 | + |
| 57 | +cd $llvm_co_dir |
| 58 | +mkdir -p build |
| 59 | +cd build |
| 60 | + |
| 61 | +# -DLLVM_ENABLE_Z3_SOLVER=OFF due to the issue described in |
| 62 | +# https://reviews.llvm.org/D54978#1390652 |
| 63 | +# You might also need to delete libz3-dev. |
| 64 | +# This appears at least with Ubuntu 18.04. |
| 65 | +cmake ../llvm/ -DLLVM_ENABLE_PROJECTS="clang;lld" \ |
| 66 | + -G "Unix Makefiles" \ |
| 67 | + $LLVM_BUILD_MODE\ |
| 68 | + -DCMAKE_INSTALL_PREFIX=$TARGET_DIR \ |
| 69 | + -DLLVM_TARGETS_TO_BUILD="X86" \ |
| 70 | + -DLLVM_LINK_LLVM_DYLIB=TRUE \ |
| 71 | + -DLLVM_ENABLE_RTTI=TRUE \ |
| 72 | + -DLLVM_ENABLE_Z3_SOLVER=OFF \ |
| 73 | + || eexit "Configuring LLVM/Clang failed." |
| 74 | +make -j$(nproc) || eexit "Building LLVM/Clang failed." |
| 75 | +make install || eexit "Installation of LLVM/Clang failed." |
0 commit comments