[libunwind] Try to add --unwindlib=none while configuring and building libunwind
authorMartin Storsjö <martin@martin.st>
Fri, 10 Sep 2021 19:14:48 +0000 (22:14 +0300)
committerMartin Storsjö <martin@martin.st>
Fri, 5 Nov 2021 08:10:19 +0000 (10:10 +0200)
commit7af584ed87cc6eddb6adbc451c90fb8867469e06
treed1b391c4987f1d6f9293b1e5a32b435fce34a83f
parent7e34d5ead17563a2aa734b8adcc0fcff5373aebb
[libunwind] Try to add --unwindlib=none while configuring and building libunwind

If Clang is set up to link directly against libunwind (via the
--unwindlib option, or the corresponding builtin default option),
configuring libunwind will fail while bootstrapping (before the
initial libunwind is built), because every cmake test will
fail due to -lunwind not being found, and linking the shared library
will fail similarly.

Check if --unwindlib=none is supported, and add it in that case.
Using check_c_compiler_flag on its own doesn't work, because that only
adds the tested flag to the compilation command, and if -lunwind is
missing, the linking step would still fail - instead try adding it
to CMAKE_REQUIRED_FLAGS and restore the variable if it doesn't work.

This avoids having to pass --unwindlib=none while building libunwind.

Differential Revision: https://reviews.llvm.org/D112126
cmake/Modules/CheckLinkerFlag.cmake [new file with mode: 0644]
cmake/Modules/EnableLanguageNolink.cmake [new file with mode: 0644]
libunwind/CMakeLists.txt
libunwind/cmake/config-ix.cmake
libunwind/src/CMakeLists.txt