[llvm] [LLVM][CMake][NFC] Use generator expression to separate CXXFLAGS (PR #173869)

Krasimir Georgiev via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 31 02:20:27 PST 2025


krasimirgg wrote:

We have a bot to build the rust compiler with LLVM close to HEAD. 

Looks like starting from this commit, we're seeing some new linker errors like:
```
librustc_driver-c05f028e6e8d2de9.so: undefined reference to `typeinfo for llvm::AssemblyAnnotationWriter'
```
* https://buildkite.com/llvm-project/rust-llvm-integrate-prototype/builds/42504#019b6e7c-9018-48e5-9a64-91adc023c53f/L625

Some sort of RTTI mismatch between how we build LLVM and the rust llvm-wrapper.

The builder uses this configuration:
```
cmake "${BUILD_DIR}/src/llvm-project/llvm" -G Ninja \
  -DLLVM_ENABLE_ASSERTIONS=OFF \
  -DLLVM_TARGETS_TO_BUILD='AArch64;ARM;Hexagon;LoongArch;MSP430;Mips;NVPTX;PowerPC;RISCV;Sparc;SystemZ;WebAssembly;X86' \
  -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='Xtensa' \
  -DLLVM_INCLUDE_EXAMPLES=OFF \
  -DLLVM_INCLUDE_DOCS=OFF \
  -DLLVM_INCLUDE_BENCHMARKS=OFF \
  -DLLVM_ENABLE_TERMINFO=OFF \
  -DLLVM_ENABLE_LIBEDIT=OFF \
  -DLLVM_ENABLE_BINDINGS=OFF \
  -DLLVM_ENABLE_Z3_SOLVER=OFF \
  -DLLVM_PARALLEL_COMPILE_JOBS=72 \
  -DLLVM_TARGET_ARCH=x86_64 \
  -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-unknown-linux-gnu \
  -DLLVM_ENABLE_ZLIB=ON \
  -DLLVM_ENABLE_LIBXML2=OFF \
  -DLLVM_VERSION_SUFFIX=-rust-dev \
  -DLLVM_CCACHE_BUILD=ON \
  -DCMAKE_INSTALL_MESSAGE=LAZY \
  -DCMAKE_C_COMPILER=/usr/bin/clang-21 \
  -DCMAKE_CXX_COMPILER=/usr/bin/clang++-21 \
  -DCMAKE_ASM_COMPILER=/usr/bin/clang-21 \
  -DCMAKE_C_FLAGS='-ffunction-sections -fdata-sections -fPIC --target=x86_64-unknown-linux-gnu' \
  -DCMAKE_CXX_FLAGS='-ffunction-sections -fdata-sections -fPIC --target=x86_64-unknown-linux-gnu -stdlib=libc++' \
  -DCMAKE_AR=/usr/bin/ar \
  -DCMAKE_INSTALL_PREFIX="${BUILD_DIR}/llvm-installed" \
  -DCMAKE_ASM_FLAGS=' -ffunction-sections -fdata-sections -fPIC --target=x86_64-unknown-linux-gnu' \
  -DCMAKE_BUILD_TYPE=Release \
  -DLIBUNWIND_ENABLE_SHARED=false \
  -DLLVM_INSTALL_UTILS=true
```

Adding `-DLLVM_ENABLE_RTTI=ON` fixes the build; but I'm not sure if it's expected that for rustc, the underlying LLVM really needs to be built with RTTI. cc @nikic 

https://github.com/llvm/llvm-project/pull/173869


More information about the llvm-commits mailing list