summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Help/module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt5
-rw-r--r--Help/release/dev/macro-required-link-directories.rst99
-rw-r--r--Modules/CMakePushCheckState.cmake32
-rw-r--r--Modules/CheckCCompilerFlag.cmake2
-rw-r--r--Modules/CheckCSourceCompiles.cmake2
-rw-r--r--Modules/CheckCSourceRuns.cmake2
-rw-r--r--Modules/CheckCXXCompilerFlag.cmake2
-rw-r--r--Modules/CheckCXXSourceCompiles.cmake2
-rw-r--r--Modules/CheckCXXSourceRuns.cmake2
-rw-r--r--Modules/CheckCXXSymbolExists.cmake2
-rw-r--r--Modules/CheckCompilerFlag.cmake2
-rw-r--r--Modules/CheckFortranCompilerFlag.cmake2
-rw-r--r--Modules/CheckFortranFunctionExists.cmake22
-rw-r--r--Modules/CheckFortranSourceCompiles.cmake2
-rw-r--r--Modules/CheckFortranSourceRuns.cmake2
-rw-r--r--Modules/CheckFunctionExists.cmake10
-rw-r--r--Modules/CheckIncludeFile.cmake11
-rw-r--r--Modules/CheckIncludeFileCXX.cmake11
-rw-r--r--Modules/CheckIncludeFiles.cmake11
-rw-r--r--Modules/CheckLibraryExists.cmake11
-rw-r--r--Modules/CheckOBJCCompilerFlag.cmake2
-rw-r--r--Modules/CheckOBJCSourceCompiles.cmake2
-rw-r--r--Modules/CheckOBJCSourceRuns.cmake2
-rw-r--r--Modules/CheckOBJCXXCompilerFlag.cmake2
-rw-r--r--Modules/CheckOBJCXXSourceCompiles.cmake2
-rw-r--r--Modules/CheckOBJCXXSourceRuns.cmake2
-rw-r--r--Modules/CheckPrototypeDefinition.cmake11
-rw-r--r--Modules/CheckSourceCompiles.cmake2
-rw-r--r--Modules/CheckSourceRuns.cmake2
-rw-r--r--Modules/CheckStructHasMember.cmake2
-rw-r--r--Modules/CheckSymbolExists.cmake11
-rw-r--r--Modules/CheckTypeSize.cmake11
-rw-r--r--Modules/CheckVariableExists.cmake10
-rw-r--r--Modules/Internal/CheckSourceCompiles.cmake9
-rw-r--r--Modules/Internal/CheckSourceRuns.cmake8
-rw-r--r--Tests/CMakeTests/PushCheckStateTest.cmake.in7
-rw-r--r--Tests/RunCMake/CheckModules/CheckLinkDirectories.cmake122
-rw-r--r--Tests/RunCMake/CheckModules/CheckLinkDirectoriesTestLib.cmake1
-rw-r--r--Tests/RunCMake/CheckModules/RunCMakeTest.cmake28
-rw-r--r--Tests/RunCMake/CheckModules/TestLib/CMakeLists.txt3
-rw-r--r--Tests/RunCMake/CheckModules/TestLib/TestLib.c6
41 files changed, 454 insertions, 25 deletions
diff --git a/Help/module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt b/Help/module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
new file mode 100644
index 0000000..35f433b
--- /dev/null
+++ b/Help/module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
@@ -0,0 +1,5 @@
+ ``CMAKE_REQUIRED_LINK_DIRECTORIES``
+ .. versionadded:: 3.31
+
+ A :ref:`;-list <CMake Language Lists>` of libraries search paths to pass to
+ the linker (see :command:`try_compile` for further details).
diff --git a/Help/release/dev/macro-required-link-directories.rst b/Help/release/dev/macro-required-link-directories.rst
new file mode 100644
index 0000000..1e4adc7
--- /dev/null
+++ b/Help/release/dev/macro-required-link-directories.rst
@@ -0,0 +1,99 @@
+macro-required-link-directories
+-------------------------------
+
+* The :module:`CMakePushCheckState` module ``cmake_push_check_state``,
+ ``cmake_pop_check_state`` and ``cmake_reset_check_state`` macros
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckCCompilerFlag` module ``check_c_compiler_flag`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckCSourceCompiles` module ``check_c_source_compiles`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckCSourceRuns` module ``check_c_source_runs`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckCXXCompilerFlag` module ``check_cxx_compiler_flag`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckCXXSourceCompiles` module ``check_cxx_source_compiles`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckCXXSourceRuns` module ``check_cxx_source_runs`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckCXXSymbolExists` module ``check_cxx_symbol_exists`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckCompilerFlag` module ``check_compiler_flag`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckFortranCompilerFlag` module ``check_fortran_compiler_flag`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckFortranFunctionExists` module ``check_fortran_function_exists`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckFortranSourceCompiles` module ``check_fortran_source_compiles`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckFortranSourceRuns` module ``check_fortran_source_runs`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckFunctionExists` module ``check_function_exists`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckIncludeFile` module ``check_include_file`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckIncludeFileCXX` module ``check_include_file_cxx`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckIncludeFiles` module ``check_include_files`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckOBJCCompilerFlag` module ``check_objc_compiler_flag`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckLibraryExists` module ``check_library_exists`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckOBJCCompilerFlag` module ``check_objc_compiler_flag`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckOBJCSourceCompiles` module ``check_objc_source_compiles`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckOBJCSourceRuns` module ``check_objc_source_runs`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckOBJCXXCompilerFlag` module ``check_objcxx_compiler_flag`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckOBJCXXSourceCompiles` module ``check_objcxx_source_compiles`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckOBJCXXSourceRuns` module ``check_objcxx_source_runs`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckPrototypeDefinition` module ``check_prototype_definition`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckSourceCompiles` module ``check_source_compiles`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckSourceRuns` module ``check_source_runs`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckStructHasMember` module ``check_struct_has_member`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckSymbolExists` module ``check_symbol_exists`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckTypeSize` module ``check_type_size`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
+
+* The :module:`CheckVariableExists` module ``check_variable_exists`` macro
+ learned to honor the ``CMAKE_REQUIRED_LINK_DIRECTORIES`` variable.
diff --git a/Modules/CMakePushCheckState.cmake b/Modules/CMakePushCheckState.cmake
index 3e519ee..50bd90b 100644
--- a/Modules/CMakePushCheckState.cmake
+++ b/Modules/CMakePushCheckState.cmake
@@ -12,6 +12,7 @@ This module defines three macros: ``CMAKE_PUSH_CHECK_STATE()``
be used to save, restore and reset (i.e., clear contents) the state of
the variables ``CMAKE_REQUIRED_FLAGS``, ``CMAKE_REQUIRED_DEFINITIONS``,
``CMAKE_REQUIRED_LINK_OPTIONS``, ``CMAKE_REQUIRED_LIBRARIES``,
+``CMAKE_REQUIRED_LINK_DIRECTORIES``,
``CMAKE_REQUIRED_INCLUDES`` and ``CMAKE_EXTRA_INCLUDE_FILES`` used by the
various Check-files coming with CMake, like e.g. ``check_function_exists()``
etc.
@@ -45,6 +46,7 @@ macro(CMAKE_RESET_CHECK_STATE)
set(CMAKE_REQUIRED_DEFINITIONS)
set(CMAKE_REQUIRED_LINK_OPTIONS)
set(CMAKE_REQUIRED_LIBRARIES)
+ set(CMAKE_REQUIRED_LINK_DIRECTORIES)
set(CMAKE_REQUIRED_FLAGS)
set(CMAKE_REQUIRED_QUIET)
@@ -58,13 +60,14 @@ macro(CMAKE_PUSH_CHECK_STATE)
math(EXPR _CMAKE_PUSH_CHECK_STATE_COUNTER "${_CMAKE_PUSH_CHECK_STATE_COUNTER}+1")
- set(_CMAKE_EXTRA_INCLUDE_FILES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_EXTRA_INCLUDE_FILES})
- set(_CMAKE_REQUIRED_INCLUDES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_INCLUDES})
- set(_CMAKE_REQUIRED_DEFINITIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_DEFINITIONS})
- set(_CMAKE_REQUIRED_LINK_OPTIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_LINK_OPTIONS})
- set(_CMAKE_REQUIRED_LIBRARIES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_LIBRARIES})
- set(_CMAKE_REQUIRED_FLAGS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_FLAGS})
- set(_CMAKE_REQUIRED_QUIET_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_QUIET})
+ set(_CMAKE_EXTRA_INCLUDE_FILES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_EXTRA_INCLUDE_FILES})
+ set(_CMAKE_REQUIRED_INCLUDES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_INCLUDES})
+ set(_CMAKE_REQUIRED_DEFINITIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_DEFINITIONS})
+ set(_CMAKE_REQUIRED_LINK_OPTIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_LINK_OPTIONS})
+ set(_CMAKE_REQUIRED_LIBRARIES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_LIBRARIES})
+ set(_CMAKE_REQUIRED_LINK_DIRECTORIES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_LINK_DIRECTORIES})
+ set(_CMAKE_REQUIRED_FLAGS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_FLAGS})
+ set(_CMAKE_REQUIRED_QUIET_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_QUIET})
if (${ARGC} GREATER 0 AND "${ARGV0}" STREQUAL "RESET")
cmake_reset_check_state()
@@ -77,13 +80,14 @@ macro(CMAKE_POP_CHECK_STATE)
# don't pop more than we pushed
if("${_CMAKE_PUSH_CHECK_STATE_COUNTER}" GREATER "0")
- set(CMAKE_EXTRA_INCLUDE_FILES ${_CMAKE_EXTRA_INCLUDE_FILES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
- set(CMAKE_REQUIRED_INCLUDES ${_CMAKE_REQUIRED_INCLUDES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
- set(CMAKE_REQUIRED_DEFINITIONS ${_CMAKE_REQUIRED_DEFINITIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
- set(CMAKE_REQUIRED_LINK_OPTIONS ${_CMAKE_REQUIRED_LINK_OPTIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
- set(CMAKE_REQUIRED_LIBRARIES ${_CMAKE_REQUIRED_LIBRARIES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
- set(CMAKE_REQUIRED_FLAGS ${_CMAKE_REQUIRED_FLAGS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
- set(CMAKE_REQUIRED_QUIET ${_CMAKE_REQUIRED_QUIET_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+ set(CMAKE_EXTRA_INCLUDE_FILES ${_CMAKE_EXTRA_INCLUDE_FILES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+ set(CMAKE_REQUIRED_INCLUDES ${_CMAKE_REQUIRED_INCLUDES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+ set(CMAKE_REQUIRED_DEFINITIONS ${_CMAKE_REQUIRED_DEFINITIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+ set(CMAKE_REQUIRED_LINK_OPTIONS ${_CMAKE_REQUIRED_LINK_OPTIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+ set(CMAKE_REQUIRED_LIBRARIES ${_CMAKE_REQUIRED_LIBRARIES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+ set(CMAKE_REQUIRED_LINK_DIRECTORIES ${_CMAKE_REQUIRED_LINK_DIRECTORIES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+ set(CMAKE_REQUIRED_FLAGS ${_CMAKE_REQUIRED_FLAGS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+ set(CMAKE_REQUIRED_QUIET ${_CMAKE_REQUIRED_QUIET_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
math(EXPR _CMAKE_PUSH_CHECK_STATE_COUNTER "${_CMAKE_PUSH_CHECK_STATE_COUNTER}-1")
endif()
diff --git a/Modules/CheckCCompilerFlag.cmake b/Modules/CheckCCompilerFlag.cmake
index 0a658c4..7e58012 100644
--- a/Modules/CheckCCompilerFlag.cmake
+++ b/Modules/CheckCCompilerFlag.cmake
@@ -43,6 +43,8 @@ in these variables can case a false negative result.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckCSourceCompiles.cmake b/Modules/CheckCSourceCompiles.cmake
index 801cf17..74c54fa 100644
--- a/Modules/CheckCSourceCompiles.cmake
+++ b/Modules/CheckCSourceCompiles.cmake
@@ -45,6 +45,8 @@ Check once if C source code can be built.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckCSourceRuns.cmake b/Modules/CheckCSourceRuns.cmake
index 7a34ece..4559215 100644
--- a/Modules/CheckCSourceRuns.cmake
+++ b/Modules/CheckCSourceRuns.cmake
@@ -38,6 +38,8 @@ subsequently be run.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckCXXCompilerFlag.cmake b/Modules/CheckCXXCompilerFlag.cmake
index 1465b9f..ec719e1 100644
--- a/Modules/CheckCXXCompilerFlag.cmake
+++ b/Modules/CheckCXXCompilerFlag.cmake
@@ -43,6 +43,8 @@ in these variables can case a false negative result.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckCXXSourceCompiles.cmake b/Modules/CheckCXXSourceCompiles.cmake
index c9616d8..90c3e6a 100644
--- a/Modules/CheckCXXSourceCompiles.cmake
+++ b/Modules/CheckCXXSourceCompiles.cmake
@@ -45,6 +45,8 @@ Check once if C++ source code can be built.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckCXXSourceRuns.cmake b/Modules/CheckCXXSourceRuns.cmake
index 0f14a3a..f0a5ffc 100644
--- a/Modules/CheckCXXSourceRuns.cmake
+++ b/Modules/CheckCXXSourceRuns.cmake
@@ -38,6 +38,8 @@ subsequently be run.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckCXXSymbolExists.cmake b/Modules/CheckCXXSymbolExists.cmake
index d807c17..bcd514f 100644
--- a/Modules/CheckCXXSymbolExists.cmake
+++ b/Modules/CheckCXXSymbolExists.cmake
@@ -51,6 +51,8 @@ the way the check is run:
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
For example:
diff --git a/Modules/CheckCompilerFlag.cmake b/Modules/CheckCompilerFlag.cmake
index 6252767..d505142 100644
--- a/Modules/CheckCompilerFlag.cmake
+++ b/Modules/CheckCompilerFlag.cmake
@@ -43,6 +43,8 @@ in these variables can case a false negative result.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckFortranCompilerFlag.cmake b/Modules/CheckFortranCompilerFlag.cmake
index 7ab1247..eee7deb 100644
--- a/Modules/CheckFortranCompilerFlag.cmake
+++ b/Modules/CheckFortranCompilerFlag.cmake
@@ -45,6 +45,8 @@ flags in these variables can case a false negative result.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckFortranFunctionExists.cmake b/Modules/CheckFortranFunctionExists.cmake
index 4e5a246..6583c9a 100644
--- a/Modules/CheckFortranFunctionExists.cmake
+++ b/Modules/CheckFortranFunctionExists.cmake
@@ -29,16 +29,11 @@ Check if a Fortran function exists.
The following variables may be set before calling this macro to modify
the way the check is run:
-``CMAKE_REQUIRED_LINK_OPTIONS``
- .. versionadded:: 3.14
- A :ref:`;-list <CMake Language Lists>` of options to add to the link
- command (see :command:`try_compile` for further details).
+.. include:: /module/CMAKE_REQUIRED_LINK_OPTIONS.txt
-``CMAKE_REQUIRED_LIBRARIES``
- A :ref:`;-list <CMake Language Lists>` of libraries to add to the link
- command. These can be the name of system libraries or they can be
- :ref:`Imported Targets <Imported Targets>` (see :command:`try_compile` for
- further details).
+.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
#]=======================================================================]
include_guard(GLOBAL)
@@ -58,6 +53,12 @@ macro(CHECK_FORTRAN_FUNCTION_EXISTS FUNCTION VARIABLE)
else()
set(CHECK_FUNCTION_EXISTS_ADD_LIBRARIES)
endif()
+ if(CMAKE_REQUIRED_LINK_DIRECTORIES)
+ set(_CFFE_LINK_DIRECTORIES
+ "-DLINK_DIRECTORIES:STRING=${CMAKE_REQUIRED_LINK_DIRECTORIES}")
+ else()
+ set(_CFFE_LINK_DIRECTORIES)
+ endif()
set(__CheckFunction_testFortranCompilerSource
"
program TESTFortran
@@ -70,8 +71,11 @@ macro(CHECK_FORTRAN_FUNCTION_EXISTS FUNCTION VARIABLE)
SOURCE_FROM_VAR testFortranCompiler.f __CheckFunction_testFortranCompilerSource
${CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS}
${CHECK_FUNCTION_EXISTS_ADD_LIBRARIES}
+ CMAKE_FLAGS
+ "${_CFFE_LINK_DIRECTORIES}"
)
unset(__CheckFunction_testFortranCompilerSource)
+ unset(_CFFE_LINK_DIRECTORIES)
if(${VARIABLE})
set(${VARIABLE} 1 CACHE INTERNAL "Have Fortran function ${FUNCTION}")
message(CHECK_PASS "found")
diff --git a/Modules/CheckFortranSourceCompiles.cmake b/Modules/CheckFortranSourceCompiles.cmake
index e9545ab..68e289c 100644
--- a/Modules/CheckFortranSourceCompiles.cmake
+++ b/Modules/CheckFortranSourceCompiles.cmake
@@ -53,6 +53,8 @@ Check once if Fortran source code can be built.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckFortranSourceRuns.cmake b/Modules/CheckFortranSourceRuns.cmake
index 97d750a..808baf6 100644
--- a/Modules/CheckFortranSourceRuns.cmake
+++ b/Modules/CheckFortranSourceRuns.cmake
@@ -51,6 +51,8 @@ subsequently be run.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckFunctionExists.cmake b/Modules/CheckFunctionExists.cmake
index 76fa76a..7111509 100644
--- a/Modules/CheckFunctionExists.cmake
+++ b/Modules/CheckFunctionExists.cmake
@@ -29,6 +29,8 @@ way the check is run:
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
.. note::
@@ -67,6 +69,12 @@ macro(CHECK_FUNCTION_EXISTS FUNCTION VARIABLE)
else()
set(CHECK_FUNCTION_EXISTS_ADD_LIBRARIES)
endif()
+ if(CMAKE_REQUIRED_LINK_DIRECTORIES)
+ set(_CFE_LINK_DIRECTORIES
+ "-DLINK_DIRECTORIES:STRING=${CMAKE_REQUIRED_LINK_DIRECTORIES}")
+ else()
+ set(_CFE_LINK_DIRECTORIES)
+ endif()
if(CMAKE_REQUIRED_INCLUDES)
set(CHECK_FUNCTION_EXISTS_ADD_INCLUDES
"-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
@@ -89,8 +97,10 @@ macro(CHECK_FUNCTION_EXISTS FUNCTION VARIABLE)
${CHECK_FUNCTION_EXISTS_ADD_LIBRARIES}
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
"${CHECK_FUNCTION_EXISTS_ADD_INCLUDES}"
+ "${_CFE_LINK_DIRECTORIES}"
)
unset(_cfe_source)
+ unset(_CFE_LINK_DIRECTORIES)
if(${VARIABLE})
set(${VARIABLE} 1 CACHE INTERNAL "Have function ${FUNCTION}")
diff --git a/Modules/CheckIncludeFile.cmake b/Modules/CheckIncludeFile.cmake
index 1d8c9f7..d16c9f8 100644
--- a/Modules/CheckIncludeFile.cmake
+++ b/Modules/CheckIncludeFile.cmake
@@ -31,6 +31,8 @@ the way the check is run:
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
See the :module:`CheckIncludeFiles` module to check for multiple headers
@@ -87,6 +89,13 @@ macro(CHECK_INCLUDE_FILE INCLUDE VARIABLE)
unset(_CIF_CMP0075)
endif()
+ if(CMAKE_REQUIRED_LINK_DIRECTORIES)
+ set(_CIF_LINK_DIRECTORIES
+ "-DLINK_DIRECTORIES:STRING=${CMAKE_REQUIRED_LINK_DIRECTORIES}")
+ else()
+ set(_CIF_LINK_DIRECTORIES)
+ endif()
+
try_compile(${VARIABLE}
SOURCE_FROM_VAR CheckIncludeFile.c _CIF_SOURCE_CONTENT
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
@@ -95,9 +104,11 @@ macro(CHECK_INCLUDE_FILE INCLUDE VARIABLE)
CMAKE_FLAGS
-DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILE_FLAGS}
"${CHECK_INCLUDE_FILE_C_INCLUDE_DIRS}"
+ "${_CIF_LINK_DIRECTORIES}"
)
unset(_CIF_LINK_OPTIONS)
unset(_CIF_LINK_LIBRARIES)
+ unset(_CIF_LINK_DIRECTORIES)
if(${ARGC} EQUAL 3)
set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS_SAVE})
diff --git a/Modules/CheckIncludeFileCXX.cmake b/Modules/CheckIncludeFileCXX.cmake
index 53d9a45..f4ac0cf 100644
--- a/Modules/CheckIncludeFileCXX.cmake
+++ b/Modules/CheckIncludeFileCXX.cmake
@@ -31,6 +31,8 @@ the way the check is run:
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFiles`
@@ -86,6 +88,13 @@ macro(CHECK_INCLUDE_FILE_CXX INCLUDE VARIABLE)
unset(_CIF_CMP0075)
endif()
+ if(CMAKE_REQUIRED_LINK_DIRECTORIES)
+ set(_CIF_LINK_DIRECTORIES
+ "-DLINK_DIRECTORIES:STRING=${CMAKE_REQUIRED_LINK_DIRECTORIES}")
+ else()
+ set(_CIF_LINK_DIRECTORIES)
+ endif()
+
try_compile(${VARIABLE}
SOURCE_FROM_VAR CheckIncludeFile.cxx _CIF_SOURCE_CONTENT
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
@@ -94,9 +103,11 @@ macro(CHECK_INCLUDE_FILE_CXX INCLUDE VARIABLE)
CMAKE_FLAGS
-DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILE_FLAGS}
"${CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS}"
+ "${_CIF_LINK_DIRECTORIES}"
)
unset(_CIF_LINK_OPTIONS)
unset(_CIF_LINK_LIBRARIES)
+ unset(_CIF_LINK_DIRECTORIES)
if(${ARGC} EQUAL 3)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS_SAVE})
diff --git a/Modules/CheckIncludeFiles.cmake b/Modules/CheckIncludeFiles.cmake
index 071df0c..3327222 100644
--- a/Modules/CheckIncludeFiles.cmake
+++ b/Modules/CheckIncludeFiles.cmake
@@ -37,6 +37,8 @@ the way the check is run:
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFileCXX`
@@ -126,6 +128,13 @@ macro(CHECK_INCLUDE_FILES INCLUDE VARIABLE)
unset(_CIF_CMP0075)
endif()
+ if(CMAKE_REQUIRED_LINK_DIRECTORIES)
+ set(_CIF_LINK_DIRECTORIES
+ "-DLINK_DIRECTORIES:STRING=${CMAKE_REQUIRED_LINK_DIRECTORIES}")
+ else()
+ set(_CIF_LINK_DIRECTORIES)
+ endif()
+
if(NOT CMAKE_REQUIRED_QUIET)
message(CHECK_START "Looking for ${_description}")
endif()
@@ -137,9 +146,11 @@ macro(CHECK_INCLUDE_FILES INCLUDE VARIABLE)
CMAKE_FLAGS
-DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILES_FLAGS}
"${CHECK_INCLUDE_FILES_INCLUDE_DIRS}"
+ "${_CIF_LINK_DIRECTORIES}"
)
unset(_CIF_LINK_OPTIONS)
unset(_CIF_LINK_LIBRARIES)
+ unset(_CIF_LINK_DIRECTORIES)
if(${VARIABLE})
if(NOT CMAKE_REQUIRED_QUIET)
message(CHECK_PASS "found")
diff --git a/Modules/CheckLibraryExists.cmake b/Modules/CheckLibraryExists.cmake
index d48d7ec..58be342 100644
--- a/Modules/CheckLibraryExists.cmake
+++ b/Modules/CheckLibraryExists.cmake
@@ -35,6 +35,8 @@ the way the check is run:
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
@@ -58,6 +60,12 @@ macro(CHECK_LIBRARY_EXISTS LIBRARY FUNCTION LOCATION VARIABLE)
set(CHECK_LIBRARY_EXISTS_LIBRARIES
${CHECK_LIBRARY_EXISTS_LIBRARIES} ${CMAKE_REQUIRED_LIBRARIES})
endif()
+ if(CMAKE_REQUIRED_LINK_DIRECTORIES)
+ set(_CLE_LINK_DIRECTORIES
+ "-DLINK_DIRECTORIES:STRING=${LOCATION};${CMAKE_REQUIRED_LINK_DIRECTORIES}")
+ else()
+ set(_CLE_LINK_DIRECTORIES "-DLINK_DIRECTORIES:STRING=${LOCATION}")
+ endif()
if(CMAKE_C_COMPILER_LOADED)
set(_cle_source CheckFunctionExists.c)
@@ -74,9 +82,10 @@ macro(CHECK_LIBRARY_EXISTS LIBRARY FUNCTION LOCATION VARIABLE)
LINK_LIBRARIES ${CHECK_LIBRARY_EXISTS_LIBRARIES}
CMAKE_FLAGS
-DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_LIBRARY_EXISTS_DEFINITION}
- -DLINK_DIRECTORIES:STRING=${LOCATION}
+ "${_CLE_LINK_DIRECTORIES}"
)
unset(_cle_source)
+ unset(_CLE_LINK_DIRECTORIES)
if(${VARIABLE})
if(NOT CMAKE_REQUIRED_QUIET)
diff --git a/Modules/CheckOBJCCompilerFlag.cmake b/Modules/CheckOBJCCompilerFlag.cmake
index 102b137..183c7ec 100644
--- a/Modules/CheckOBJCCompilerFlag.cmake
+++ b/Modules/CheckOBJCCompilerFlag.cmake
@@ -45,6 +45,8 @@ flags in these variables can case a false negative result.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckOBJCSourceCompiles.cmake b/Modules/CheckOBJCSourceCompiles.cmake
index 1158b91..11d8ea9 100644
--- a/Modules/CheckOBJCSourceCompiles.cmake
+++ b/Modules/CheckOBJCSourceCompiles.cmake
@@ -47,6 +47,8 @@ Check once if Objective-C source can be built.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckOBJCSourceRuns.cmake b/Modules/CheckOBJCSourceRuns.cmake
index 6b8160d..0611d67 100644
--- a/Modules/CheckOBJCSourceRuns.cmake
+++ b/Modules/CheckOBJCSourceRuns.cmake
@@ -40,6 +40,8 @@ can subsequently be run.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckOBJCXXCompilerFlag.cmake b/Modules/CheckOBJCXXCompilerFlag.cmake
index 21daa5c..e185a31 100644
--- a/Modules/CheckOBJCXXCompilerFlag.cmake
+++ b/Modules/CheckOBJCXXCompilerFlag.cmake
@@ -45,6 +45,8 @@ flags in these variables can case a false negative result.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckOBJCXXSourceCompiles.cmake b/Modules/CheckOBJCXXSourceCompiles.cmake
index af3ffde..35024d7 100644
--- a/Modules/CheckOBJCXXSourceCompiles.cmake
+++ b/Modules/CheckOBJCXXSourceCompiles.cmake
@@ -47,6 +47,8 @@ Check once if Objective-C++ source can be built.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckOBJCXXSourceRuns.cmake b/Modules/CheckOBJCXXSourceRuns.cmake
index f867ac3..1192ff3 100644
--- a/Modules/CheckOBJCXXSourceRuns.cmake
+++ b/Modules/CheckOBJCXXSourceRuns.cmake
@@ -40,6 +40,8 @@ and can subsequently be run.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckPrototypeDefinition.cmake b/Modules/CheckPrototypeDefinition.cmake
index c1a7a1c..e2bba1e 100644
--- a/Modules/CheckPrototypeDefinition.cmake
+++ b/Modules/CheckPrototypeDefinition.cmake
@@ -45,6 +45,8 @@ the way the check is run:
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
@@ -83,6 +85,13 @@ function(check_prototype_definition _FUNCTION _PROTOTYPE _RETURN _HEADER _VARIAB
set(CMAKE_SYMBOL_EXISTS_INCLUDES)
endif()
+ if(CMAKE_REQUIRED_LINK_DIRECTORIES)
+ set(_CPD_LINK_DIRECTORIES
+ "-DLINK_DIRECTORIES:STRING=${CMAKE_REQUIRED_LINK_DIRECTORIES}")
+ else()
+ set(_CPD_LINK_DIRECTORIES)
+ endif()
+
foreach(_FILE ${_HEADER})
string(APPEND CHECK_PROTOTYPE_DEFINITION_HEADER
"#include <${_FILE}>\n")
@@ -102,7 +111,9 @@ function(check_prototype_definition _FUNCTION _PROTOTYPE _RETURN _HEADER _VARIAB
${CHECK_PROTOTYPE_DEFINITION_LIBS}
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${CHECK_PROTOTYPE_DEFINITION_FLAGS}
"${CMAKE_SYMBOL_EXISTS_INCLUDES}"
+ "${_CPD_LINK_DIRECTORIES}"
)
+ unset(_CPD_LINK_DIRECTORIES)
if (${_VARIABLE})
set(${_VARIABLE} 1 CACHE INTERNAL "Have correct prototype for ${_FUNCTION}")
diff --git a/Modules/CheckSourceCompiles.cmake b/Modules/CheckSourceCompiles.cmake
index b79726a..2ce6e85 100644
--- a/Modules/CheckSourceCompiles.cmake
+++ b/Modules/CheckSourceCompiles.cmake
@@ -76,6 +76,8 @@ Check once if source code can be built for a given language.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckSourceRuns.cmake b/Modules/CheckSourceRuns.cmake
index 84684b6..a0ddfee 100644
--- a/Modules/CheckSourceRuns.cmake
+++ b/Modules/CheckSourceRuns.cmake
@@ -62,6 +62,8 @@ subsequently be run.
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
#]=======================================================================]
diff --git a/Modules/CheckStructHasMember.cmake b/Modules/CheckStructHasMember.cmake
index 959f8e5..a088202 100644
--- a/Modules/CheckStructHasMember.cmake
+++ b/Modules/CheckStructHasMember.cmake
@@ -36,6 +36,8 @@ the way the check is run:
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
diff --git a/Modules/CheckSymbolExists.cmake b/Modules/CheckSymbolExists.cmake
index 621df75..a4950df 100644
--- a/Modules/CheckSymbolExists.cmake
+++ b/Modules/CheckSymbolExists.cmake
@@ -41,6 +41,8 @@ the way the check is run:
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
For example:
@@ -121,6 +123,13 @@ macro(__CHECK_SYMBOL_EXISTS_IMPL SOURCEFILE SYMBOL FILES VARIABLE)
else()
set(CMAKE_SYMBOL_EXISTS_INCLUDES)
endif()
+
+ if(CMAKE_REQUIRED_LINK_DIRECTORIES)
+ set(_CSE_LINK_DIRECTORIES
+ "-DLINK_DIRECTORIES:STRING=${CMAKE_REQUIRED_LINK_DIRECTORIES}")
+ else()
+ set(_CSE_LINK_DIRECTORIES)
+ endif()
foreach(FILE ${FILES})
string(APPEND _CSE_SOURCE
"#include <${FILE}>\n")
@@ -159,7 +168,9 @@ int main(int argc, char** argv)
CMAKE_FLAGS
-DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_SYMBOL_EXISTS_FLAGS}
"${CMAKE_SYMBOL_EXISTS_INCLUDES}"
+ "${_CSE_LINK_DIRECTORIES}"
)
+ unset(_CSE_LINK_DIRECTORIES)
if(${VARIABLE})
if(NOT CMAKE_REQUIRED_QUIET)
message(CHECK_PASS "found")
diff --git a/Modules/CheckTypeSize.cmake b/Modules/CheckTypeSize.cmake
index 849d691..ee54d92 100644
--- a/Modules/CheckTypeSize.cmake
+++ b/Modules/CheckTypeSize.cmake
@@ -77,6 +77,8 @@ the way the check is run:
.. include:: /module/CMAKE_REQUIRED_LIBRARIES.txt
+.. include:: /module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
+
.. include:: /module/CMAKE_REQUIRED_QUIET.txt
``CMAKE_EXTRA_INCLUDE_FILES``
@@ -140,6 +142,13 @@ function(__check_type_size_impl type var map builtin language)
string(APPEND headers "#include \"${h}\"\n")
endforeach()
+ if(CMAKE_REQUIRED_LINK_DIRECTORIES)
+ set(_CTS_LINK_DIRECTORIES
+ "-DLINK_DIRECTORIES:STRING=${CMAKE_REQUIRED_LINK_DIRECTORIES}")
+ else()
+ set(_CTS_LINK_DIRECTORIES)
+ endif()
+
# Perform the check.
set(bin ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.bin)
file(READ ${__check_type_size_dir}/CheckTypeSize.c.in src_content)
@@ -151,8 +160,10 @@ function(__check_type_size_impl type var map builtin language)
CMAKE_FLAGS
"-DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS}"
"-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}"
+ "${_CTS_LINK_DIRECTORIES}"
COPY_FILE ${bin}
)
+ unset(_CTS_LINK_DIRECTORIES)
if(HAVE_${var})
# The check compiled. Load information from the binary.
diff --git a/Modules/CheckVariableExists.cmake b/Modules/CheckVariableExists.cmake
index 9e5d710..37bef1b 100644
--- a/Modules/CheckVariableExists.cmake
+++ b/Modules/CheckVariableExists.cmake
@@ -59,13 +59,23 @@ macro(CHECK_VARIABLE_EXISTS VAR VARIABLE)
else()
set(CHECK_VARIABLE_EXISTS_ADD_LIBRARIES)
endif()
+
+ if(CMAKE_REQUIRED_LINK_DIRECTORIES)
+ set(_CVE_LINK_DIRECTORIES
+ "-DLINK_DIRECTORIES:STRING=${CMAKE_REQUIRED_LINK_DIRECTORIES}")
+ else()
+ set(_CVE_LINK_DIRECTORIES)
+ endif()
+
try_compile(${VARIABLE}
SOURCES ${CMAKE_ROOT}/Modules/CheckVariableExists.c
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
${CHECK_VARIABLE_EXISTS_ADD_LINK_OPTIONS}
${CHECK_VARIABLE_EXISTS_ADD_LIBRARIES}
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_VARIABLE_DEFINITIONS}
+ "${_CVE_LINK_DIRECTORIES}"
)
+ unset(_CVE_LINK_DIRECTORIES)
if(${VARIABLE})
set(${VARIABLE} 1 CACHE INTERNAL "Have variable ${VAR}")
if(NOT CMAKE_REQUIRED_QUIET)
diff --git a/Modules/Internal/CheckSourceCompiles.cmake b/Modules/Internal/CheckSourceCompiles.cmake
index 14a9a61..1eadc80 100644
--- a/Modules/Internal/CheckSourceCompiles.cmake
+++ b/Modules/Internal/CheckSourceCompiles.cmake
@@ -87,6 +87,13 @@ function(CMAKE_CHECK_SOURCE_COMPILES _lang _source _var)
else()
set(CHECK_${LANG}_SOURCE_COMPILES_ADD_LIBRARIES)
endif()
+ if(CMAKE_REQUIRED_LINK_DIRECTORIES)
+ set(_CSC_LINK_DIRECTORIES
+ "-DLINK_DIRECTORIES:STRING=${CMAKE_REQUIRED_LINK_DIRECTORIES}")
+ else()
+ set(_CSC_LINK_DIRECTORIES)
+ endif()
+
if(CMAKE_REQUIRED_INCLUDES)
set(CHECK_${LANG}_SOURCE_COMPILES_ADD_INCLUDES
"-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
@@ -105,7 +112,9 @@ function(CMAKE_CHECK_SOURCE_COMPILES _lang _source _var)
${CHECK_${LANG}_SOURCE_COMPILES_ADD_LIBRARIES}
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS}
"${CHECK_${LANG}_SOURCE_COMPILES_ADD_INCLUDES}"
+ "${_CSC_LINK_DIRECTORIES}"
OUTPUT_VARIABLE OUTPUT)
+ unset(_CSC_LINK_DIRECTORIES)
foreach(_regex ${_FAIL_REGEX})
if("${OUTPUT}" MATCHES "${_regex}")
diff --git a/Modules/Internal/CheckSourceRuns.cmake b/Modules/Internal/CheckSourceRuns.cmake
index c01081e..761598f 100644
--- a/Modules/Internal/CheckSourceRuns.cmake
+++ b/Modules/Internal/CheckSourceRuns.cmake
@@ -79,6 +79,12 @@ function(CMAKE_CHECK_SOURCE_RUNS _lang _source _var)
else()
set(CHECK_${_lang}_SOURCE_COMPILES_ADD_LIBRARIES)
endif()
+ if(CMAKE_REQUIRED_LINK_DIRECTORIES)
+ set(_CSR_LINK_DIRECTORIES
+ "-DLINK_DIRECTORIES:STRING=${CMAKE_REQUIRED_LINK_DIRECTORIES}")
+ else()
+ set(_CSR_LINK_DIRECTORIES)
+ endif()
if(CMAKE_REQUIRED_INCLUDES)
set(CHECK_${_lang}_SOURCE_COMPILES_ADD_INCLUDES
"-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
@@ -98,7 +104,9 @@ function(CMAKE_CHECK_SOURCE_RUNS _lang _source _var)
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS}
-DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
"${CHECK_${_lang}_SOURCE_COMPILES_ADD_INCLUDES}"
+ "${_CSR_LINK_DIRECTORIES}"
)
+ unset(_CSR_LINK_DIRECTORIES)
# if it did not compile make the return value fail code of 1
if(NOT ${_var}_COMPILED)
set(${_var}_EXITCODE 1)
diff --git a/Tests/CMakeTests/PushCheckStateTest.cmake.in b/Tests/CMakeTests/PushCheckStateTest.cmake.in
index cbd879d..5b50cc5 100644
--- a/Tests/CMakeTests/PushCheckStateTest.cmake.in
+++ b/Tests/CMakeTests/PushCheckStateTest.cmake.in
@@ -5,6 +5,7 @@ set(CMAKE_EXTRA_INCLUDE_FILES file1)
set(CMAKE_REQUIRED_INCLUDES dir1)
set(CMAKE_REQUIRED_DEFINITIONS defs1 )
set(CMAKE_REQUIRED_LIBRARIES lib1)
+set(CMAKE_REQUIRED_LINK_DIRECTORIES linkdir1)
set(CMAKE_REQUIRED_FLAGS flag1)
set(CMAKE_REQUIRED_QUIET 1)
@@ -14,16 +15,17 @@ set(CMAKE_EXTRA_INCLUDE_FILES file2)
set(CMAKE_REQUIRED_INCLUDES dir2)
set(CMAKE_REQUIRED_DEFINITIONS defs2)
set(CMAKE_REQUIRED_LIBRARIES lib2)
+set(CMAKE_REQUIRED_LINK_DIRECTORIES linkdir2)
set(CMAKE_REQUIRED_FLAGS flag2)
set(CMAKE_REQUIRED_QUIET 2)
cmake_push_check_state()
set(CMAKE_EXTRA_INCLUDE_FILES file3)
-set(CMAKE_REQUIRED_DEFINITIONS defs3)
set(CMAKE_REQUIRED_INCLUDES dir3)
set(CMAKE_REQUIRED_DEFINITIONS defs3)
set(CMAKE_REQUIRED_LIBRARIES lib3)
+set(CMAKE_REQUIRED_LINK_DIRECTORIES linkdir3)
set(CMAKE_REQUIRED_FLAGS flag3)
set(CMAKE_REQUIRED_QUIET 3)
@@ -34,6 +36,7 @@ foreach(pair IN ITEMS
REQUIRED_INCLUDES|
REQUIRED_DEFINITIONS|
REQUIRED_LIBRARIES|
+ REQUIRED_LINK_DIRECTORIES|
REQUIRED_FLAGS|
REQUIRED_QUIET|
)
@@ -55,6 +58,7 @@ foreach(pair IN ITEMS
REQUIRED_INCLUDES|dir2
REQUIRED_DEFINITIONS|defs2
REQUIRED_LIBRARIES|lib2
+ REQUIRED_LINK_DIRECTORIES|linkdir2
REQUIRED_FLAGS|flag2
REQUIRED_QUIET|2
)
@@ -74,6 +78,7 @@ foreach(pair IN ITEMS
REQUIRED_INCLUDES|dir1
REQUIRED_DEFINITIONS|defs1
REQUIRED_LIBRARIES|lib1
+ REQUIRED_LINK_DIRECTORIES|linkdir1
REQUIRED_FLAGS|flag1
REQUIRED_QUIET|1
)
diff --git a/Tests/RunCMake/CheckModules/CheckLinkDirectories.cmake b/Tests/RunCMake/CheckModules/CheckLinkDirectories.cmake
new file mode 100644
index 0000000..1bfb353
--- /dev/null
+++ b/Tests/RunCMake/CheckModules/CheckLinkDirectories.cmake
@@ -0,0 +1,122 @@
+cmake_policy(SET CMP0075 NEW)
+
+enable_language(C)
+enable_language(CXX)
+
+function(test_check_result isSucceed functionName)
+ if(isSucceed AND NOT IS_NEED_SUCCESS)
+ message(SEND_ERROR "${functionName}: check succeeded instead of failure")
+ elseif((NOT isSucceed) AND IS_NEED_SUCCESS)
+ message(SEND_ERROR "${functionName}: check failed instead of success")
+ endif()
+endfunction()
+
+# Common variables
+set(validCSourceCode "int main() {return 0;}")
+
+###
+# Checking checkers
+###
+
+# It uses common internal function `CMAKE_CHECK_SOURCE_COMPILES()`
+# include(CheckCCompilerFlag)
+
+# Also checks common internal function `CMAKE_CHECK_SOURCE_COMPILES()`
+include(CheckCSourceCompiles)
+check_c_source_compiles("${validCSourceCode}" CHECK_C_SOURCE_COMPILES_SUCCEED)
+test_check_result("${CHECK_C_SOURCE_COMPILES_SUCCEED}" check_c_source_compiles)
+
+# Also checks common internal function `CMAKE_CHECK_SOURCE_RUNS()`
+include(CheckCSourceRuns)
+check_c_source_runs("${validCSourceCode}" CHECK_C_SOURCE_RUNS_SUCCEED)
+test_check_result("${CHECK_C_SOURCE_RUNS_SUCCEED}" check_c_source_runs)
+
+# Shares code with similar C checkers
+# include(CheckCXXCompilerFlag)
+# include(CheckCXXSourceCompiles)
+# include(CheckCXXSourceRuns)
+# include(CheckCXXSymbolExists)
+
+# Shares code with similar C checkers
+# include(CheckCompilerFlag)
+# include(CheckSourceCompiles)
+# include(CheckSourceRuns)
+
+# Shares code with similar C checkers
+# include(CheckFortranCompilerFlag)
+# include(CheckFortranFunctionExists) # No way to test it
+# include(CheckFortranSourceCompiles)
+# include(CheckFortranSourceRuns)
+
+include(CheckFunctionExists)
+check_function_exists (memcpy CHECK_FUNCTION_EXISTS_SUCCEED)
+test_check_result("${CHECK_FUNCTION_EXISTS_SUCCEED}" check_function_exists)
+
+include(CheckIncludeFile)
+check_include_file("stddef.h" CHECK_INCLUDE_FILE_SUCCEED)
+test_check_result("${CHECK_INCLUDE_FILE_SUCCEED}" check_include_file)
+
+include(CheckIncludeFileCXX)
+check_include_file_cxx("stddef.h" CHECK_INCLUDE_FILE_CXX_SUCCEED)
+test_check_result("${CHECK_INCLUDE_FILE_CXX_SUCCEED}" check_include_file_cxx)
+
+include(CheckIncludeFiles)
+check_include_files("stddef.h;stdlib.h" CHECK_INCLUDE_FILES_SUCCEED)
+test_check_result("${CHECK_INCLUDE_FILES_SUCCEED}" check_include_files)
+
+include(CheckLibraryExists)
+block(PROPAGATE HAVE_LIBM)
+ unset(CMAKE_REQUIRED_LIBRARIES)
+ unset(CMAKE_REQUIRED_LINK_DIRECTORIES)
+ check_library_exists(m ceil "" HAVE_LIBM)
+endblock()
+
+if(HAVE_LIBM)
+ check_library_exists(m ceil "" CHECK_LIBRARY_EXISTS_SUCCEED)
+ test_check_result("${CHECK_LIBRARY_EXISTS_SUCCEED}" check_library_exists)
+endif()
+
+# Shares code with similar C checkers
+# include(CheckOBJCCompilerFlag)
+# include(CheckOBJCSourceCompiles)
+# include(CheckOBJCSourceRuns)
+
+# Shares code with similar C checkers
+# include(CheckOBJCXXCompilerFlag)
+# include(CheckOBJCXXSourceCompiles)
+# include(CheckOBJCXXSourceRuns)
+
+include(CheckPrototypeDefinition)
+block(PROPAGATE CHECK_PROTOTYPE_DEFINITION_WORKS)
+ unset(CMAKE_REQUIRED_LIBRARIES)
+ unset(CMAKE_REQUIRED_LINK_DIRECTORIES)
+ check_prototype_definition(memmove
+ "void *memmove(void *dest, const void *src, size_t n)"
+ "NULL"
+ "string.h"
+ CHECK_PROTOTYPE_DEFINITION_SUCCEED)
+endblock()
+
+if (CHECK_PROTOTYPE_DEFINITION_WORKS)
+ check_prototype_definition(memmove
+ "void *memmove(void *dest, const void *src, size_t n)"
+ "NULL"
+ "string.h"
+ CHECK_PROTOTYPE_DEFINITION_SUCCEED)
+ test_check_result("${CHECK_PROTOTYPE_DEFINITION_SUCCEED}" check_prototype_definition)
+endif()
+
+# It uses common internal function `CMAKE_CHECK_SOURCE_COMPILES()`
+# include(CheckStructHasMember)
+
+include(CheckSymbolExists)
+check_symbol_exists(errno "errno.h" CHECK_SYMBOL_EXISTS_SUCCEED)
+test_check_result("${CHECK_SYMBOL_EXISTS_SUCCEED}" check_symbol_exists)
+
+include(CheckTypeSize)
+check_type_size(int SIZEOF_INT)
+test_check_result("${HAVE_SIZEOF_INT}" check_type_size)
+
+include(CheckVariableExists)
+check_variable_exists(myTestVar CHECK_VARIABLE_EXISTS_SUCCEED)
+test_check_result("${CHECK_VARIABLE_EXISTS_SUCCEED}" check_variable_exists)
diff --git a/Tests/RunCMake/CheckModules/CheckLinkDirectoriesTestLib.cmake b/Tests/RunCMake/CheckModules/CheckLinkDirectoriesTestLib.cmake
new file mode 100644
index 0000000..aa8a6c3
--- /dev/null
+++ b/Tests/RunCMake/CheckModules/CheckLinkDirectoriesTestLib.cmake
@@ -0,0 +1 @@
+add_subdirectory(TestLib)
diff --git a/Tests/RunCMake/CheckModules/RunCMakeTest.cmake b/Tests/RunCMake/CheckModules/RunCMakeTest.cmake
index 8a046e1..762204e 100644
--- a/Tests/RunCMake/CheckModules/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CheckModules/RunCMakeTest.cmake
@@ -22,3 +22,31 @@ run_cmake(CheckIncludeFilesOkNoC)
run_cmake(CheckIncludeFilesMissingLanguage)
run_cmake(CheckIncludeFilesUnknownArgument)
run_cmake(CheckIncludeFilesUnknownLanguage)
+
+block()
+ # Set common variables
+ set(libDir ${RunCMake_BINARY_DIR}/CheckLinkDirectoriesTestLib-build/TestLib/lib)
+ set(libName mySharedLibrary)
+
+ # Build common part
+ run_cmake(CheckLinkDirectoriesTestLib)
+ set(RunCMake_TEST_NO_CLEAN 1)
+ set(RunCMake_TEST_OUTPUT_MERGE 1)
+ run_cmake_command(CheckLinkDirectoriesTestLib ${CMAKE_COMMAND} --build .)
+
+ # Run tests cleanly
+ unset(RunCMake_TEST_NO_CLEAN)
+ unset(RunCMake_TEST_OUTPUT_MERGE)
+
+ set(RunCMake_TEST_VARIANT_DESCRIPTION "WithDirectories")
+ run_cmake_with_options("CheckLinkDirectories"
+ "-DCMAKE_REQUIRED_LIBRARIES=${libName}"
+ "-DCMAKE_REQUIRED_LINK_DIRECTORIES=${libDir}"
+ "-DIS_NEED_SUCCESS:BOOL=ON"
+ )
+ set(RunCMake_TEST_VARIANT_DESCRIPTION "WithoutDirectories")
+ run_cmake_with_options("CheckLinkDirectories"
+ "-DCMAKE_REQUIRED_LIBRARIES=${libName}"
+ "-DIS_NEED_SUCCESS:BOOL=OFF"
+ )
+endblock()
diff --git a/Tests/RunCMake/CheckModules/TestLib/CMakeLists.txt b/Tests/RunCMake/CheckModules/TestLib/CMakeLists.txt
new file mode 100644
index 0000000..e8c4fed
--- /dev/null
+++ b/Tests/RunCMake/CheckModules/TestLib/CMakeLists.txt
@@ -0,0 +1,3 @@
+project(TestLib C)
+add_library(mySharedLibrary TestLib.c)
+set_target_properties(mySharedLibrary PROPERTIES ARCHIVE_OUTPUT_DIRECTORY $<1:lib>)
diff --git a/Tests/RunCMake/CheckModules/TestLib/TestLib.c b/Tests/RunCMake/CheckModules/TestLib/TestLib.c
new file mode 100644
index 0000000..b4bc30d
--- /dev/null
+++ b/Tests/RunCMake/CheckModules/TestLib/TestLib.c
@@ -0,0 +1,6 @@
+int myTestVar = 42;
+
+int TestSymbol(void)
+{
+ return 0;
+}