Hello,
I am tring to build libcxx and libcxxabi for riscv target, by following steps here Building libc++ — libc++ documentation , using the script below:
BUILDDIR=${HOME}/rvllvm
TARGET=riscv64-unknown-elf
arch=rv32imac
abi=ilp32
llvm_bin=${BUILDDIR}/bin
target=${TARGET}
runtimes_flags="-march=${arch} -mabi=${abi} -mcmodel=medany -ffunction-sections -fdata-sections"
instlibprefix=${INSTDIR}/${target}/lib/${arch}/${abi}
instincprefix=${INSTDIR}/${target}/include
mkdir -p buildruntime
pushd buildruntime
cmake -G Ninja \
-DCMAKE_AR=${llvm_bin}/llvm-ar \
-DCMAKE_ASM_COMPILER_TARGET=${target} \
-DCMAKE_ASM_FLAGS="${runtimes_flags}" \
-DCMAKE_BUILD_TYPE=MinSizeRel \
-DCMAKE_CXX_COMPILER=${llvm_bin}/clang++ \
-DCMAKE_CXX_COMPILER_TARGET=${target} \
-DCMAKE_CXX_FLAGS="${runtimes_flags} -std=gnu++20" \
-DCMAKE_C_COMPILER=${llvm_bin}/clang \
-DCMAKE_C_COMPILER_TARGET=${target} \
-DCMAKE_C_FLAGS="${runtimes_flags}" \
-DCMAKE_INSTALL_PREFIX=${instlibprefix} \
-DCMAKE_NM=${llvm_bin}/llvm-nm \
-DCMAKE_RANLIB=${llvm_bin}/llvm-ranlib \
-DCMAKE_C_COMPILER_TARGET=${TARGET} \
-DCMAKE_CXX_COMPILER_TARGET=${TARGET} \
-DCMAKE_ASM_COMPILER_TARGET=${TARGTE} \
-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY \
-DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx;libunwind" \
-DLIBCXXABI_BAREMETAL=ON \
-DLIBCXXABI_ENABLE_ASSERTIONS=OFF \
-DLIBCXXABI_ENABLE_SHARED=OFF \
-DLIBCXXABI_ENABLE_STATIC=ON \
-DLIBCXXABI_LIBCXX_INCLUDES=${instincprefix}/c++/v1 \
-DLIBCXXABI_USE_COMPILER_RT=ON \
-DLIBCXXABI_USE_LLVM_UNWINDER=ON \
-DLIBCXX_CXX_ABI=libcxxabi \
-DLIBCXX_ENABLE_DEBUG_MODE_SUPPORT=OFF \
-DLIBCXX_ENABLE_FILESYSTEM=OFF \
-DLIBCXX_ENABLE_SHARED=OFF \
-DLIBCXX_ENABLE_STATIC=ON \
-DLIBCXX_INCLUDE_BENCHMARKS=OFF \
-DLIBUNWIND_ENABLE_SHARED=OFF \
-DLIBUNWIND_ENABLE_STATIC=ON \
-DLIBUNWIND_IS_BAREMETAL=ON \
-DLIBUNWIND_REMEMBER_HEAP_ALLOC=ON \
-DLIBUNWIND_USE_COMPILER_RT=ON \
-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF \
-DLIBCXXABI_ENABLE_THREADS=OFF \
-DLIBCXX_ENABLE_EXCEPTIONS=OFF \
-DLIBCXX_ENABLE_MONOTONIC_CLOCK=OFF \
-DLIBCXX_ENABLE_RANDOM_DEVICE=OFF \
-DLIBCXX_ENABLE_RTTI=OFF \
-DLIBCXX_ENABLE_THREADS=OFF \
-DLIBCXX_ENABLE_WIDE_CHARACTERS=ON \
-DLIBUNWIND_ENABLE_THREADS=OFF \
-DLLVM_CONFIG_PATH=${llvm_bin}/llvm-config \
../runtimes
ninja
It build failed with following error:
llvm-project/llvmbuild/202302/buildruntime/include/c++/v1/math.h:972:92: error: no member named 'logl' in the global namespace
inline _LIBCPP_INLINE_VISIBILITY long double log(long double __lcpp_x) _NOEXCEPT {return ::logl(__lcpp_x);}
~~^
llvm-project/llvmbuild/202302/buildruntime/include/c++/v1/math.h:984:94: error: no member named 'log10l' in the global namespace
inline _LIBCPP_INLINE_VISIBILITY long double log10(long double __lcpp_x) _NOEXCEPT {return ::log10l(__lcpp_x);}
~~^
llvm-project/llvmbuild/202302/buildruntime/include/c++/v1/math.h:996:116: error: no member named 'modfl' in the global namespace
inline _LIBCPP_INLINE_VISIBILITY long double modf(long double __lcpp_x, long double* __lcpp_y) _NOEXCEPT {return ::modfl(__lcpp_x, __lcpp_y);}
~~^
llvm-project/llvmbuild/202302/buildruntime/include/c++/v1/math.h:1003:114: error: no member named 'powl' in the global namespace
inline _LIBCPP_INLINE_VISIBILITY long double pow(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {return ::powl(__lcpp_x, __lcpp_y);}
~~^
llvm-project/llvmbuild/202302/buildruntime/include/c++/v1/math.h:1026:92: error: no member named 'sinl' in the global namespace
inline _LIBCPP_INLINE_VISIBILITY long double sin(long double __lcpp_x) _NOEXCEPT {return ::sinl(__lcpp_x);}
~~^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
[855/860] Building CXX object libcxx/src/CMakeFiles/cxx_static.dir/locale.cpp.o
Did anyone met the same issue? could you give some guidance.
Thanks