When we add --unwindlib=none during the CMake configure phase (to
make CMake linking tests succeed before the unwind library has been
built for the first time - when bootstrapping a cross toolchain from
scratch), we add it to CMAKE_REQUIRED_FLAGS to make later CMake tests
pass.
When the option is added to CMAKE_REQUIRED_FLAGS, it gets added to
both compilation and linking commands. When --unwindlib=none is added
to the compilation command, it causes warnings (about being unused
during compilation, as it only affects linking).
When all CMake test compilations produce warnings, later CMake tests
for -Werror fail.
Add --{start,end}-no-unused-arguments around --unwindlib=none, if
supported, to avoid unnecessary warnings due to this option.
If the CMake requirement is bumped to 3.14, we could use
CMAKE_REQUIRED_LINK_OPTIONS instead, removing the need for the
--{start,end}-no-unused-arguments options. (However, do note that
CMAKE_REQUIRED_LINK_OPTIONS is problematic in combination with
CMAKE_TRY_COMPILE_TARGET_TYPE set to STATIC_LIBRARY; see
https://gitlab.kitware.com/cmake/cmake/-/issues/23454.)
This is a minor nit, but it'd be nice to have a naming convention for this pattern. I did a quick search and found various different instances, like ORIG_<name>, <name>_ORIG, SAVED_<name>, __SAVED_<name>. The last one, __SAVED_<name> is the one I'd prefer. It's already used in CMake's own modules and I think it's best at signaling that this is an internal variable that has a specific purpose.