From 4012843f3e4dfb08168b545660f29e05c68656cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Mon, 22 Mar 2021 14:07:49 +0200 Subject: [PATCH] built-llvm: Add options for doing a stage2 build, and for building with LTO --- build-llvm.sh | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/build-llvm.sh b/build-llvm.sh index 1a26e19..52f7a8b 100755 --- a/build-llvm.sh +++ b/build-llvm.sh @@ -18,18 +18,31 @@ set -e : ${LLVM_VERSION:=llvmorg-11.0.0} ASSERTS=OFF -BUILDDIR=build unset HOST +BUILDDIR="build" +ASSERTSSUFFIX="" while [ $# -gt 0 ]; do case "$1" in --disable-asserts) ASSERTS=OFF - BUILDDIR=build + ASSERTSSUFFIX="" ;; --enable-asserts) ASSERTS=ON - BUILDDIR=build-asserts + ASSERTSSUFFIX="-asserts" + ;; + --stage2) + STAGE2=1 + BUILDDIR="$BUILDDIR-stage2" + ;; + --thinlto) + LTO="thin" + BUILDDIR="$BUILDDIR-thinlto" + ;; + --lto) + LTO="full" + BUILDDIR="$BUILDDIR-lto" ;; --full-llvm) FULL_LLVM=1 @@ -43,9 +56,10 @@ while [ $# -gt 0 ]; do esac shift done +BUILDDIR="$BUILDDIR$ASSERTSSUFFIX" if [ -z "$CHECKOUT_ONLY" ]; then if [ -z "$PREFIX" ]; then - echo $0 [--enable-asserts] [--full-llvm] [--host=triple] dest + echo $0 [--enable-asserts] [--stage2] [--thinlto] [--lto] [--full-llvm] [--host=triple] dest exit 1 fi @@ -131,6 +145,19 @@ if [ -n "$HOST" ]; then CMAKEFLAGS="$CMAKEFLAGS -DCLANG_DEFAULT_CXX_STDLIB=libc++" CMAKEFLAGS="$CMAKEFLAGS -DCLANG_DEFAULT_LINKER=lld" BUILDDIR=$BUILDDIR-$HOST +elif [ -n "$STAGE2" ]; then + # Build using an earlier built and installed clang in the target directory + export PATH="$PREFIX/bin:$PATH" + CMAKEFLAGS="$CMAKEFLAGS -DCMAKE_C_COMPILER=clang" + CMAKEFLAGS="$CMAKEFLAGS -DCMAKE_CXX_COMPILER=clang++" + if [ "$(uname)" != "Darwin" ]; then + # Current lld isn't yet properly usable on macOS + CMAKEFLAGS="$CMAKEFLAGS -DLLVM_USE_LINKER=lld" + fi +fi + +if [ -n "$LTO" ]; then + CMAKEFLAGS="$CMAKEFLAGS -DLLVM_ENABLE_LTO=$LTO" fi TOOLCHAIN_ONLY=ON