mirror of
https://github.com/Z3Prover/z3
synced 2025-04-06 17:44:08 +00:00
25 lines
1.1 KiB
CMake
25 lines
1.1 KiB
CMake
include(CheckCXXCompilerFlag)
|
|
include(CMakeParseArguments)
|
|
|
|
function(z3_add_cxx_flag flag)
|
|
CMAKE_PARSE_ARGUMENTS(z3_add_flag "REQUIRED" "" "" ${ARGN})
|
|
string(REPLACE "-" "_" SANITIZED_FLAG_NAME "${flag}")
|
|
string(REPLACE "/" "_" SANITIZED_FLAG_NAME "${SANITIZED_FLAG_NAME}")
|
|
string(REPLACE "=" "_" SANITIZED_FLAG_NAME "${SANITIZED_FLAG_NAME}")
|
|
string(REPLACE " " "_" SANITIZED_FLAG_NAME "${SANITIZED_FLAG_NAME}")
|
|
string(REPLACE ":" "_" SANITIZED_FLAG_NAME "${SANITIZED_FLAG_NAME}")
|
|
string(REPLACE "+" "_" SANITIZED_FLAG_NAME "${SANITIZED_FLAG_NAME}")
|
|
unset(HAS_${SANITIZED_FLAG_NAME})
|
|
CHECK_CXX_COMPILER_FLAG("${flag}" HAS_${SANITIZED_FLAG_NAME})
|
|
if (z3_add_flag_REQUIRED AND NOT HAS_${SANITIZED_FLAG_NAME})
|
|
message(FATAL_ERROR "The flag \"${flag}\" is required but your C++ compiler doesn't support it")
|
|
endif()
|
|
if (HAS_${SANITIZED_FLAG_NAME})
|
|
message(STATUS "C++ compiler supports ${flag}")
|
|
list(APPEND Z3_COMPONENT_CXX_FLAGS "${flag}")
|
|
set(Z3_COMPONENT_CXX_FLAGS "${Z3_COMPONENT_CXX_FLAGS}" PARENT_SCOPE)
|
|
else()
|
|
message(STATUS "C++ compiler does not support ${flag}")
|
|
endif()
|
|
endfunction()
|