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.
Should we drop this check as well since this is done in runtimes/CMakeLists.txt?