Check*: Restore more toleration of ;-W... in CMAKE_REQUIRED_FLAGS

Commit 5abaf65154 (Check*: Restore toleration of `;-W...` in
CMAKE_REQUIRED_FLAGS, 2026-06-24, v4.4.0-rc3~2^2) introduced logic to
prevent `-W*` arguments in `CMAKE_REQUIRED_FLAGS` from being passed as
CMake arguments in the `check[_<lang>]_source_{compiles,runs}` family of
utilities. However, several other related modules are also affected.
Update those to also use the new logic, and to have more uniform
implementations, making use of the refactoring from the previous commit.

Fixes: #27961
This commit is contained in:
Matthew Woehlke
2026-07-21 15:21:42 -04:00
committed by Brad King
parent 7644d557df
commit a72e241200
8 changed files with 91 additions and 214 deletions
+14 -33
View File
@@ -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}")
+12 -27
View File
@@ -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})
+12 -27
View File
@@ -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})
+13 -27
View File
@@ -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")
+14 -24
View File
@@ -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)
+10 -34
View File
@@ -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()
+10 -31
View File
@@ -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")
+6 -11
View File
@@ -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.