From bd89ebc45a0dbfe4cb2c4b97369ce12a29b9e6c3 Mon Sep 17 00:00:00 2001 From: wpt967 Date: Mon, 12 Aug 2024 15:35:19 +0100 Subject: [PATCH] Put llvm and compiler-rt build directories in one place. (#30) Adjust the llvm build script to put the llvm and compiler-rt build directories outside the llvm-project source directory. A new build directory 'build' at the toplevel of the revive directory is used instead. LLVM is built into 'build/llvm' and compiler-rt into 'build/compiler-rt'. Adjust .gitignore to ignore the contents of the build directory. This is intended to keep the build artifacts separate from the upstream sources and any changes made as part of the revive work. --- .gitignore | 1 + build-llvm.sh | 39 +++++++++++++++++++++++---------------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index be56afb..983c6d4 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ artifacts tmp package-lock.json /*.html +/build diff --git a/build-llvm.sh b/build-llvm.sh index 96cf0a0..a2d9a68 100755 --- a/build-llvm.sh +++ b/build-llvm.sh @@ -13,11 +13,17 @@ fi # Build LLVM, clang -cd llvm-project +LLVM_SRC_PREFIX=${PWD}/llvm-project +LLVM_SRC_DIR=${LLVM_SRC_PREFIX}/llvm +LLVM_BUILD_DIR=${PWD}/build/llvm +if [ ! -d ${LLVM_BUILD_DIR} ] ; then + mkdir -p ${LLVM_BUILD_DIR} +fi -mkdir -p build -cd build -cmake -G Ninja -DLLVM_ENABLE_ASSERTIONS=On \ +cmake -G Ninja \ + -S ${LLVM_SRC_DIR} \ + -B ${LLVM_BUILD_DIR} \ + -DLLVM_ENABLE_ASSERTIONS=On \ -DLLVM_ENABLE_TERMINFO=Off \ -DLLVM_ENABLE_LIBXML2=Off \ -DLLVM_ENABLE_ZLIB=Off \ @@ -25,17 +31,17 @@ cmake -G Ninja -DLLVM_ENABLE_ASSERTIONS=On \ -DLLVM_TARGETS_TO_BUILD='RISCV' \ -DLLVM_ENABLE_ZSTD=Off \ -DCMAKE_BUILD_TYPE=MinSizeRel \ - -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \ - ../llvm - -ninja -ninja install + -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} +cmake --build ${LLVM_BUILD_DIR} +cmake --install ${LLVM_BUILD_DIR} # Build compiler builtins -cd ../compiler-rt -mkdir -p build -cd build +COMPILER_RT_SRC_DIR=${LLVM_SRC_PREFIX}/compiler-rt +COMPILER_RT_BUILD_DIR=${PWD}/build/compiler-rt +if [ ! -d ${COMPILER_RT_BUILD_DIR} ] ; then + mkdir -p ${COMPILER_RT_BUILD_DIR} +fi build_compiler_rt() { case "$1" in @@ -46,6 +52,8 @@ build_compiler_rt() { CFLAGS="--target=riscv${1} -march=rv${1}em -mabi=${TARGET_ABI} -mcpu=generic-rv${1} -nostdlib -nodefaultlibs" cmake -G Ninja \ + -S ${COMPILER_RT_SRC_DIR} \ + -B ${COMPILER_RT_BUILD_DIR} \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \ -DCOMPILER_RT_BUILD_BUILTINS=ON \ @@ -70,11 +78,10 @@ build_compiler_rt() { -DCOMPILER_RT_TEST_COMPILER=${INSTALL_DIR}/bin/clang \ -DCMAKE_CXX_FLAGS="${CFLAGS}" \ -DCMAKE_SYSTEM_NAME=unknown \ - -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ - .. + -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON - ninja - ninja install + cmake --build ${COMPILER_RT_BUILD_DIR} + cmake --install ${COMPILER_RT_BUILD_DIR} } build_compiler_rt 32