diff --git a/Modules/Internal/CheckCommon.cmake b/Modules/Internal/CheckCommon.cmake index 1de98e7610..df9b3a1695 100644 --- a/Modules/Internal/CheckCommon.cmake +++ b/Modules/Internal/CheckCommon.cmake @@ -60,18 +60,22 @@ macro(CMAKE_CHECK_COMMON_INIT_INCLUDE_DIRECTORIES _PREFIX) endmacro() macro(CMAKE_CHECK_COMMON_INIT_LINK_OPTIONS _PREFIX) - if(CMAKE_REQUIRED_LINK_OPTIONS OR ${ARGC} GREATER 1) + if(CMAKE_REQUIRED_LINK_OPTIONS) set(${_PREFIX}_ADD_LINK_OPTIONS LINK_OPTIONS ${ARGN} ${CMAKE_REQUIRED_LINK_OPTIONS}) + elseif(${ARGC} GREATER 1) + set(${_PREFIX}_ADD_LINK_OPTIONS LINK_OPTIONS ${ARGN}) else() set(${_PREFIX}_ADD_LINK_OPTIONS) endif() endmacro() macro(CMAKE_CHECK_COMMON_INIT_LINK_LIBRARIES _PREFIX) - if(CMAKE_REQUIRED_LIBRARIES OR ${ARGC} GREATER 1) + if(CMAKE_REQUIRED_LIBRARIES) set(${_PREFIX}_ADD_LINK_LIBRARIES LINK_LIBRARIES ${ARGN} ${CMAKE_REQUIRED_LIBRARIES}) + elseif(${ARGC} GREATER 1) + set(${_PREFIX}_ADD_LINK_LIBRARIES LINK_LIBRARIES ${ARGN}) else() set(${_PREFIX}_ADD_LINK_LIBRARIES) endif() diff --git a/Tests/RunCMake/CheckModules/CheckRequiredFlags.cmake b/Tests/RunCMake/CheckModules/CheckRequiredFlags.cmake index c2164ea4bd..76f1f99b8c 100644 --- a/Tests/RunCMake/CheckModules/CheckRequiredFlags.cmake +++ b/Tests/RunCMake/CheckModules/CheckRequiredFlags.cmake @@ -15,30 +15,42 @@ include(CheckLibraryExists) include(CheckPrototypeDefinition) include(CheckTypeSize) -check_function_exists(required_flag_function CHECK_FUNCTION_EXISTS_RESULT) -check_include_file(CheckRequiredFlags.h CHECK_INCLUDE_FILE_RESULT) -check_include_file_cxx(CheckRequiredFlags.h CHECK_INCLUDE_FILE_CXX_RESULT) -check_include_files("stddef.h;CheckRequiredFlags.h" CHECK_INCLUDE_FILES_RESULT) -check_library_exists("" required_flag_library "" CHECK_LIBRARY_EXISTS_RESULT) -check_prototype_definition( - required_flag_prototype - "int required_flag_prototype(int value)" - "value" - "CheckRequiredFlags.h" - CHECK_PROTOTYPE_DEFINITION_RESULT - ) -check_type_size(required_flag_type CHECK_TYPE_SIZE_RESULT) - -foreach(result IN ITEMS - CHECK_FUNCTION_EXISTS_RESULT - CHECK_INCLUDE_FILE_RESULT - CHECK_INCLUDE_FILE_CXX_RESULT - CHECK_INCLUDE_FILES_RESULT - CHECK_LIBRARY_EXISTS_RESULT - CHECK_PROTOTYPE_DEFINITION_RESULT - CHECK_TYPE_SIZE_RESULT - ) - if(NOT ${result}) - message(SEND_ERROR "${result} did not honor CMAKE_REQUIRED_FLAGS") +function(run_tests) + if(${ARGC} GREATER 1) + set(${ARGN}) endif() -endforeach() + + check_function_exists(required_flag_function CHECK_FUNCTION_EXISTS_RESULT) + check_include_file(CheckRequiredFlags.h CHECK_INCLUDE_FILE_RESULT) + check_include_file_cxx(CheckRequiredFlags.h CHECK_INCLUDE_FILE_CXX_RESULT) + check_include_files("stddef.h;CheckRequiredFlags.h" CHECK_INCLUDE_FILES_RESULT) + check_library_exists("" required_flag_library "" CHECK_LIBRARY_EXISTS_RESULT) + check_prototype_definition( + required_flag_prototype + "int required_flag_prototype(int value)" + "value" + "CheckRequiredFlags.h" + CHECK_PROTOTYPE_DEFINITION_RESULT + ) + check_type_size(required_flag_type CHECK_TYPE_SIZE_RESULT) + + foreach(result IN ITEMS + CHECK_FUNCTION_EXISTS_RESULT + CHECK_INCLUDE_FILE_RESULT + CHECK_INCLUDE_FILE_CXX_RESULT + CHECK_INCLUDE_FILES_RESULT + CHECK_LIBRARY_EXISTS_RESULT + CHECK_PROTOTYPE_DEFINITION_RESULT + CHECK_TYPE_SIZE_RESULT + ) + if(NOT ${result}) + message(SEND_ERROR "${result} did not honor CMAKE_REQUIRED_FLAGS") + endif() + unset(CACHE{${result}}) + endforeach() + unset(CACHE{HAVE_CHECK_TYPE_SIZE_RESULT}) +endfunction() + +run_tests() +run_tests(CMAKE_REQUIRED_LINK_OPTIONS REQUIRED-NOTFOUND) +run_tests(CMAKE_REQUIRED_LIBRARIES REQUIRED-NOTFOUND)