diff --git a/Modules/CheckFunctionExists.cmake b/Modules/CheckFunctionExists.cmake index 5d13f2b627..899e937ae5 100644 --- a/Modules/CheckFunctionExists.cmake +++ b/Modules/CheckFunctionExists.cmake @@ -123,38 +123,15 @@ See Also #]=======================================================================] include_guard(GLOBAL) +include(Internal/CheckCommon) macro(CHECK_FUNCTION_EXISTS FUNCTION VARIABLE) if(NOT DEFINED "${VARIABLE}" OR "x${${VARIABLE}}" STREQUAL "x${VARIABLE}") - set(MACRO_CHECK_FUNCTION_DEFINITIONS - "-DCHECK_FUNCTION_EXISTS=${FUNCTION} ${CMAKE_REQUIRED_FLAGS}") if(NOT CMAKE_REQUIRED_QUIET) message(CHECK_START "Looking for ${FUNCTION}") endif() - if(CMAKE_REQUIRED_LINK_OPTIONS) - set(CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS - LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS}) - else() - set(CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS) - endif() - if(CMAKE_REQUIRED_LIBRARIES) - set(CHECK_FUNCTION_EXISTS_ADD_LIBRARIES - LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) - 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}") - else() - set(CHECK_FUNCTION_EXISTS_ADD_INCLUDES) - endif() + + cmake_check_common_init_args(_CFE) if(CMAKE_C_COMPILER_LOADED) set(_cfe_source CheckFunctionExists.c) @@ -166,15 +143,19 @@ macro(CHECK_FUNCTION_EXISTS FUNCTION VARIABLE) try_compile(${VARIABLE} SOURCE_FROM_FILE "${_cfe_source}" "${CMAKE_ROOT}/Modules/CheckFunctionExists.c" - COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} - ${CHECK_FUNCTION_EXISTS_ADD_LINK_OPTIONS} - ${CHECK_FUNCTION_EXISTS_ADD_LIBRARIES} - CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS} - "${CHECK_FUNCTION_EXISTS_ADD_INCLUDES}" - "${_CFE_LINK_DIRECTORIES}" + COMPILE_DEFINITIONS + -DCHECK_FUNCTION_EXISTS=${FUNCTION} + ${CMAKE_REQUIRED_DEFINITIONS} + ${_CFE_ADD_LINK_OPTIONS} + ${_CFE_ADD_LINK_LIBRARIES} + CMAKE_FLAGS + -DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS} + ${_CSC_EXTRA_CMAKE_ARGUMENTS} + "${_CFE_INCLUDE_DIRECTORIES}" + "${_CFE_LINK_DIRECTORIES}" ) unset(_cfe_source) - unset(_CFE_LINK_DIRECTORIES) + cmake_check_common_cleanup(_CFE) if(${VARIABLE}) set(${VARIABLE} 1 CACHE INTERNAL "Have function ${FUNCTION}") diff --git a/Modules/CheckIncludeFile.cmake b/Modules/CheckIncludeFile.cmake index 8acd6cf26b..056979652c 100644 --- a/Modules/CheckIncludeFile.cmake +++ b/Modules/CheckIncludeFile.cmake @@ -116,15 +116,10 @@ See Also #]=======================================================================] include_guard(GLOBAL) +include(Internal/CheckCommon) macro(CHECK_INCLUDE_FILE INCLUDE VARIABLE) if(NOT DEFINED "${VARIABLE}") - if(CMAKE_REQUIRED_INCLUDES) - set(CHECK_INCLUDE_FILE_C_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}") - else() - set(CHECK_INCLUDE_FILE_C_INCLUDE_DIRS) - endif() - set(MACRO_CHECK_INCLUDE_FILE_FLAGS ${CMAKE_REQUIRED_FLAGS}) set(CHECK_INCLUDE_FILE_VAR ${INCLUDE}) file(READ ${CMAKE_ROOT}/Modules/CheckIncludeFile.c.in _CIF_SOURCE_CONTENT) string(CONFIGURE "${_CIF_SOURCE_CONTENT}" _CIF_SOURCE_CONTENT) @@ -136,18 +131,17 @@ macro(CHECK_INCLUDE_FILE INCLUDE VARIABLE) string(APPEND CMAKE_C_FLAGS " ${ARGV2}") endif() - set(_CIF_LINK_OPTIONS) - if(CMAKE_REQUIRED_LINK_OPTIONS) - set(_CIF_LINK_OPTIONS LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS}) - endif() + cmake_check_common_init_compile_args(_CIF) + cmake_check_common_init_link_options(_CIF) + cmake_check_common_init_link_directories(_CIF) - set(_CIF_LINK_LIBRARIES "") + set(_CIF_ADD_LINK_LIBRARIES "") if(CMAKE_REQUIRED_LIBRARIES) cmake_policy(GET CMP0075 _CIF_CMP0075 PARENT_SCOPE # undocumented, do not use outside of CMake ) if("x${_CIF_CMP0075}x" STREQUAL "xNEWx") - set(_CIF_LINK_LIBRARIES LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) + set(_CIF_ADD_LINK_LIBRARIES LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) elseif("x${_CIF_CMP0075}x" STREQUAL "xOLDx") elseif(NOT _CIF_CMP0075_WARNED) set(_CIF_CMP0075_WARNED 1) @@ -160,26 +154,17 @@ 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} - ${_CIF_LINK_OPTIONS} - ${_CIF_LINK_LIBRARIES} + ${_CIF_ADD_LINK_OPTIONS} + ${_CIF_ADD_LINK_LIBRARIES} CMAKE_FLAGS - -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILE_FLAGS} - "${CHECK_INCLUDE_FILE_C_INCLUDE_DIRS}" - "${_CIF_LINK_DIRECTORIES}" + -DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS} + "${_CIF_INCLUDE_DIRECTORIES}" + "${_CIF_LINK_DIRECTORIES}" ) - unset(_CIF_LINK_OPTIONS) - unset(_CIF_LINK_LIBRARIES) - unset(_CIF_LINK_DIRECTORIES) + cmake_check_common_cleanup(_CIF) if(${ARGC} EQUAL 3) set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS_SAVE}) diff --git a/Modules/CheckIncludeFileCXX.cmake b/Modules/CheckIncludeFileCXX.cmake index 9dade6be78..bea5f08ceb 100644 --- a/Modules/CheckIncludeFileCXX.cmake +++ b/Modules/CheckIncludeFileCXX.cmake @@ -85,15 +85,10 @@ See Also #]=======================================================================] include_guard(GLOBAL) +include(Internal/CheckCommon) macro(CHECK_INCLUDE_FILE_CXX INCLUDE VARIABLE) if(NOT DEFINED "${VARIABLE}" OR "x${${VARIABLE}}" STREQUAL "x${VARIABLE}") - if(CMAKE_REQUIRED_INCLUDES) - set(CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}") - else() - set(CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS) - endif() - set(MACRO_CHECK_INCLUDE_FILE_FLAGS ${CMAKE_REQUIRED_FLAGS}) set(CHECK_INCLUDE_FILE_VAR ${INCLUDE}) file(READ ${CMAKE_ROOT}/Modules/CheckIncludeFile.cxx.in _CIF_SOURCE_CONTENT) string(CONFIGURE "${_CIF_SOURCE_CONTENT}" _CIF_SOURCE_CONTENT) @@ -105,18 +100,17 @@ macro(CHECK_INCLUDE_FILE_CXX INCLUDE VARIABLE) string(APPEND CMAKE_CXX_FLAGS " ${ARGV2}") endif() - set(_CIF_LINK_OPTIONS) - if(CMAKE_REQUIRED_LINK_OPTIONS) - set(_CIF_LINK_OPTIONS LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS}) - endif() + cmake_check_common_init_compile_args(_CIF) + cmake_check_common_init_link_options(_CIF) + cmake_check_common_init_link_directories(_CIF) - set(_CIF_LINK_LIBRARIES "") + set(_CIF_ADD_LINK_LIBRARIES "") if(CMAKE_REQUIRED_LIBRARIES) cmake_policy(GET CMP0075 _CIF_CMP0075 PARENT_SCOPE # undocumented, do not use outside of CMake ) if("x${_CIF_CMP0075}x" STREQUAL "xNEWx") - set(_CIF_LINK_LIBRARIES LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) + set(_CIF_ADD_LINK_LIBRARIES LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) elseif("x${_CIF_CMP0075}x" STREQUAL "xOLDx") elseif(NOT _CIF_CMP0075_WARNED) set(_CIF_CMP0075_WARNED 1) @@ -129,26 +123,17 @@ 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} - ${_CIF_LINK_OPTIONS} - ${_CIF_LINK_LIBRARIES} + ${_CIF_ADD_LINK_OPTIONS} + ${_CIF_ADD_LINK_LIBRARIES} CMAKE_FLAGS - -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILE_FLAGS} - "${CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS}" - "${_CIF_LINK_DIRECTORIES}" + -DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS} + "${_CIF_INCLUDE_DIRECTORIES}" + "${_CIF_LINK_DIRECTORIES}" ) - unset(_CIF_LINK_OPTIONS) - unset(_CIF_LINK_LIBRARIES) - unset(_CIF_LINK_DIRECTORIES) + cmake_check_common_cleanup(_CIF) if(${ARGC} EQUAL 3) set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS_SAVE}) diff --git a/Modules/CheckIncludeFiles.cmake b/Modules/CheckIncludeFiles.cmake index 00fce8c47b..57e6beda66 100644 --- a/Modules/CheckIncludeFiles.cmake +++ b/Modules/CheckIncludeFiles.cmake @@ -106,6 +106,7 @@ See Also #]=======================================================================] include_guard(GLOBAL) +include(Internal/CheckCommon) macro(CHECK_INCLUDE_FILES INCLUDE VARIABLE) if(NOT DEFINED "${VARIABLE}") @@ -136,13 +137,7 @@ macro(CHECK_INCLUDE_FILES INCLUDE VARIABLE) message(FATAL_ERROR "Unknown language:\n ${_lang}\nSupported languages: C, CXX.\n") endif() - if(CMAKE_REQUIRED_INCLUDES) - set(CHECK_INCLUDE_FILES_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}") - else() - set(CHECK_INCLUDE_FILES_INCLUDE_DIRS) - endif() set(CHECK_INCLUDE_FILES_CONTENT "/* */\n") - set(MACRO_CHECK_INCLUDE_FILES_FLAGS ${CMAKE_REQUIRED_FLAGS}) foreach(FILE ${INCLUDE}) string(APPEND _src_content "#include <${FILE}>\n") @@ -160,18 +155,17 @@ macro(CHECK_INCLUDE_FILES INCLUDE VARIABLE) set(_description "include file ${_INCLUDE}") endif() - set(_CIF_LINK_OPTIONS) - if(CMAKE_REQUIRED_LINK_OPTIONS) - set(_CIF_LINK_OPTIONS LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS}) - endif() + cmake_check_common_init_compile_args(_CIF) + cmake_check_common_init_link_options(_CIF) + cmake_check_common_init_link_directories(_CIF) - set(_CIF_LINK_LIBRARIES "") + set(_CIF_ADD_LINK_LIBRARIES "") if(CMAKE_REQUIRED_LIBRARIES) cmake_policy(GET CMP0075 _CIF_CMP0075 PARENT_SCOPE # undocumented, do not use outside of CMake ) if("x${_CIF_CMP0075}x" STREQUAL "xNEWx") - set(_CIF_LINK_LIBRARIES LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) + set(_CIF_ADD_LINK_LIBRARIES LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) elseif("x${_CIF_CMP0075}x" STREQUAL "xOLDx") elseif(NOT _CIF_CMP0075_WARNED) set(_CIF_CMP0075_WARNED 1) @@ -184,29 +178,21 @@ 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() try_compile(${VARIABLE} SOURCE_FROM_VAR "${src}" _src_content COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} - ${_CIF_LINK_OPTIONS} - ${_CIF_LINK_LIBRARIES} + ${_CIF_ADD_LINK_OPTIONS} + ${_CIF_ADD_LINK_LIBRARIES} CMAKE_FLAGS - -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_INCLUDE_FILES_FLAGS} - "${CHECK_INCLUDE_FILES_INCLUDE_DIRS}" - "${_CIF_LINK_DIRECTORIES}" + -DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS} + "${_CIF_INCLUDE_DIRECTORIES}" + "${_CIF_LINK_DIRECTORIES}" ) - unset(_CIF_LINK_OPTIONS) - unset(_CIF_LINK_LIBRARIES) - unset(_CIF_LINK_DIRECTORIES) + cmake_check_common_cleanup(_CIF) + if(${VARIABLE}) if(NOT CMAKE_REQUIRED_QUIET) message(CHECK_PASS "found") diff --git a/Modules/CheckLibraryExists.cmake b/Modules/CheckLibraryExists.cmake index bd75bd1f6f..4864908bad 100644 --- a/Modules/CheckLibraryExists.cmake +++ b/Modules/CheckLibraryExists.cmake @@ -118,30 +118,18 @@ See Also #]=======================================================================] include_guard(GLOBAL) +include(Internal/CheckCommon) macro(CHECK_LIBRARY_EXISTS LIBRARY FUNCTION LOCATION VARIABLE) if(NOT DEFINED "${VARIABLE}") - set(MACRO_CHECK_LIBRARY_EXISTS_DEFINITION - "-DCHECK_FUNCTION_EXISTS=${FUNCTION} ${CMAKE_REQUIRED_FLAGS}") if(NOT CMAKE_REQUIRED_QUIET) message(CHECK_START "Looking for ${FUNCTION} in ${LIBRARY}") endif() - set(CHECK_LIBRARY_EXISTS_LINK_OPTIONS) - if(CMAKE_REQUIRED_LINK_OPTIONS) - set(CHECK_LIBRARY_EXISTS_LINK_OPTIONS - LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS}) - endif() - set(CHECK_LIBRARY_EXISTS_LIBRARIES ${LIBRARY}) - if(CMAKE_REQUIRED_LIBRARIES) - 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() + + cmake_check_common_init_compile_flags(_CLE) + cmake_check_common_init_link_options(_CLE) + cmake_check_common_init_link_libraries(_CLE "${LIBRARY}") + cmake_check_common_init_link_directories(_CLE "${LOCATION}") if(CMAKE_C_COMPILER_LOADED) set(_cle_source CheckFunctionExists.c) @@ -153,15 +141,17 @@ macro(CHECK_LIBRARY_EXISTS LIBRARY FUNCTION LOCATION VARIABLE) try_compile(${VARIABLE} SOURCE_FROM_FILE "${_cle_source}" "${CMAKE_ROOT}/Modules/CheckFunctionExists.c" - COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} - ${CHECK_LIBRARY_EXISTS_LINK_OPTIONS} - LINK_LIBRARIES ${CHECK_LIBRARY_EXISTS_LIBRARIES} + COMPILE_DEFINITIONS + -DCHECK_FUNCTION_EXISTS=${FUNCTION} + ${CMAKE_REQUIRED_DEFINITIONS} + ${_CLE_ADD_LINK_OPTIONS} + ${_CLE_ADD_LINK_LIBRARIES} CMAKE_FLAGS - -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_LIBRARY_EXISTS_DEFINITION} - "${_CLE_LINK_DIRECTORIES}" + -DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS} + "${_CLE_LINK_DIRECTORIES}" ) unset(_cle_source) - unset(_CLE_LINK_DIRECTORIES) + cmake_check_common_cleanup(_CLE) if(${VARIABLE}) if(NOT CMAKE_REQUIRED_QUIET) diff --git a/Modules/CheckPrototypeDefinition.cmake b/Modules/CheckPrototypeDefinition.cmake index d77e81cede..84f0b6d858 100644 --- a/Modules/CheckPrototypeDefinition.cmake +++ b/Modules/CheckPrototypeDefinition.cmake @@ -94,6 +94,7 @@ expected prototype: #]=======================================================================] include_guard(GLOBAL) +include(Internal/CheckCommon) function(check_prototype_definition _FUNCTION _PROTOTYPE _RETURN _HEADER _VARIABLE) @@ -103,33 +104,6 @@ function(check_prototype_definition _FUNCTION _PROTOTYPE _RETURN _HEADER _VARIAB endif() set(CHECK_PROTOTYPE_DEFINITION_CONTENT "/* */\n") - set(CHECK_PROTOTYPE_DEFINITION_FLAGS ${CMAKE_REQUIRED_FLAGS}) - if (CMAKE_REQUIRED_LINK_OPTIONS) - set(CHECK_PROTOTYPE_DEFINITION_LINK_OPTIONS - LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS}) - else() - set(CHECK_PROTOTYPE_DEFINITION_LINK_OPTIONS) - endif() - if (CMAKE_REQUIRED_LIBRARIES) - set(CHECK_PROTOTYPE_DEFINITION_LIBS - LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) - else() - set(CHECK_PROTOTYPE_DEFINITION_LIBS) - endif() - if (CMAKE_REQUIRED_INCLUDES) - set(CMAKE_SYMBOL_EXISTS_INCLUDES - "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}") - else() - 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") @@ -142,16 +116,19 @@ function(check_prototype_definition _FUNCTION _PROTOTYPE _RETURN _HEADER _VARIAB file(READ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/CheckPrototypeDefinition.c.in _SOURCE) string(CONFIGURE "${_SOURCE}" _SOURCE @ONLY) + cmake_check_common_init_args(_CPD) + try_compile(${_VARIABLE} SOURCE_FROM_VAR CheckPrototypeDefinition.c _SOURCE COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} - ${CHECK_PROTOTYPE_DEFINITION_LINK_OPTIONS} - ${CHECK_PROTOTYPE_DEFINITION_LIBS} - CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${CHECK_PROTOTYPE_DEFINITION_FLAGS} - "${CMAKE_SYMBOL_EXISTS_INCLUDES}" - "${_CPD_LINK_DIRECTORIES}" + ${_CPD_ADD_LINK_OPTIONS} + ${_CPD_ADD_LINK_LIBRARIES} + CMAKE_FLAGS + -DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS} + ${_CPD_EXTRA_CMAKE_ARGUMENTS} + "${_CPD_INCLUDE_DIRECTORIES}" + "${_CPD_LINK_DIRECTORIES}" ) - unset(_CPD_LINK_DIRECTORIES) if (${_VARIABLE}) set(${_VARIABLE} 1 CACHE INTERNAL "Have correct prototype for ${_FUNCTION}") @@ -165,5 +142,4 @@ function(check_prototype_definition _FUNCTION _PROTOTYPE _RETURN _HEADER _VARIAB set(${_VARIABLE} 0 CACHE INTERNAL "Have correct prototype for ${_FUNCTION}") endif () endif() - endfunction() diff --git a/Modules/CheckSymbolExists.cmake b/Modules/CheckSymbolExists.cmake index 46d1ab33f7..ab5a73b669 100644 --- a/Modules/CheckSymbolExists.cmake +++ b/Modules/CheckSymbolExists.cmake @@ -91,6 +91,7 @@ See Also #]=======================================================================] include_guard(GLOBAL) +include(Internal/CheckCommon) macro(CHECK_SYMBOL_EXISTS SYMBOL FILES VARIABLE) if(CMAKE_C_COMPILER_LOADED) @@ -134,32 +135,7 @@ endmacro() macro(__CHECK_SYMBOL_EXISTS_IMPL SOURCEFILE SYMBOL FILES VARIABLE) if(NOT DEFINED "${VARIABLE}" OR "x${${VARIABLE}}" STREQUAL "x${VARIABLE}") set(_CSE_SOURCE "/* */\n") - set(MACRO_CHECK_SYMBOL_EXISTS_FLAGS ${CMAKE_REQUIRED_FLAGS}) - if(CMAKE_REQUIRED_LINK_OPTIONS) - set(CHECK_SYMBOL_EXISTS_LINK_OPTIONS - LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS}) - else() - set(CHECK_SYMBOL_EXISTS_LINK_OPTIONS) - endif() - if(CMAKE_REQUIRED_LIBRARIES) - set(CHECK_SYMBOL_EXISTS_LIBS - LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) - else() - set(CHECK_SYMBOL_EXISTS_LIBS) - endif() - if(CMAKE_REQUIRED_INCLUDES) - set(CMAKE_SYMBOL_EXISTS_INCLUDES - "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}") - 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") @@ -187,20 +163,23 @@ int main(int argc, char** argv) }\n") unset(_CSE_CHECK_NON_MACRO) + cmake_check_common_init_args(_CSE) + if(NOT CMAKE_REQUIRED_QUIET) message(CHECK_START "Looking for ${SYMBOL}") endif() try_compile(${VARIABLE} SOURCE_FROM_VAR "${SOURCEFILE}" _CSE_SOURCE COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} - ${CHECK_SYMBOL_EXISTS_LINK_OPTIONS} - ${CHECK_SYMBOL_EXISTS_LIBS} + ${_CSE_ADD_LINK_OPTIONS} + ${_CSE_ADD_LINK_LIBRARIES} CMAKE_FLAGS - -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_SYMBOL_EXISTS_FLAGS} - "${CMAKE_SYMBOL_EXISTS_INCLUDES}" - "${_CSE_LINK_DIRECTORIES}" + -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH} + "${_CSE_INCLUDE_DIRECTORIES}" + "${_CSE_LINK_DIRECTORIES}" ) - unset(_CSE_LINK_DIRECTORIES) + cmake_check_common_cleanup(_CSE) + if(${VARIABLE}) if(NOT CMAKE_REQUIRED_QUIET) message(CHECK_PASS "found") diff --git a/Modules/CheckTypeSize.cmake b/Modules/CheckTypeSize.cmake index 1f5a622839..c0c9dbb319 100644 --- a/Modules/CheckTypeSize.cmake +++ b/Modules/CheckTypeSize.cmake @@ -282,6 +282,7 @@ include(CheckIncludeFile) include(CheckIncludeFileCXX) include_guard(GLOBAL) +include(Internal/CheckCommon) block(SCOPE_FOR POLICIES) cmake_policy(SET CMP0140 NEW) @@ -334,12 +335,7 @@ function(__check_type_size_impl type var result_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() + cmake_check_common_init_args(_CTS) # Perform the check. set(bin ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.bin) @@ -347,15 +343,14 @@ function(__check_type_size_impl type var result_var map builtin language) string(CONFIGURE "${src_content}" src_content @ONLY) try_compile(${result_var} SOURCE_FROM_VAR "${src}" src_content COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} - LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS} - LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} + ${_CTS_ADD_LINK_OPTIONS} + ${_CTS_ADD_LINK_LIBRARIES} CMAKE_FLAGS - "-DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS}" - "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}" + -DCOMPILE_DEFINITIONS:STRING=${CMAKE_REQUIRED_FLAGS} + "${_CTS_INCLUDE_DIRECTORIES}" "${_CTS_LINK_DIRECTORIES}" COPY_FILE ${bin} ) - unset(_CTS_LINK_DIRECTORIES) if(${result_var}) # The check compiled. Load information from the binary.