aboutsummaryrefslogtreecommitdiffhomepage
path: root/content/2022-07-07-llvm-orc-jit/build-llvm.sh
blob: df9d6b8bf5c231b0904ec7dc4abd6dab7f703442 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/bash
#
# A small utility script to help me build specific llvm versions.
#
# ## General cmake build info
#
#    See [1] for an overview of the llvm cmake build and a discussion of the most
#    frequently used cmake options.
#
# ## Building on low end machines
#
#    Builds with debug information can use a lot of RAM and disk space and is
#    usually slower to run. You can improve RAM usage by using lld, see the
#    LLVM_USE_LINKER option.
#
#    LLVM_PARALLEL_{COMPILE,LINK}_JOBS:STRING [2]
#       Building the llvm toolchain can use a lot of resources, particularly
#       linking. These options, when you use the Ninja generator, allow you to
#       restrict the parallelism. For example, to avoid OOMs or going into swap,
#       permit only one link job per 15GB of RAM available on a 32GB machine,
#       specify -G Ninja -DLLVM_PARALLEL_LINK_JOBS=2.
#
# [1]: https://llvm.org/docs/CMake.html
# [2]: https://llvm.org/docs/CMake.html#frequently-used-llvm-related-variables

#TAG=llvmorg-14.0.6
#TAG=llvmorg-15.0.0
#TAG=llvmorg-15.0.7
TAG=llvmorg-17.0.5

SRCDIR=src-$TAG

if [[ ! -d $SRCDIR ]]; then
    git clone --depth 1 --branch $TAG https://github.com/llvm/llvm-project.git $SRCDIR
fi

cmake -S $SRCDIR/llvm -B $SRCDIR/BUILD -G Ninja \
    -DCMAKE_C_COMPILER=clang \
    -DCMAKE_CXX_COMPILER=clang++ \
    -DCMAKE_INSTALL_PREFIX=$PWD/install-$TAG \
    -DCMAKE_BUILD_TYPE=Debug \
    -DLLVM_ENABLE_PROJECTS='clang' \
    -DLLVM_BUILD_LLVM_DYLIB=1 \
    -DLLVM_ENABLE_ASSERTIONS=ON \
    -DLLVM_INCLUDE_TESTS=OFF \
    -DLLVM_TARGETS_TO_BUILD='X86' \
    -DLLVM_USE_LINKER=lld \
    -DLLVM_PARALLEL_LINK_JOBS=1

cmake --build $SRCDIR/BUILD --target install