if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16) message(FATAL_ERROR "Clang 16+ required for building clio") endif() set(is_clang TRUE) elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15) message(FATAL_ERROR "AppleClang 15+ required for building clio") endif() set(is_appleclang TRUE) elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12) message(FATAL_ERROR "GCC 12+ required for building clio") endif() set(is_gcc TRUE) else() message( FATAL_ERROR "Supported compilers: AppleClang 15+, Clang 16+, GCC 12+" ) endif() if(san) string(TOLOWER ${san} san) set(SAN_FLAG "-fsanitize=${san}") set(SAN_LIB "") if(is_gcc) if(san STREQUAL "address") set(SAN_LIB "asan") elseif(san STREQUAL "thread") set(SAN_LIB "tsan") elseif(san STREQUAL "memory") set(SAN_LIB "msan") elseif(san STREQUAL "undefined") set(SAN_LIB "ubsan") endif() endif() set(_saved_CRL ${CMAKE_REQUIRED_LIBRARIES}) set(CMAKE_REQUIRED_LIBRARIES "${SAN_FLAG};${SAN_LIB}") check_cxx_compiler_flag(${SAN_FLAG} COMPILER_SUPPORTS_SAN) set(CMAKE_REQUIRED_LIBRARIES ${_saved_CRL}) if(NOT COMPILER_SUPPORTS_SAN) message( FATAL_ERROR "${san} sanitizer does not seem to be supported by your compiler" ) endif() endif()