| # Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| # file LICENSE.rst or https://cmake.org/licensing for details. | |
| # Do NOT include this module directly into any of your code. It is meant as | |
| # a library for Check*CompilerFlag.cmake and Check*LinkerFlag.cma modules. | |
| # It's content may change in any way between releases. | |
| include_guard(GLOBAL) | |
| macro(CMAKE_CHECK_COMMON_INIT_COMPILE_FLAGS _PREFIX) | |
| set(${_PREFIX}_EXTRA_CMAKE_ARGUMENTS) | |
| string(REPLACE "\\;" "\\\\;" CMAKE_REQUIRED_FLAGS | |
| "${CMAKE_REQUIRED_FLAGS}") | |
| #[[ | |
| cmake_polify(GET CMP0999 ${_PREFIX}_CMP0999) | |
| if(${_PREFIX}_CMP0999 STREQUAL "NEW") | |
| # Join multiple list arguments into the space-separated string that we | |
| # want. This ensures that the entirety of the value gets passed as | |
| # compile arguments, which is what the user almost surely intended. | |
| # | |
| # FIXME(#27901): This needs a policy to be implemented. This will be | |
| # available in a future version of CMake. | |
| list(JOIN CMAKE_REQUIRED_FLAGS " " CMAKE_REQUIRED_FLAGS) | |
| else() | |
| #]] | |
| # If CMAKE_REQUIRED_FLAGS contains an unescaped semicolon, anything after | |
| # gets passed as flags to 'cmake' itself. This is probably not intended, | |
| # but we preserve it for compatibility. | |
| set(${_PREFIX}_EXTRA_CMAKE_ARGUMENTS "${CMAKE_REQUIRED_FLAGS}") | |
| list(POP_FRONT ${_PREFIX}_EXTRA_CMAKE_ARGUMENTS CMAKE_REQUIRED_FLAGS) | |
| if(NOT ${_PREFIX}_EXTRA_CMAKE_ARGUMENTS STREQUAL "") | |
| # cmake_policy(ISSUE_WARNING CMP0999) TODO | |
| # There are known instances of users accidentally passing '-W' arguments | |
| # intended for the compiler as arguments to CMake. Since CMake complains | |
| # about unknown '-W' arguments starting with CMake 4.4, we need to strip | |
| # these for compatibility. | |
| string(REPLACE "\\;" "\\\\;" ${_PREFIX}_EXTRA_CMAKE_ARGUMENTS | |
| "${${_PREFIX}_EXTRA_CMAKE_ARGUMENTS}") | |
| list(FILTER ${_PREFIX}_EXTRA_CMAKE_ARGUMENTS EXCLUDE REGEX "^-W") | |
| endif() | |
| #endif() | |
| endmacro() | |
| macro(CMAKE_CHECK_COMMON_INIT_INCLUDE_DIRECTORIES _PREFIX) | |
| if(CMAKE_REQUIRED_INCLUDES) | |
| if(${ARGC} GREATER 1) | |
| set(${_PREFIX}_INCLUDE_DIRECTORIES | |
| "-DINCLUDE_DIRECTORIES:STRING=${ARGN};${CMAKE_REQUIRED_INCLUDES}") | |
| else() | |
| set(${_PREFIX}_INCLUDE_DIRECTORIES | |
| "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}") | |
| endif() | |
| elseif(${ARGC} GREATER 1) | |
| set(${_PREFIX}_INCLUDE_DIRECTORIES | |
| "-DINCLUDE_DIRECTORIES:STRING=${ARGN}") | |
| else() | |
| set(${_PREFIX}_INCLUDE_DIRECTORIES) | |
| endif() | |
| endmacro() | |
| macro(CMAKE_CHECK_COMMON_INIT_LINK_OPTIONS _PREFIX) | |
| 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) | |
| 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() | |
| endmacro() | |
| macro(CMAKE_CHECK_COMMON_INIT_LINK_DIRECTORIES _PREFIX) | |
| if(CMAKE_REQUIRED_LINK_DIRECTORIES) | |
| if(${ARGC} GREATER 1) | |
| set(${_PREFIX}_LINK_DIRECTORIES | |
| "-DLINK_DIRECTORIES:STRING=${ARGN};${CMAKE_REQUIRED_LINK_DIRECTORIES}") | |
| else() | |
| set(${_PREFIX}_LINK_DIRECTORIES | |
| "-DLINK_DIRECTORIES:STRING=${CMAKE_REQUIRED_LINK_DIRECTORIES}") | |
| endif() | |
| elseif(${ARGC} GREATER 1) | |
| set(${_PREFIX}_LINK_DIRECTORIES | |
| "-DLINK_DIRECTORIES:STRING=${ARGN}") | |
| else() | |
| set(${_PREFIX}_LINK_DIRECTORIES) | |
| endif() | |
| endmacro() | |
| macro(CMAKE_CHECK_COMMON_INIT_COMPILE_ARGS _PREFIX) | |
| cmake_check_common_init_compile_flags(${_PREFIX}) | |
| cmake_check_common_init_include_directories(${_PREFIX}) | |
| endmacro() | |
| macro(CMAKE_CHECK_COMMON_INIT_LINK_ARGS _PREFIX) | |
| cmake_check_common_init_link_options(${_PREFIX}) | |
| cmake_check_common_init_link_libraries(${_PREFIX}) | |
| cmake_check_common_init_link_directories(${_PREFIX}) | |
| endmacro() | |
| macro(CMAKE_CHECK_COMMON_INIT_ARGS _PREFIX) | |
| cmake_check_common_init_compile_args(${_PREFIX}) | |
| cmake_check_common_init_link_args(${_PREFIX}) | |
| endmacro() | |
| macro(CMAKE_CHECK_COMMON_CLEANUP _PREFIX) | |
| unset(${_PREFIX}_ADD_LINK_OPTIONS) | |
| unset(${_PREFIX}_ADD_LINK_LIBRARIES) | |
| unset(${_PREFIX}_LINK_DIRECTORIES) | |
| unset(${_PREFIX}_INCLUDE_DIRECTORIES) | |
| unset(${_PREFIX}_EXTRA_CMAKE_ARGUMENTS) | |
| endmacro() |