1include(CheckLinkerFlag OPTIONAL)
2
3if (COMMAND check_linker_flag)
4  macro(llvm_check_linker_flag)
5    check_linker_flag(${ARGN})
6  endmacro()
7else()
8  # Until the minimum CMAKE version is 3.18
9
10  include(CheckCXXCompilerFlag)
11  include(CMakePushCheckState)
12
13  # cmake builtin compatible, except we assume lang is C or CXX
14  function(llvm_check_linker_flag lang flag out_var)
15    cmake_push_check_state()
16    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${flag}")
17    if("${lang}" STREQUAL "C")
18      check_c_compiler_flag("" ${out_var})
19    elseif("${lang}" STREQUAL "CXX")
20      check_cxx_compiler_flag("" ${out_var})
21    else()
22      message(FATAL_ERROR "\"${lang}\" is not C or CXX")
23    endif()
24    cmake_pop_check_state()
25  endfunction()
26endif()
27