-
Notifications
You must be signed in to change notification settings - Fork 15.4k
Open
Labels
Description
RISC-V has many optional extensions, and I currently have no clue how to specify these in a libc build.
I have an easy to reproduce setup. After cloning the llvm project, I run this script from the root directory:
#!/usr/bin/env bash
rm -rf build-standalone
mkdir build-standalone
pushd build-standalone
C_COMPILER=clang-19
C_FLAGS="--target=riscv32 -march=rv32ic -mabi=ilp32"
CXX_COMPILER=clang++-19
TARGET_TRIPLE=riscv32-unknown-elf
cmake ../runtimes \
-G Ninja \
-DCMAKE_INSTALL_PREFIX=$(pwd)/install \
-DCMAKE_C_COMPILER=$C_COMPILER \
"-DCMAKE_C_FLAGS=${C_FLAGS}" \
"-DCMAKE_CXX_FLAGS=${C_FLAGS}" \
-DCMAKE_CXX_COMPILER=$CXX_COMPILER \
-DLLVM_ENABLE_RUNTIMES=libc \
-DLLVM_LIBC_FULL_BUILD=ON \
-DLIBC_TARGET_TRIPLE=$TARGET_TRIPLE \
-DCMAKE_BUILD_TYPE=Release
ninja libc libm
popd
Clang was installed with the following command:
wget -qO- | bash -s -- 19https://apt.llvm.org/llvm.sh
It fails with the following message:
Run Build Command(s):/usr/bin/ninja cmTC_95cfc && [1/2] Building C object CMakeFiles/cmTC_95cfc.dir/testCCompiler.c.o
[2/2] Linking C executable cmTC_95cfc
FAILED: cmTC_95cfc
: && /usr/bin/clang-19 --target=riscv32 -march=rv32ic -mabi=ilp32 CMakeFiles/cmTC_95cfc.dir/testCCompiler.c.o -o cmTC_95cfc && :
ld.lld: error: unable to find library -lc
ld.lld: error: unable to find library -lm
ld.lld: error: unable to find library -lgcc
If you omit the CLAGS, it successfully builds for seemingly rv32ic.
Somebody knows how to do build for a user specified architecture string?