File: vtkSanitize.cmake

package info (click to toggle)
paraview 5.11.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 497,236 kB
  • sloc: cpp: 3,171,290; ansic: 1,315,072; python: 134,290; xml: 103,324; sql: 65,887; sh: 5,286; javascript: 4,901; yacc: 4,383; java: 3,977; perl: 2,363; lex: 1,909; f90: 1,255; objc: 143; makefile: 119; tcl: 59; pascal: 50; fortran: 29
file content (60 lines) | stat: -rw-r--r-- 2,006 bytes parent folder | download
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()