Chen Zou via llvm-dev
2021-May-22 02:24 UTC
[llvm-dev] Which libc/libc++ to use with LLVM RISCV?
I hope I am posting this question in the right place. Knowing that rvv intrinsics support is pushed to LVV upstream. I am eager to try it out. But it seems I could not get libc set up correctly. If I configured LLVM compilation with: cmake -G "Unix Makefiles" -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi" -DCMAKE_BUILD_TYPE="Release" -DLLVM_BUILD_TESTS=False -DLLVM_TARGETS_TO_BUILD="RISCV" -DCMAKE_INSTALL_PREFIX=$RISCV ../llvm && make -j16 I got compilation errors as attached at the end of this email. The compilation would succeed if I omit libcxx libcxxabi from LLVM_ENABLE_PROJECTS. But it seems clang would not find assert.h: clang -static --target=riscv32 -menable-experimental-extensions -march=rv32imv0p10 -mabi=ilp32 -g -O2 -Wall -fPIC -I../../include -std=c11 -c -o ../../sep/test.o ../../sep/test.c ../../sep/test.c:4:10: fatal error: 'stdio.h' file not found #include <stdio.h> ^~~~~~~~~ Attached compilation error for libcxx: In file included from $HOME/riscv/llvm-project/build/include/c++/v1/exception:84:0, from $HOME/riscv/llvm-project/libcxxabi/src/cxa_default_handlers.cpp:11: $HOME/riscv/llvm-project/build/include/c++/v1/type_traits: In substitution of ‘template<class ... _Args> using _SecondType = typename std::__1::_MetaBase<(sizeof... (_Args) >= 2)>::_SecondImpl<_Args ...> [with _Args = {_Tp ..., _Dep}]’: $HOME/riscv/llvm-project/build/include/c++/v1/tuple:1000:51: required from here $HOME/riscv/llvm-project/build/include/c++/v1/type_traits:501:117: error: pack expansion argument for non-pack parameter ‘<template-parameter-1-1>’ of alias template ‘template<class, class _Second, class ...> using _SecondImpl = _Second’ using _SecondType _LIBCPP_NODEBUG_TYPE = typename _MetaBase<(sizeof...(_Args) >= 2)>::template _SecondImpl<_Args...>; ^ In file included from $HOME/riscv/llvm-project/build/include/c++/v1/exception:84:0, from $HOME/riscv/llvm-project/libcxxabi/src/cxa_default_handlers.cpp:11: $HOME/riscv/llvm-project/build/include/c++/v1/type_traits:473:13: note: declared here template <class, class _Second, class...> ^ In file included from $HOME/riscv/llvm-project/build/include/c++/v1/memory:678:0, from $HOME/riscv/llvm-project/libcxxabi/src/include/atomic_support.h:17, from $HOME/riscv/llvm-project/libcxxabi/src/cxa_default_handlers.cpp:18: $HOME/riscv/llvm-project/build/include/c++/v1/tuple:1000:66: error: template argument 1 is invalid is_assignable<_SecondType<_Tp..., _Dep>&, _Up2 const&> ^ $HOME/riscv/llvm-project/build/include/c++/v1/tuple:1001:9: error: template argument 4 is invalid >::value ^ $HOME/riscv/llvm-project/build/include/c++/v1/tuple:1002:9: error: template argument 1 is invalid ,int> = 0> ^ $HOME/riscv/llvm-project/build/include/c++/v1/tuple:1019:59: error: template argument 1 is invalid is_assignable<_SecondType<_Tp..., _Dep>&, _Up2> ^ $HOME/riscv/llvm-project/build/include/c++/v1/tuple:1020:9: error: template argument 4 is invalid >::value ^ $HOME/riscv/llvm-project/build/include/c++/v1/tuple:1021:9: error: template argument 1 is invalid ,int> = 0> ^ projects/libcxxabi/src/CMakeFiles/cxxabi_shared.dir/build.make:95: recipe for target 'projects/libcxxabi/src/CMakeFiles/cxxabi_shared.dir/cxa_default_handlers.cpp.o' failed make[2]: *** [projects/libcxxabi/src/CMakeFiles/cxxabi_shared.dir/cxa_default_handlers.cpp.o] Error 1 CMakeFiles/Makefile2:19706: recipe for target 'projects/libcxxabi/src/CMakeFiles/cxxabi_shared.dir/all' failed make[1]: *** [projects/libcxxabi/src/CMakeFiles/cxxabi_shared.dir/all] Error 2 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210521/63eac1c1/attachment.html>
Tobias Hieta via llvm-dev
2021-May-23 11:44 UTC
[llvm-dev] Which libc/libc++ to use with LLVM RISCV?
LLVM libc is not ready for use yet. You need to either have a sysroot from the target system or build something like musl libc yourself. Check this guide, it should apply to risc as well: https://llvm.org/docs/HowToCrossCompileLLVM.html On Sat, 22 May 2021 at 18:41, Chen Zou via llvm-dev <llvm-dev at lists.llvm.org> wrote:> > I hope I am posting this question in the right place. > > Knowing that rvv intrinsics support is pushed to LVV upstream. I am eager > to try it out. > But it seems I could not get libc set up correctly. > > If I configured LLVM compilation with: > cmake -G "Unix Makefiles" -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi" > -DCMAKE_BUILD_TYPE="Release" -DLLVM_BUILD_TESTS=False > -DLLVM_TARGETS_TO_BUILD="RISCV" -DCMAKE_INSTALL_PREFIX=$RISCV ../llvm && > make -j16 > I got compilation errors as attached at the end of this email. > > The compilation would succeed if I omit libcxx libcxxabi from > LLVM_ENABLE_PROJECTS. But it seems clang would not find assert.h: > clang -static --target=riscv32 -menable-experimental-extensions > -march=rv32imv0p10 -mabi=ilp32 -g -O2 -Wall -fPIC -I../../include -std=c11 > -c -o ../../sep/test.o ../../sep/test.c > ../../sep/test.c:4:10: fatal error: 'stdio.h' file not found > #include <stdio.h> > ^~~~~~~~~ > > > Attached compilation error for libcxx: > > In file included from > $HOME/riscv/llvm-project/build/include/c++/v1/exception:84:0, > from > $HOME/riscv/llvm-project/libcxxabi/src/cxa_default_handlers.cpp:11: > $HOME/riscv/llvm-project/build/include/c++/v1/type_traits: In substitution > of ‘template<class ... _Args> using _SecondType = typename > std::__1::_MetaBase<(sizeof... (_Args) >= 2)>::_SecondImpl<_Args ...> [with > _Args = {_Tp ..., _Dep}]’: > $HOME/riscv/llvm-project/build/include/c++/v1/tuple:1000:51: required from > here > $HOME/riscv/llvm-project/build/include/c++/v1/type_traits:501:117: error: > pack expansion argument for non-pack parameter ‘<template-parameter-1-1>’ > of alias template ‘template<class, class _Second, class ...> using > _SecondImpl = _Second’ > using _SecondType _LIBCPP_NODEBUG_TYPE = typename > _MetaBase<(sizeof...(_Args) >= 2)>::template _SecondImpl<_Args...>; > ^ > In file included from > $HOME/riscv/llvm-project/build/include/c++/v1/exception:84:0, > from > $HOME/riscv/llvm-project/libcxxabi/src/cxa_default_handlers.cpp:11: > $HOME/riscv/llvm-project/build/include/c++/v1/type_traits:473:13: note: > declared here > template <class, class _Second, class...> > ^ > In file included from > $HOME/riscv/llvm-project/build/include/c++/v1/memory:678:0, > from > $HOME/riscv/llvm-project/libcxxabi/src/include/atomic_support.h:17, > from > $HOME/riscv/llvm-project/libcxxabi/src/cxa_default_handlers.cpp:18: > $HOME/riscv/llvm-project/build/include/c++/v1/tuple:1000:66: error: > template argument 1 is invalid > is_assignable<_SecondType<_Tp..., _Dep>&, _Up2 const&> > ^ > $HOME/riscv/llvm-project/build/include/c++/v1/tuple:1001:9: error: > template argument 4 is invalid > >::value > ^ > $HOME/riscv/llvm-project/build/include/c++/v1/tuple:1002:9: error: > template argument 1 is invalid > ,int> = 0> > ^ > $HOME/riscv/llvm-project/build/include/c++/v1/tuple:1019:59: error: > template argument 1 is invalid > is_assignable<_SecondType<_Tp..., _Dep>&, _Up2> > ^ > $HOME/riscv/llvm-project/build/include/c++/v1/tuple:1020:9: error: > template argument 4 is invalid > >::value > ^ > $HOME/riscv/llvm-project/build/include/c++/v1/tuple:1021:9: error: > template argument 1 is invalid > ,int> = 0> > ^ > projects/libcxxabi/src/CMakeFiles/cxxabi_shared.dir/build.make:95: recipe > for target > 'projects/libcxxabi/src/CMakeFiles/cxxabi_shared.dir/cxa_default_handlers.cpp.o' > failed > make[2]: *** > [projects/libcxxabi/src/CMakeFiles/cxxabi_shared.dir/cxa_default_handlers.cpp.o] > Error 1 > CMakeFiles/Makefile2:19706: recipe for target > 'projects/libcxxabi/src/CMakeFiles/cxxabi_shared.dir/all' failed > make[1]: *** [projects/libcxxabi/src/CMakeFiles/cxxabi_shared.dir/all] > Error 2 > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210523/0b85c306/attachment.html>