[llvm-dev] [External] : Re: cmake 3.22 breaks libc++ build

Roland Schatz via llvm-dev llvm-dev at lists.llvm.org
Tue Dec 7 00:09:17 PST 2021


Thanks! That fixes the problem for me, and doesn't seem to have any ill 
side-effects.

- Roland

On 12/3/21 19:16, Shoaib Meenai wrote:
>
> This is a workaround, not a fix, but does configuring with 
> -DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE help? That should prevent CMake 
> from having to adjust the rpath at install time.
>
> *From: *llvm-dev <llvm-dev-bounces at lists.llvm.org> on behalf of Roland 
> Schatz via llvm-dev <llvm-dev at lists.llvm.org>
> *Reply-To: *Roland Schatz <roland.schatz at oracle.com>
> *Date: *Friday, December 3, 2021 at 2:28 AM
> *To: *"llvm-dev at lists.llvm.org" <llvm-dev at lists.llvm.org>
> *Subject: *[llvm-dev] cmake 3.22 breaks libc++ build
>
> Hi,
>
> I'm currently debugging a problem in our Github Actions build. We're 
> doing a custom build of libc++ and libc++abi, and this is failing 
> since the cmake version in the base image was updated to version 3.22.
>
> The issue can be reproduced by following the instructions at 
> https://libcxx.llvm.org/BuildingLibcxx.html 
> <https://urldefense.com/v3/__https://libcxx.llvm.org/BuildingLibcxx.html__;!!ACWV5N9M2RV99hQ!coAWVFMFGPIeS7iKW2IG8L1tRMHyZrhzyVNVvUUIy59XaENPexLW266Ww4Fqv7dQqnQ$>.
>
> The setup I'm using is this:
> * Linux
> * cmake version 3.22
> * I've tried llvm-project sources 12.0.0, 13.0.0 and the tip of main
> * system compiler is clang 12.0.1 (but I don't think that matters here)
>
> The exact commands I'm running are (the last one is failing [1]):
> cd llvm-project
> mkdir build
> cmake -G Ninja -S runtimes -B build 
> "-DLLVM_ENABLE_RUNTIMES=libcxx;libcxxabi" -DCMAKE_INSTALL_PREFIX=install
> ninja -C build cxx cxxabi
> ninja -C build install-cxxabi
> ninja -C build install-cxx
>
>
> What seems to be happening is that cmake tries to patch the RPATH of 
> libc++.so. But libc++.so is not a symlink to a shared object, it's a 
> linker script.
> I have bisected that to a particular cmake change [2].
>
>
> One thing I noticed is that the build works just fine when I'm doing 
> the build of libc++ and libc++abi separately:
>
> cmake -S libcxxabi ...
> // build, install, ...
> cmake -S libcxx -DLIBCXX_CXX_ABI=libcxxabi -DLIBCXX_CXX_ABI_LIBRARY_PATH=path/to/install/from/prev/step ...
>
>
> That works on Linux, but breaks the build on Darwin, it seems to be 
> missing the re-exports of libc++abi symbols in libc++ then.
> Also that's the "deprecated" way of doing things, so not sure if it's 
> good to pursue that path.
>
>
> To be honest, I'm not sure I fully understand the problem, or how 
> these different ways of building even make a difference.
>
> Am I doing something wrong? Is this a bug in LLVM's cmake scripts? Or 
> a bug in cmake?
> Any hints what I can try to fix this?
>
>
> Thanks!
> Roland
>
>
> [1] failing build output:
>
> ...
> -- Installing: /home/roland/test/cmake/llvm-project/install/include/c++/v1/wctype.h
> -- Installing: /home/roland/test/cmake/llvm-project/install/include/c++/v1/__config_site
> [4/4] cd /home/roland/test/cmake/llvm-project/build/libcxx/src && /nix/store/n7j...ENT=cxx -P /home/roland/test/cmake/llvm-project/build/libcxx/cmake_install.cmake
> FAILED: libcxx/src/CMakeFiles/install-cxx /home/roland/test/cmake/llvm-project/build/libcxx/src/CMakeFiles/install-cxx
> cd /home/roland/test/cmake/llvm-project/build/libcxx/src && /nix/store/n7jz18i0cspdkfd1y0w1mg5rqvs15kdr-cmake-3.22.0/bin/cmake -DCMAKE_INSTALL_COMPONENT=cxx -P /home/roland/test/cmake/llvm-project/build/libcxx/cmake_install.cmake
> -- Install configuration: ""
> -- Installing: /home/roland/test/cmake/llvm-project/install/lib/libc++.so.1.0
> -- Installing: /home/roland/test/cmake/llvm-project/install/lib/libc++.so.1
> -- Set runtime path of "/home/roland/test/cmake/llvm-project/install/lib/libc++.so.1.0" to ""
> -- Installing: /home/roland/test/cmake/llvm-project/install/lib/libc++.so
> CMake Error at cmake_install.cmake:88 (file):
>    file RPATH_CHANGE could not write new RPATH:
>    to the file:
>      /home/roland/test/cmake/llvm-project/install/lib/libc++.so
> Call Stack (most recent call first):
>    /home/roland/test/cmake/llvm-project/build/libcxx/cmake_install.cmake:56 (include)
> ninja: build stopped: subcommand failed.
>
> [2] 
> https://github.com/Kitware/CMake/commit/2e1149874d34b63cc16c7330ce1ef5ef779e5140 
> <https://urldefense.com/v3/__https://github.com/Kitware/CMake/commit/2e1149874d34b63cc16c7330ce1ef5ef779e5140__;!!ACWV5N9M2RV99hQ!coAWVFMFGPIeS7iKW2IG8L1tRMHyZrhzyVNVvUUIy59XaENPexLW266Ww4FqMH2maP4$>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20211207/312e805f/attachment.html>


More information about the llvm-dev mailing list