[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / cmake / Modules / LLVMCheckCompilerLinkerFlag.cmake
blobf61ec0585f9a45a1ee8a0e850a2388d3c67bd856
1 include(CMakePushCheckState)
3 include(CheckCompilerFlag OPTIONAL)
5 if(NOT COMMAND check_compiler_flag)
6   include(CheckCCompilerFlag)
7   include(CheckCXXCompilerFlag)
8 endif()
10 function(llvm_check_compiler_linker_flag lang flag out_var)
11   # If testing a flag with check_c_compiler_flag, it gets added to the compile
12   # command only, but not to the linker command in that test. If the flag
13   # is vital for linking to succeed, the test would fail even if it would
14   # have succeeded if it was included on both commands.
15   #
16   # Therefore, try adding the flag to CMAKE_REQUIRED_FLAGS, which gets
17   # added to both compiling and linking commands in the tests.
19   cmake_push_check_state()
20   set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${flag}")
21   if(COMMAND check_compiler_flag)
22     check_compiler_flag("${lang}" "" ${out_var})
23   else()
24     # Until the minimum CMAKE version is 3.19
25     # cmake builtin compatible, except we assume lang is C or CXX
26     if("${lang}" STREQUAL "C")
27       check_c_compiler_flag("" ${out_var})
28     elseif("${lang}" STREQUAL "CXX")
29       check_cxx_compiler_flag("" ${out_var})
30     else()
31       message(FATAL_ERROR "\"${lang}\" is not C or CXX")
32     endif()
33   endif()
34   cmake_pop_check_state()
35 endfunction()