| # 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 OR ${ARGC} GREATER 1) |
| set(${_PREFIX}_ADD_LINK_OPTIONS |
| LINK_OPTIONS ${ARGN} ${CMAKE_REQUIRED_LINK_OPTIONS}) |
| else() |
| set(${_PREFIX}_ADD_LINK_OPTIONS) |
| endif() |
| endmacro() |
| |
| macro(CMAKE_CHECK_COMMON_INIT_LINK_LIBRARIES _PREFIX) |
| if(CMAKE_REQUIRED_LIBRARIES OR ${ARGC} GREATER 1) |
| set(${_PREFIX}_ADD_LINK_LIBRARIES |
| LINK_LIBRARIES ${ARGN} ${CMAKE_REQUIRED_LIBRARIES}) |
| 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() |