diff options
Diffstat (limited to 'Modules/CheckLinkerFlag.cmake')
-rw-r--r-- | Modules/CheckLinkerFlag.cmake | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/Modules/CheckLinkerFlag.cmake b/Modules/CheckLinkerFlag.cmake index beda5fe..3c7a828 100644 --- a/Modules/CheckLinkerFlag.cmake +++ b/Modules/CheckLinkerFlag.cmake @@ -5,6 +5,8 @@ CheckLinkerFlag --------------- +.. versionadded:: 3.18 + Check whether the compiler supports a given link flag. .. command:: check_linker_flag @@ -17,15 +19,12 @@ Check that the link ``<flag>`` is accepted by the ``<lang>`` compiler without a diagnostic. Stores the result in an internal cache entry named ``<var>``. This command temporarily sets the ``CMAKE_REQUIRED_LINK_OPTIONS`` variable -and calls the ``check_<lang>_source_compiles`` macro from the -``Check<lang>SourceCompiles`` module (:module:`CheckCSourceCompiles`, -:module:`CheckCSourceCompiles`, :module:`CheckCXXSourceCompiles`, -:module:`CheckOBJCSourceCompiles`, :module:`CheckOBJCXXSourceCompiles` or -:module:`CheckFortranSourceCompiles`). See documentation of these -modules for a listing of variables that can otherwise modify the build. - -The underlying implementation rely on :prop_tgt:`LINK_OPTIONS` property to -check the specified flag. The ``LINKER:`` prefix, as described in +and calls the :command:`check_source_compiles` command from the +:module:`CheckSourceCompiles` module. See that module's documentation +for a listing of variables that can otherwise modify the build. + +The underlying implementation relies on the :prop_tgt:`LINK_OPTIONS` property +to check the specified flag. The ``LINKER:`` prefix, as described in the :command:`target_link_options` command, can be used as well. A positive result from this check indicates only that the compiler did not @@ -49,7 +48,7 @@ function(CHECK_LINKER_FLAG _lang _flag _var) return() endif() - include (Check${_lang}SourceCompiles) + include (CheckSourceCompiles) set(CMAKE_REQUIRED_LINK_OPTIONS "${_flag}") @@ -64,6 +63,8 @@ function(CHECK_LINKER_FLAG _lang _flag _var) set (_source "int main() { return 0; }") elseif (_lang STREQUAL "Fortran") set (_source " program test\n stop\n end program") + elseif (_lang MATCHES "CUDA") + set (_source "__host__ int main() { return 0; }") elseif (_lang MATCHES "^(OBJC|OBJCXX)$") set (_source "#ifndef __OBJC__\n# error \"Not an Objective-C++ compiler\"\n#endif\nint main(void) { return 0; }") else() @@ -72,7 +73,7 @@ function(CHECK_LINKER_FLAG _lang _flag _var) endif() check_compiler_flag_common_patterns(_common_patterns) - cmake_language (CALL check_${_lang}_source_compiles "${_source}" ${_var} ${_common_patterns}) + check_source_compiles(${_lang} "${_source}" ${_var} ${_common_patterns}) foreach(v IN LISTS _locale_vars) set(ENV{${v}} ${_locale_vars_saved_${v}}) |