Check ASan support for all enabled compilers.

Instead of fix checking for C and CXX compilers, all enabled languages will be
tested now.
This commit is contained in:
Alexander Haase 2016-01-28 17:31:31 +01:00
parent e39082050c
commit c29aa33f11

View File

@ -41,7 +41,9 @@ set(CMAKE_REQUIRED_QUIET_SAVE ${CMAKE_REQUIRED_QUIET})
set(CMAKE_REQUIRED_QUIET ${ASan_FIND_QUIETLY}) set(CMAKE_REQUIRED_QUIET ${ASan_FIND_QUIETLY})
set(_ASAN_REQUIRED_VARS) set(_ASAN_REQUIRED_VARS)
foreach (LANG C CXX)
get_property(ENABLED_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
foreach (LANG ${ENABLED_LANGUAGES})
if (CMAKE_${LANG}_COMPILER_LOADED) if (CMAKE_${LANG}_COMPILER_LOADED)
list(APPEND _ASAN_REQUIRED_VARS ASAN_${LANG}_FLAGS) list(APPEND _ASAN_REQUIRED_VARS ASAN_${LANG}_FLAGS)
@ -63,6 +65,10 @@ foreach (LANG C CXX)
elseif (${LANG} STREQUAL "CXX") elseif (${LANG} STREQUAL "CXX")
include(CheckCXXCompilerFlag) include(CheckCXXCompilerFlag)
check_cxx_compiler_flag("${FLAG}" ASAN_FLAG_DETECTED) check_cxx_compiler_flag("${FLAG}" ASAN_FLAG_DETECTED)
elseif (${LANG} STREQUAL "Fortran")
include(CheckFortranCompilerFlag)
check_fortran_compiler_flag("${FLAG}" ASAN_FLAG_DETECTED)
endif() endif()
if (ASAN_FLAG_DETECTED) if (ASAN_FLAG_DETECTED)
@ -84,25 +90,26 @@ if (_ASAN_REQUIRED_VARS)
mark_as_advanced(${_ASAN_REQUIRED_VARS}) mark_as_advanced(${_ASAN_REQUIRED_VARS})
unset(_ASAN_REQUIRED_VARS) unset(_ASAN_REQUIRED_VARS)
else() else()
message(SEND_ERROR "FindASan requires C or CXX language to be enabled") message(SEND_ERROR "FindASan requires C, CXX or Fortran language to be enabled")
endif() endif()
# add build target ASan # add build target ASan
if (ASan_FOUND) if (ASan_FOUND)
set(CMAKE_C_FLAGS_ASAN "${ASAN_C_FLAGS}" CACHE get_property(ENABLED_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
STRING "Flags used by the C compiler during ASan builds.") foreach (LANG ${ENABLED_LANGUAGES})
set(CMAKE_CXX_FLAGS_ASAN "${ASAN_CXX_FLAGS}" CACHE set(CMAKE_${LANG}_FLAGS_ASAN "${ASAN_${LANG}_FLAGS}" CACHE
STRING "Flags used by the C++ compiler during ASan builds.") STRING "Flags used by the ${LANG} compiler during ASan builds.")
mark_as_advanced(CMAKE_${LANG}_FLAGS_ASAN)
endforeach ()
set(CMAKE_EXE_LINKER_FLAGS_ASAN "${ASAN_C_FLAGS}" CACHE set(CMAKE_EXE_LINKER_FLAGS_ASAN "${ASAN_C_FLAGS}" CACHE
STRING "Flags used for linking binaries during ASan builds.") STRING "Flags used for linking binaries during ASan builds.")
set(CMAKE_SHARED_LINKER_FLAGS_ASAN "${ASAN_C_FLAGS}" CACHE set(CMAKE_SHARED_LINKER_FLAGS_ASAN "${ASAN_C_FLAGS}" CACHE
STRING "Flags used by the shared libraries linker during ASan builds.") STRING "Flags used by the shared libraries linker during ASan builds.")
set(CMAKE_MODULE_LINKER_FLAGS_ASAN "${ASAN_C_FLAGS}" CACHE set(CMAKE_MODULE_LINKER_FLAGS_ASAN "${ASAN_C_FLAGS}" CACHE
STRING "Flags used by the module libraries linker during ASan builds.") STRING "Flags used by the module libraries linker during ASan builds.")
mark_as_advanced(CMAKE_C_FLAGS_ASAN mark_as_advanced(CMAKE_EXE_LINKER_FLAGS_ASAN
CMAKE_CXX_FLAGS_ASAN
CMAKE_EXE_LINKER_FLAGS_ASAN
CMAKE_SHARED_LINKER_FLAGS_ASAN CMAKE_SHARED_LINKER_FLAGS_ASAN
CMAKE_MODULE_LINKER_FLAGS_ASAN) CMAKE_MODULE_LINKER_FLAGS_ASAN)
endif () endif ()