diff options
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/Modules/CheckLinkerFlag.cmake | 17 | ||||
-rw-r--r-- | cmake/Modules/LLVMCheckCompilerLinkerFlag.cmake | 35 |
2 files changed, 35 insertions, 17 deletions
diff --git a/cmake/Modules/CheckLinkerFlag.cmake b/cmake/Modules/CheckLinkerFlag.cmake deleted file mode 100644 index 722fe5b1b8ea..000000000000 --- a/cmake/Modules/CheckLinkerFlag.cmake +++ /dev/null @@ -1,17 +0,0 @@ -include(CMakePushCheckState) -include(CheckCCompilerFlag) - -function(llvm_check_linker_flag flag dest) - # If testing a flag with check_c_compiler_flag, it gets added to the compile - # command only, but not to the linker command in that test. If the flag - # is vital for linking to succeed, the test would fail even if it would - # have succeeded if it was included on both commands. - # - # Therefore, try adding the flag to CMAKE_REQUIRED_FLAGS, which gets - # added to both compiling and linking commands in the tests. - - cmake_push_check_state() - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${flag}") - check_c_compiler_flag("" ${dest}) - cmake_pop_check_state() -endfunction() diff --git a/cmake/Modules/LLVMCheckCompilerLinkerFlag.cmake b/cmake/Modules/LLVMCheckCompilerLinkerFlag.cmake new file mode 100644 index 000000000000..f61ec0585f9a --- /dev/null +++ b/cmake/Modules/LLVMCheckCompilerLinkerFlag.cmake @@ -0,0 +1,35 @@ +include(CMakePushCheckState) + +include(CheckCompilerFlag OPTIONAL) + +if(NOT COMMAND check_compiler_flag) + include(CheckCCompilerFlag) + include(CheckCXXCompilerFlag) +endif() + +function(llvm_check_compiler_linker_flag lang flag out_var) + # If testing a flag with check_c_compiler_flag, it gets added to the compile + # command only, but not to the linker command in that test. If the flag + # is vital for linking to succeed, the test would fail even if it would + # have succeeded if it was included on both commands. + # + # Therefore, try adding the flag to CMAKE_REQUIRED_FLAGS, which gets + # added to both compiling and linking commands in the tests. + + cmake_push_check_state() + set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${flag}") + if(COMMAND check_compiler_flag) + check_compiler_flag("${lang}" "" ${out_var}) + else() + # Until the minimum CMAKE version is 3.19 + # cmake builtin compatible, except we assume lang is C or CXX + if("${lang}" STREQUAL "C") + check_c_compiler_flag("" ${out_var}) + elseif("${lang}" STREQUAL "CXX") + check_cxx_compiler_flag("" ${out_var}) + else() + message(FATAL_ERROR "\"${lang}\" is not C or CXX") + endif() + endif() + cmake_pop_check_state() +endfunction() |