mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-25 04:09:36 +03:00
Merge topic 'fix-check-modules-again' into release-4.4
3209535fb3 Check*: Restore toleration of false-like requirements
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !12387
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user