cmake/utils.cmake (42 lines of code) (raw):

macro(check_asan _RESULT) include(CheckCXXSourceRuns) set(CMAKE_REQUIRED_FLAGS "-fsanitize=address") check_cxx_source_runs( [====[ int main() { return 0; } ]====] ${_RESULT} ) unset(CMAKE_REQUIRED_FLAGS) endmacro() macro(check_lld _RESULT) include(CheckCXXSourceRuns) set(CMAKE_REQUIRED_FLAGS "-fuse-ld=lld") check_cxx_source_runs( [====[ int main() { return 0; } ]====] ${_RESULT} ) unset(CMAKE_REQUIRED_FLAGS) endmacro() macro(check_tsan _RESULT) include(CheckCXXSourceRuns) set(CMAKE_REQUIRED_FLAGS "-fsanitize=thread") check_cxx_source_runs( [====[ int main() { return 0; } ]====] ${_RESULT} ) unset(CMAKE_REQUIRED_FLAGS) endmacro()