blob: a39f8b3b6362ad652bc77953348bdcb011cf684e [file] [log] [blame]
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
TestCXXAcceptsFlag
------------------
.. deprecated:: 3.0
This module should no longer be used. It has been superseded by the
:module:`CheckCXXCompilerFlag` module. As of CMake 3.19, the
:module:`CheckCompilerFlag` module is also available for checking flags across
multiple languages.
This module provides a macro to test whether the C++ (CXX) compiler supports
specific flags.
Macros
^^^^^^
.. command:: check_cxx_accepts_flag
Checks whether the CXX compiler accepts the specified flags:
.. code-block:: cmake
check_cxx_accepts_flag(<flags> <result-variable>)
``<flags>``
One or more compiler flags to test. For multiple flags, provide them as a
space-separated string.
``<result-variable>``
Name of an internal cache variable that stores the result. It is set to
boolean true if the compiler accepts the flags and false otherwise.
Examples
^^^^^^^^
Checking if the C++ compiler supports specific flags:
.. code-block:: cmake
include(TestCXXAcceptsFlag)
check_cxx_accepts_flag("-fno-common -fstack-clash-protection" HAVE_FLAGS)
Migrating to the :module:`CheckCompilerFlag` module:
.. code-block:: cmake
include(CheckCompilerFlag)
check_compiler_flag(CXX "-fno-common;-fstack-clash-protection" HAVE_FLAGS)
#]=======================================================================]
macro(CHECK_CXX_ACCEPTS_FLAG FLAGS VARIABLE)
if(NOT DEFINED ${VARIABLE})
message(CHECK_START "Checking to see if CXX compiler accepts flag ${FLAGS}")
try_compile(${VARIABLE}
SOURCES ${CMAKE_ROOT}/Modules/DummyCXXFile.cxx
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${FLAGS}
)
if(${VARIABLE})
message(CHECK_PASS "yes")
else()
message(CHECK_FAIL "no")
endif()
endif()
endmacro()