Merge topic 'vs-framework-references'
[kiteware-cmake.git] / Source / Modules / CheckCXXLinkerFlag.cmake
blob6cb1ba3ac2947937425b858e697ce4886ae91ef3
1 # Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2 # file Copyright.txt or https://cmake.org/licensing for details.
4 include_guard(GLOBAL)
5 include(CheckCXXSourceCompiles)
6 include(CMakeCheckCompilerFlagCommonPatterns)
8 function(check_cxx_linker_flag _flag _var)
9   if(CMAKE_VERSION VERSION_LESS "3.14")
10     set(CMAKE_REQUIRED_LIBRARIES "${_flag}")
11   else()
12     set(CMAKE_REQUIRED_LINK_OPTIONS "${_flag}")
13   endif()
15   # Normalize locale during test compilation.
16   set(_locale_vars LC_ALL LC_MESSAGES LANG)
17   foreach(v IN LISTS _locale_vars)
18     set(_locale_vars_saved_${v} "$ENV{${v}}")
19     set(ENV{${v}} C)
20   endforeach()
21   check_compiler_flag_common_patterns(_common_patterns)
22   check_cxx_source_compiles("int main() { return 0; }" ${_var}
23     ${_common_patterns}
24     )
25   foreach(v IN LISTS _locale_vars)
26     set(ENV{${v}} ${_locale_vars_saved_${v}})
27   endforeach()
28   set(${_var} "${${_var}}" PARENT_SCOPE)
29 endfunction()