summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtimes/CMakeLists.txt20
1 files changed, 20 insertions, 0 deletions
diff --git a/runtimes/CMakeLists.txt b/runtimes/CMakeLists.txt
index 1783e0114291..99d4ac37fbab 100644
--- a/runtimes/CMakeLists.txt
+++ b/runtimes/CMakeLists.txt
@@ -102,7 +102,27 @@ if (NOT LLVM_RUNTIMES_LINKING_WORKS)
# e.g. ASAN/TSAN.
llvm_check_compiler_linker_flag(C "--unwindlib=none" CXX_SUPPORTS_UNWINDLIB_EQ_NONE_FLAG)
if (CXX_SUPPORTS_UNWINDLIB_EQ_NONE_FLAG)
+ set(ORIG_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} --unwindlib=none")
+ # TODO: When we can require CMake 3.14, we should use
+ # CMAKE_REQUIRED_LINK_OPTIONS here. Until then, we need a workaround:
+ # When using CMAKE_REQUIRED_FLAGS, this option gets added both to
+ # compilation and linking commands. That causes warnings in the
+ # compilation commands during cmake tests. This is normally benign, but
+ # when testing whether -Werror works, that test fails (due to the
+ # preexisting warning).
+ #
+ # Therefore, before we can use CMAKE_REQUIRED_LINK_OPTIONS, check if we
+ # can use --start-no-unused-arguments to silence the warnings about
+ # --unwindlib=none during compilation.
+ #
+ # We must first add --unwindlib=none to CMAKE_REQUIRED_FLAGS above, to
+ # allow this subsequent test to succeed, then rewrite CMAKE_REQUIRED_FLAGS
+ # below.
+ check_c_compiler_flag("--start-no-unused-arguments" C_SUPPORTS_START_NO_UNUSED_ARGUMENTS)
+ if (C_SUPPORTS_START_NO_UNUSED_ARGUMENTS)
+ set(CMAKE_REQUIRED_FLAGS "${ORIG_CMAKE_REQUIRED_FLAGS} --start-no-unused-arguments --unwindlib=none --end-no-unused-arguments")
+ endif()
endif()
endif()