summaryrefslogtreecommitdiff
path: root/libunwind/cmake
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2022-04-25 10:54:04 +0300
committerMartin Storsjö <martin@martin.st>2022-05-12 22:22:15 +0300
commitf8da28f5228857e905eedb248ac82c939777f9df (patch)
treedbd1b3a12cd72756c003eb90c05e27942ba1e839 /libunwind/cmake
parent5380e30e047bbac9b2cceb69162eb8db1e1a7abf (diff)
downloadllvm-f8da28f5228857e905eedb248ac82c939777f9df.tar.gz
[runtimes] [cmake] Fix -Werror detection in common build configs
We add `--unwindlib=none` to `CMAKE_REQUIRED_FLAGS` to make sure that builds with a yet-incomplete toolchain succeed, to avoid linker failures about missing unwindlib. When this option is added to `CMAKE_REQUIRED_FLAGS`, it gets added to both compile and link commands in CMake compile tests. If `--unwindlib=none` is included in compilation commands, it causes warnings about unused arguments, as the flag only is relevant for linking. Due to the warnings in CMake tests, the later CMake test for the `-Werror` option failed (as the tested `-Werror` option caused the preexisting warning due to unused `--unwindlib=none` to become a hard error). Therefore, most CI configurations that build with `LIBCXX_ENABLE_WERROR` didn't actually end up enabling `-Werror` after all. When looking at the CI build log of recent CI builds, they do end up printing: -- Performing Test LIBCXX_SUPPORTS_WERROR_FLAG -- Performing Test LIBCXX_SUPPORTS_WERROR_FLAG - Failed -- Performing Test LIBCXX_SUPPORTS_WX_FLAG -- Performing Test LIBCXX_SUPPORTS_WX_FLAG - Failed Thus while the configurations are meant to error out on warnings, they actually haven't done that, due to the interaction of these options. To fix this, remove the individual cases of adding `--unwindlib=none` into `CMAKE_REQUIRED_FLAGS` in libcxx and libunwind. `runtimes/CMakeLists.txt` still adds `--unwindlib=none` if needed, but not otherwise. (The same issue with enabling `-Werror` does remain if `--unwindlib=none` strictly is needed though - that can be fixed separately afterwards.) These individual cases in libunwind and libcxx were added while standalone builds of the runtimes still were supported - but no longer are necessary now. Differential Revision: https://reviews.llvm.org/D124375
Diffstat (limited to 'libunwind/cmake')
-rw-r--r--libunwind/cmake/config-ix.cmake3
1 files changed, 0 insertions, 3 deletions
diff --git a/libunwind/cmake/config-ix.cmake b/libunwind/cmake/config-ix.cmake
index 34786eff32c1..f716532fdf1b 100644
--- a/libunwind/cmake/config-ix.cmake
+++ b/libunwind/cmake/config-ix.cmake
@@ -10,9 +10,6 @@ include(CheckCSourceCompiles)
# might not work if libunwind doesn't exist yet. Try to check if
# --unwindlib=none is supported, and use that if possible.
llvm_check_compiler_linker_flag(C "--unwindlib=none" CXX_SUPPORTS_UNWINDLIB_EQ_NONE_FLAG)
-if (CXX_SUPPORTS_UNWINDLIB_EQ_NONE_FLAG)
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} --unwindlib=none")
-endif()
check_library_exists(c fopen "" LIBUNWIND_HAS_C_LIB)