11#! /bin/zsh
22dry_run=
3- PROJECTS=(-DLLVM_ENABLE_PROJECTS=' bolt;clang;clang-tools-extra;flang;lld;compiler-rt; mlir;polly;libc;cross-project-tests' -DLLVM_ENABLE_RUNTIMES=' openmp;libcxx;libcxxabi;libunwind' )
3+ PROJECTS=(-DLLVM_ENABLE_PROJECTS=' bolt;clang;clang-tools-extra;flang;lld;mlir;polly;libc;cross-project-tests' -DLLVM_ENABLE_RUNTIMES=' compiler-rt; openmp;libcxx;libcxxabi;libunwind' )
44SLIM=(-DCLANG_ENABLE_OBJC_REWRITER=off -DCLANG_ENABLE_STATIC_ANALYZER=off -DCLANG_PLUGIN_SUPPORT=off)
55
66while (( $# )) ; do
@@ -15,9 +15,14 @@ while (($#)); do
1515done
1616
1717LLVM=(-GNinja " ${PROJECTS[@]} " " ${SLIM[@]} " -DCMAKE_CXX_COMPILER=$HOME /Stable/bin/clang++ -DCMAKE_C_COMPILER=$HOME /Stable/bin/clang -DCMAKE_CXX_ARCHIVE_CREATE=" $HOME /Stable/bin/llvm-ar qc --thin <TARGET> <OBJECTS>" -DCMAKE_CXX_ARCHIVE_FINISH=:
18+ -DLLVM_TARGETS_TO_BUILD=host
1819 -DLLVM_OPTIMIZED_TABLEGEN=On -DLLVM_APPEND_VC_REV=OFF -DLLVM_ENABLE_LLD=On -DLLVM_ENABLE_UNWIND_TABLES=off -DPython3_EXECUTABLE=/usr/bin/python3
1920 -DLIBOMPTARGET_BUILD_DEVICERTL_BCLIB=off -DLIBOMPTARGET_BUILD_AMDGPU_PLUGIN=off -DLIBOMPTARGET_BUILD_CUDA_PLUGIN=off -DCMAKE_BUILD_WITH_INSTALL_RPATH=on)
20- [[ $( uname -a) =~ ' x86_64 GNU' ]] && LLVM=(${LLVM[@]} -DCMAKE_CXX_FLAGS=' --start-no-unused-arguments -Wa,--crel,--allow-experimental-crel --end-no-unused-arguments' -DCMAKE_EXE_LINKER_FLAGS=' -no-pie' -DCMAKE_SHARED_LINKER_FLAGS=' -Wl,-z,pack-relative-relocs' )
21+ [[ $( uname -a) =~ ' x86_64 GNU' ]] && LLVM=(${LLVM[@]} -DCMAKE_EXE_LINKER_FLAGS=' -no-pie' -DCMAKE_SHARED_LINKER_FLAGS=' -Wl,-z,pack-relative-relocs' )
22+ if [[ $1 != custom* ]]; then
23+ [[ $( uname -a) =~ ' x86_64 GNU' ]] && LLVM=(${LLVM[@]} -DCMAKE_CXX_FLAGS=' --start-no-unused-arguments -Wa,--crel,--allow-experimental-crel --end-no-unused-arguments' )
24+ fi
25+
2126for i in " ${LLVM[@]} " ; do
2227 (( $LLVM [(Ie)$i ])) && LLVMFULL+=(" $i " )
2328done
@@ -41,17 +46,17 @@ if [[ $1 == stable ]]; then
4146
4247# Build with stable clang/lld
4348elif [[ $1 == preset ]]; then
44- cmake -Sllvm -B/tmp/Rel -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/tmp/opt/Rel ${LLVMFULL} -DLLVM_BUILD_EXAMPLES=on -DLLVM_ENABLE_ASSERTIONS=on -DLLVM_ENABLE_{CURL,HTTPLIB,SPHINX}=ON -DLLVM_BINUTILS_INCDIR=$HOME /Dev/binutils-gdb/include -DLLVM_OPTIMIZED_TABLEGEN=Off -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=' ARC;AVR;CSKY;DirectX;LoongArch;M68k;SPIRV;Xtensa' -DLIBCXX_ABI_VERSION=2
45- cmake -Sllvm -B/tmp/Debug -DBUILD_SHARED_LIBS=On -DCMAKE_BUILD_TYPE=Debug ${LLVM} -DCMAKE_EXPORT_COMPILE_COMMANDS=On -DCOMPILER_RT_DEBUG=On -DLLVM_USE_SPLIT_DWARF=On -DLLVM_BINUTILS_INCDIR=$HOME /Dev/binutils-gdb/include -DLLVM_OPTIMIZE_SANITIZED_BUILDS=OFF -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=' ARC;AVR;LoongArch;M68k;Xtensa'
49+ cmake -Sllvm -B/tmp/Rel -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/tmp/opt/Rel ${LLVMFULL} -DLLVM_BUILD_EXAMPLES=on -DLLVM_ENABLE_ASSERTIONS=on -DLLVM_ENABLE_{CURL,HTTPLIB,SPHINX}=ON -DLLVM_BINUTILS_INCDIR=$HOME /Dev/binutils-gdb/include -DLLVM_OPTIMIZED_TABLEGEN=Off -DLLVM_TARGETS_TO_BUILD=all - DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=' ARC;AVR;CSKY;DirectX;LoongArch;M68k;SPIRV;Xtensa' -DLIBCXX_ABI_VERSION=2
50+ cmake -Sllvm -B/tmp/Debug -DBUILD_SHARED_LIBS=On -DCMAKE_BUILD_TYPE=Debug ${LLVM} -DCMAKE_EXPORT_COMPILE_COMMANDS=On -DCOMPILER_RT_DEBUG=On -DLLVM_USE_SPLIT_DWARF=On -DLLVM_BINUTILS_INCDIR=$HOME /Dev/binutils-gdb/include -DLLVM_OPTIMIZE_SANITIZED_BUILDS=OFF -DLLVM_TARGETS_TO_BUILD=all - DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=' ARC;AVR;LoongArch;M68k;Xtensa'
4651elif [[ $1 == release ]]; then
47- cmake -Sllvm -Bout/release -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=off ${LLVM} -DLLVM_TARGETS_TO_BUILD=host - DLLVM_ENABLE_PROJECTS=' clang;lld' -DLLVM_OPTIMIZED_TABLEGEN=Off -DLLVM_ENABLE_PIC=off -DCMAKE_EXE_LINKER_FLAGS=$HOME /Dev/mimalloc/out/release/libmimalloc.a -DCMAKE_CXX_STANDARD=20
52+ cmake -Sllvm -Bout/release -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=off ${LLVM} -DLLVM_ENABLE_PROJECTS=' clang;lld' -DLLVM_OPTIMIZED_TABLEGEN=Off -DLLVM_ENABLE_PIC=off -DCMAKE_EXE_LINKER_FLAGS=$HOME /Dev/mimalloc/out/release/libmimalloc.a -DCMAKE_CXX_STANDARD=20
4853elif [[ $1 == laptop ]]; then
4954 cmake -Sllvm -B$HOME /llvm/out/debug -DBUILD_SHARED_LIBS=On -DCMAKE_BUILD_TYPE=Debug ${LLVM} -DCMAKE_CXX_COMPILER=$HOME /Stable/bin/clang++ -DCMAKE_C_COMPILER=$HOME /Stable/bin/clang -DCMAKE_CXX_ARCHIVE_CREATE=" $HOME /Stable/bin/llvm-ar qc --thin <TARGET> <OBJECTS>" -DCMAKE_CXX_ARCHIVE_FINISH=: -DCMAKE_EXPORT_COMPILE_COMMANDS=On -DCOMPILER_RT_DEBUG=On -DLLVM_ENABLE_PROJECTS=' clang;clang-tools-extra;lld' -DLLVM_TARGETS_TO_BUILD=' AArch64;X86;RISCV' -DLLVM_PARALLEL_LINK_JOBS=2 -DLLVM_USE_SPLIT_DWARF=On -DLLVM_OPTIMIZE_SANITIZED_BUILDS=OFF
5055elif [[ $1 == static-debug ]]; then
5156 cmake -Sllvm -B/tmp/StaticDebug -DCMAKE_BUILD_TYPE=Debug ${LLVM} -DCMAKE_CXX_FLAGS_DEBUG=' -g -fno-limit-debug-info' -DCMAKE_EXE_LINKER_FLAGS=-Wl,--gdb-index -DCMAKE_SHARED_LINKER_FLAGS=' -no-pie -Wl,--gdb-index' -DCOMPILER_RT_DEBUG=On -DLLVM_USE_SPLIT_DWARF=On -DLLVM_BINUTILS_INCDIR=$HOME /Dev/binutils-gdb/include " ${@: 2} "
5257
5358elif [[ $1 == asan ]]; then
54- cmake -Sllvm -Bout/ asan -DCMAKE_BUILD_TYPE=RelWithDebInfo ${LLVM} -DCMAKE_CXX_FLAGS_DEBUG=' -g1 ' -DLLVM_USE_SANITIZER=Address -DLLVM_OPTIMIZE_SANITIZED_BUILDS=Off -DLLVM_ENABLE_PROJECTS=' clang;lld;clang-tools-extra'
59+ cmake -Sllvm -B/tmp/out/ asan -DCMAKE_BUILD_TYPE=RelWithDebInfo ${LLVM} -DCMAKE_CXX_FLAGS_DEBUG=' -g ' -DLLVM_USE_SANITIZER=Address -DLLVM_OPTIMIZE_SANITIZED_BUILDS=Off -DLLVM_ENABLE_PROJECTS=' clang;lld;clang-tools-extra' -DLLVM_USE_SPLIT_DWARF=On
5560elif [[ $1 == tsan ]]; then
5661 cmake -Sllvm -B/tmp/out/tsan -DCMAKE_BUILD_TYPE=RelWithDebInfo ${LLVM} -DCMAKE_CXX_FLAGS_DEBUG=' -g -fno-limit-debug-info' -DLLVM_USE_SANITIZER=Thread -DLLVM_ENABLE_PROJECTS=' clang;lld'
5762elif [[ $1 == ubsan ]]; then
@@ -74,7 +79,7 @@ elif [[ $1 == s2-asan* ]]; then
7479 cmake -Sllvm -B/tmp/out/$1 -DCMAKE_BUILD_TYPE=RelWithDebInfo ${LLVM} -DCMAKE_CXX_COMPILER=/tmp/Rel/bin/clang++ -DCMAKE_C_COMPILER=/tmp/Rel/bin/clang -DLLVM_USE_SANITIZER=Address -DLLVM_OPTIMIZE_SANITIZED_BUILDS=Off -DLLVM_ENABLE_PROJECTS=' clang;lld;clang-tools-extra;mlir'
7580elif [[ $1 == s2-ubsan* ]]; then
7681 # ninja clang lld ubsan compiler-rt-headers
77- cmake -Sllvm -B/tmp/out/$1 -DCMAKE_BUILD_TYPE=RelWithDebInfo ${LLVM} -DCMAKE_CXX_COMPILER=/tmp/Rel/ bin/clang++ -DCMAKE_C_COMPILER=/tmp/Rel /bin/clang -DLLVM_USE_SANITIZER=Undefined -DLLVM_OPTIMIZE_SANITIZED_BUILDS=Off -DLLVM_ENABLE_PROJECTS=' clang;lld;clang-tools-extra'
82+ cmake -Sllvm -B/tmp/out/$1 -DCMAKE_BUILD_TYPE=RelWithDebInfo ${LLVM} -DCMAKE_CXX_COMPILER=$HOME /llvm/out/stable/ bin/clang++ -DCMAKE_C_COMPILER=$HOME /llvm/out/stable /bin/clang -DLLVM_USE_SANITIZER=Undefined -DLLVM_OPTIMIZE_SANITIZED_BUILDS=Off -DLLVM_ENABLE_PROJECTS=' clang;lld;clang-tools-extra'
7883elif [[ $1 == s2-custom* ]]; then
7984 rm -fr /tmp/out/$1
8085 cmake -Sllvm -B/tmp/out/$1 -DCMAKE_BUILD_TYPE=Release ${LLVM} -DCMAKE_CXX_COMPILER=/tmp/Rel/bin/clang++ -DCMAKE_C_COMPILER=/tmp/Rel/bin/clang " ${@: 2} "
0 commit comments