Check*: Add option to pass link directories into checks
This commit is contained in:
parent
6c120379df
commit
9e95bd49f2
5
Help/module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
Normal file
5
Help/module/CMAKE_REQUIRED_LINK_DIRECTORIES.txt
Normal file
@ -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).
|
99
Help/release/dev/macro-required-link-directories.rst
Normal file
99
Help/release/dev/macro-required-link-directories.rst
Normal file
@ -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.
|
@ -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()
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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
|
||||
#]=======================================================================]
|
||||
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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}")
|
||||
|
@ -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})
|
||||
|
@ -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})
|
||||
|
@ -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")
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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}")
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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
|
||||
|
||||
#]=======================================================================]
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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")
|
||||
|
@ -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.
|
||||
|
@ -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)
|
||||
|
@ -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}")
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
)
|
||||
|
122
Tests/RunCMake/CheckModules/CheckLinkDirectories.cmake
Normal file
122
Tests/RunCMake/CheckModules/CheckLinkDirectories.cmake
Normal file
@ -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)
|
@ -0,0 +1 @@
|
||||
add_subdirectory(TestLib)
|
@ -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()
|
||||
|
3
Tests/RunCMake/CheckModules/TestLib/CMakeLists.txt
Normal file
3
Tests/RunCMake/CheckModules/TestLib/CMakeLists.txt
Normal file
@ -0,0 +1,3 @@
|
||||
project(TestLib C)
|
||||
add_library(mySharedLibrary TestLib.c)
|
||||
set_target_properties(mySharedLibrary PROPERTIES ARCHIVE_OUTPUT_DIRECTORY $<1:lib>)
|
6
Tests/RunCMake/CheckModules/TestLib/TestLib.c
Normal file
6
Tests/RunCMake/CheckModules/TestLib/TestLib.c
Normal file
@ -0,0 +1,6 @@
|
||||
int myTestVar = 42;
|
||||
|
||||
int TestSymbol(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user