Skip to content

Instantly share code, notes, and snippets.

@Purva-Chaudhari
Last active June 17, 2022 06:08
Show Gist options
  • Save Purva-Chaudhari/6c9c6a15dc07a2b4ae475bc400329e07 to your computer and use it in GitHub Desktop.
Save Purva-Chaudhari/6c9c6a15dc07a2b4ae475bc400329e07 to your computer and use it in GitHub Desktop.
3 Stage comilation of llvm (on VUC)

Build LLVM

LLVM Build Bot compiling

Stage 1

Git clone llvm-project

git clone https://github.com/llvm/llvm-project.git
cd llvm-project
git config --local advice.detachedHead false
git fetch --depth 100 origin main

Building directory llvm_build0 (not inside llvm-project)

mkdir llvm_build0 && cd llvm_build0
cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF /build/pchaudha/llvm-project/llvm -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld' -DBUILD_SHARED_LIBS=On 
ninja

Stage 2

(Only asan build instructions are put here)

  1. build libcxx_build_asan directory
mkdir libcxx_build_asan && cd libcxx_build_asan
export ASAN_SYMBOLIZER_PATH="/build/pchaudha/llvm_build0/bin/llvm-symbolizer" 
export ASAN_OPTIONS="check_initialization_order=true:detect_stack_use_after_return=1:detect_leaks=1"
llvm_use_sanitizer="Address"
fsanitize_flag="-fsanitize=address"
cmake_libcxx_cflags="-mllvm -asan-use-private-alias=1"
sanitizer_cflags+=" $sanitizer_ldflags -w"
cmake -GNinja -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF -DCMAKE_C_COMPILER=/build/pchaudha/llvm_build0/bin/clang -DCMAKE_CXX_COMPILER=/build/pchaudha/llvm_build0/bin/clang++ -DLLVM_USE_LINKER=lld -DLLVM_ENABLE_PROJECTS='libcxx;libcxxabi' -DCMAKE_BUILD_TYPE=Release -DLLVM_USE_SANITIZER=${llvm_use_sanitizer} -DCMAKE_C_FLAGS="${fsanitize_flag} ${cmake_libcxx_cflags}" -DCMAKE_CXX_FLAGS="${fsanitize_flag} ${cmake_libcxx_cflags}" -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DBUILD_SHARED_LIBS=On /build/pchaudha/llvm-project/llvm
ninja cxx cxxabi
  1. Build llvm_build_asan directory
cd llvm_build_asan && llvm_build_asan
export  ROOT=/build/pchaudha
export libcxx_build_dir=libcxx_build_asan
libcxx_runtime_path=$(dirname $(find ${ROOT}/${libcxx_build_dir} -name libc++.so))
sanitizer_ldflags="-lc++abi -Wl,--rpath=${libcxx_runtime_path} -L${libcxx_runtime_path}"
sanitizer_cflags="-nostdinc++ -isystem ${ROOT}/${libcxx_build_dir}/include -isystem ${ROOT}/${libcxx_build_dir}/include/c++/v1 $fsanitize_flag"
cmake -GNinja -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF -DCMAKE_C_COMPILER=/build/pchaudha/llvm_build0/bin/clang -DCMAKE_CXX_COMPILER=/build/pchaudha/llvm_build0/bin/clang++ -DLLVM_USE_LINKER=lld -DLLVM_ENABLE_PROJECTS='clang;lld;clang-tools-extra;mlir' -DCMAKE_BUILD_TYPE=Release -DLLVM_USE_SANITIZER=${llvm_use_sanitizer} -DLLVM_ENABLE_LIBCXX=ON -DCMAKE_C_FLAGS="${sanitizer_cflags}" -DCMAKE_CXX_FLAGS="${sanitizer_cflags}" -DCMAKE_EXE_LINKER_FLAGS="${sanitizer_ldflags}" -DBUILD_SHARED_LIBS=On /build/pchaudha/llvm-project/llvm
ninja

Ref

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment