1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
#=========================================================================
#
# This software is distributed WITHOUT ANY WARRANTY; without even
# the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the above copyright notice for more information.
#
#=========================================================================
# This code has been adapted from smtk (https://gitlab.kitware.com/cmb/smtk)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR
CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
set(CMAKE_COMPILER_IS_CLANGXX 1)
endif()
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX)
#Add option for enabling sanitizers
option(VTK_ENABLE_SANITIZER "Build with sanitizer support." OFF)
mark_as_advanced(VTK_ENABLE_SANITIZER)
if(VTK_ENABLE_SANITIZER)
set(VTK_SANITIZER "address"
CACHE STRING "The sanitizer to use")
mark_as_advanced(VTK_SANITIZER)
if (UNIX AND NOT APPLE)
# Tests using external binaries need additional help to load the ASan
# runtime when in use.
if (VTK_SANITIZER STREQUAL "address" OR
VTK_SANITIZER STREQUAL "undefined")
find_library(VTK_ASAN_LIBRARY
NAMES libasan.so.6 libasan.so.5
DOC "ASan library")
mark_as_advanced(VTK_ASAN_LIBRARY)
set(_vtk_testing_ld_preload
"${VTK_ASAN_LIBRARY}")
endif ()
endif ()
set(vtk_sanitize_args
"-fsanitize=${VTK_SANITIZER}")
if (CMAKE_COMPILER_IS_CLANGXX)
configure_file(
"${VTK_SOURCE_DIR}/Utilities/DynamicAnalysis/sanitizer_ignore.txt.in"
"${VTK_BINARY_DIR}/sanitizer_ignore.txt"
@ONLY)
list(APPEND vtk_sanitize_args
"SHELL:-fsanitize-blacklist=${VTK_BINARY_DIR}/sanitizer_ignore.txt")
endif ()
target_compile_options(vtkbuild
INTERFACE
"$<BUILD_INTERFACE:${vtk_sanitize_args}>")
target_link_options(vtkbuild
INTERFACE
"$<BUILD_INTERFACE:${vtk_sanitize_args}>")
endif()
endif()
|