File: vtkSMPSelection.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 (143 lines) | stat: -rw-r--r-- 4,957 bytes parent folder | download | duplicates (6)
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
set(VTK_SMP_IMPLEMENTATION_TYPE "Sequential"
  CACHE STRING "Which multi-threaded parallelism implementation to use. Options are Sequential, STDThread, OpenMP or TBB")
set_property(CACHE VTK_SMP_IMPLEMENTATION_TYPE
  PROPERTY
    STRINGS Sequential OpenMP TBB STDThread)

if (NOT (VTK_SMP_IMPLEMENTATION_TYPE STREQUAL "OpenMP" OR
         VTK_SMP_IMPLEMENTATION_TYPE STREQUAL "TBB" OR
         VTK_SMP_IMPLEMENTATION_TYPE STREQUAL "Sequential"))
  set_property(CACHE VTK_SMP_IMPLEMENTATION_TYPE
    PROPERTY
      VALUE "STDThread")
endif ()

option(VTK_SMP_ENABLE_SEQUENTIAL "Enable Sequential backend" ON)
option(VTK_SMP_ENABLE_STDTHREAD "Enable STDThread backend" ON)

# Force option to be ON if VTK_SMP_IMPLEMENTATION_TYPE equal to the backend otherwise it's OFF by default
cmake_dependent_option(VTK_SMP_ENABLE_TBB "Enable TBB backend" OFF
  "NOT VTK_SMP_IMPLEMENTATION_TYPE STREQUAL TBB" ON)
cmake_dependent_option(VTK_SMP_ENABLE_OPENMP "Enable OpenMP backend" OFF
  "NOT VTK_SMP_IMPLEMENTATION_TYPE STREQUAL OpenMP" ON)

mark_as_advanced(
  VTK_SMP_ENABLE_SEQUENTIAL
  VTK_SMP_ENABLE_STDTHREAD
  VTK_SMP_ENABLE_TBB
  VTK_SMP_ENABLE_OPENMP)

set(vtk_smp_default_name)
string(TOUPPER "${VTK_SMP_IMPLEMENTATION_TYPE}" vtk_smp_default_name)
if (NOT VTK_SMP_ENABLE_${vtk_smp_default_name})
  message(FATAL_ERROR
    "VTK_SMP_ENABLE_${vtk_smp_default_name} must be enabled as "
    "VTK_SMP_IMPLEMENTATION_TYPE is set to ${VTK_SMP_IMPLEMENTATION_TYPE}.")
endif()

set(vtk_smp_defines)
set(vtk_smp_use_default_atomics ON)

set(vtk_smp_backends)

if (VTK_SMP_ENABLE_TBB)
  vtk_module_find_package(PACKAGE TBB)
  list(APPEND vtk_smp_libraries
    TBB::tbb)
  set(vtk_smp_enable_tbb 1)
  list(APPEND vtk_smp_backends "TBB")

  set(vtk_smp_use_default_atomics OFF)
  set(vtk_smp_implementation_dir SMP/TBB)
  list(APPEND vtk_smp_sources
    "${vtk_smp_implementation_dir}/vtkSMPToolsImpl.cxx")
  list(APPEND vtk_smp_nowrap_headers
    "${vtk_smp_implementation_dir}/vtkSMPThreadLocalImpl.h")
  list(APPEND vtk_smp_templates
    "${vtk_smp_implementation_dir}/vtkSMPToolsImpl.txx")
endif()

if (VTK_SMP_ENABLE_OPENMP)
  vtk_module_find_package(PACKAGE OpenMP)
  list(APPEND vtk_smp_libraries
    OpenMP::OpenMP_CXX)
  set(vtk_smp_enable_openmp 1)
  list(APPEND vtk_smp_backends "OpenMP")

  set(vtk_smp_implementation_dir SMP/OpenMP)
  list(APPEND vtk_smp_sources
    "${vtk_smp_implementation_dir}/vtkSMPToolsImpl.cxx"
    "${vtk_smp_implementation_dir}/vtkSMPThreadLocalBackend.cxx")
  list(APPEND vtk_smp_nowrap_headers
    "${vtk_smp_implementation_dir}/vtkSMPThreadLocalImpl.h"
    "${vtk_smp_implementation_dir}/vtkSMPThreadLocalBackend.h")
  list(APPEND vtk_smp_templates
    "${vtk_smp_implementation_dir}/vtkSMPToolsImpl.txx")

  if (OpenMP_CXX_SPEC_DATE AND NOT "${OpenMP_CXX_SPEC_DATE}" LESS "201107")
    set(vtk_smp_use_default_atomics OFF)
  else()
    message(WARNING
      "Required OpenMP version (3.1) for atomics not detected. Using default "
      "atomics implementation.")
  endif()
endif()

if (VTK_SMP_ENABLE_STDTHREAD)
  set(vtk_smp_enable_stdthread 1)
  set(vtk_smp_implementation_dir SMP/STDThread)
  list(APPEND vtk_smp_backends "STDThread")

  list(APPEND vtk_smp_sources
    "${vtk_smp_implementation_dir}/vtkSMPToolsImpl.cxx"
    "${vtk_smp_implementation_dir}/vtkSMPThreadLocalBackend.cxx"
    "${vtk_smp_implementation_dir}/vtkSMPThreadPool.cxx")
  list(APPEND vtk_smp_nowrap_headers
    "${vtk_smp_implementation_dir}/vtkSMPThreadLocalImpl.h"
    "${vtk_smp_implementation_dir}/vtkSMPThreadLocalBackend.h"
    "${vtk_smp_implementation_dir}/vtkSMPThreadPool.h")
  list(APPEND vtk_smp_templates
    "${vtk_smp_implementation_dir}/vtkSMPToolsImpl.txx")
endif()

if (VTK_SMP_ENABLE_SEQUENTIAL)
  set(vtk_smp_enable_sequential 1)
  set(vtk_smp_implementation_dir SMP/Sequential)
  list(APPEND vtk_smp_backends "Sequential")

  list(APPEND vtk_smp_sources
    "${vtk_smp_implementation_dir}/vtkSMPToolsImpl.cxx")
  list(APPEND vtk_smp_nowrap_headers
    "${vtk_smp_implementation_dir}/vtkSMPThreadLocalImpl.h")
  list(APPEND vtk_smp_templates
    "${vtk_smp_implementation_dir}/vtkSMPToolsImpl.txx")
endif()

set_property(GLOBAL
  PROPERTY
    _vtk_smp_backends "${vtk_smp_backends}")

if (vtk_smp_use_default_atomics)
  include(CheckSymbolExists)

  include("${CMAKE_CURRENT_SOURCE_DIR}/vtkTestBuiltins.cmake")

  set(vtk_atomics_default_impl_dir "${CMAKE_CURRENT_SOURCE_DIR}/SMP/Sequential")
endif()

set(vtk_smp_common_dir SMP/Common)
list(APPEND vtk_smp_sources
  "${vtk_smp_common_dir}/vtkSMPToolsAPI.cxx")
list(APPEND vtk_smp_nowrap_headers
  "${vtk_smp_common_dir}/vtkSMPThreadLocalAPI.h"
  "${vtk_smp_common_dir}/vtkSMPThreadLocalImplAbstract.h"
  "${vtk_smp_common_dir}/vtkSMPToolsAPI.h"
  "${vtk_smp_common_dir}/vtkSMPToolsImpl.h"
  "${vtk_smp_common_dir}/vtkSMPToolsInternal.h")

list(APPEND vtk_smp_sources
  vtkSMPTools.cxx)
list(APPEND vtk_smp_headers
  vtkSMPTools.h
  vtkSMPThreadLocal.h
  vtkSMPThreadLocalObject.h)