-
Notifications
You must be signed in to change notification settings - Fork 58
/
SuperBuildPrerequisites.cmake
118 lines (108 loc) · 3.9 KB
/
SuperBuildPrerequisites.cmake
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
if(DEFINED slicersources_SOURCE_DIR AND NOT DEFINED Slicer_SOURCE_DIR)
# Explicitly setting "Slicer_SOURCE_DIR" when only "slicersources_SOURCE_DIR"
# is defined is required to successfully complete configuration in an empty
# build directory
#
# Indeed, in that case, Slicer sources have been downloaded by they have not been
# added using "add_subdirectory()" and the variable "Slicer_SOURCE_DIR" is not yet in
# in the CACHE.
set(Slicer_SOURCE_DIR ${slicersources_SOURCE_DIR})
endif()
if(NOT DEFINED SlicerVirtualReality_HAS_OPENVR_SUPPORT)
message(FATAL_ERROR "SlicerVirtualReality_HAS_OPENVR_SUPPORT is not set")
endif()
if(NOT DEFINED SlicerVirtualReality_HAS_OPENXR_SUPPORT)
message(FATAL_ERROR "SlicerVirtualReality_HAS_OPENXR_SUPPORT is not set")
endif()
if(NOT DEFINED SlicerVirtualReality_HAS_OPENXRREMOTING_SUPPORT)
message(FATAL_ERROR "SlicerVirtualReality_HAS_OPENXRREMOTING_SUPPORT is not set")
endif()
# Set list of dependencies to ensure the custom application bundling this
# extension does NOT automatically collect the project list and attempt to
# build external projects associated with VTK modules enabled below.
if(DEFINED Slicer_SOURCE_DIR)
# Extension is bundled in a custom application
set(SlicerVirtualReality_EXTERNAL_PROJECT_DEPENDENCIES "")
if(SlicerVirtualReality_HAS_OPENVR_SUPPORT)
list(APPEND SlicerVirtualReality_EXTERNAL_PROJECT_DEPENDENCIES
OpenVR
)
endif()
if(SlicerVirtualReality_HAS_OPENXR_SUPPORT)
list(APPEND SlicerVirtualReality_EXTERNAL_PROJECT_DEPENDENCIES
OpenXR-SDK
)
endif()
else()
# Extension is build standalone against Slicer itself built
# against VTK without the relevant modules enabled.
set(SlicerVirtualReality_EXTERNAL_PROJECT_DEPENDENCIES
vtkRenderingVR
)
if(SlicerVirtualReality_HAS_OPENVR_SUPPORT)
list(APPEND SlicerVirtualReality_EXTERNAL_PROJECT_DEPENDENCIES
vtkRenderingOpenVR
)
endif()
if(SlicerVirtualReality_HAS_OPENXR_SUPPORT)
list(APPEND SlicerVirtualReality_EXTERNAL_PROJECT_DEPENDENCIES
vtkRenderingOpenXR
)
endif()
if(SlicerVirtualReality_HAS_OPENXRREMOTING_SUPPORT)
list(APPEND SlicerVirtualReality_EXTERNAL_PROJECT_DEPENDENCIES
vtkRenderingOpenXRRemoting
)
endif()
endif()
message(STATUS "SlicerVirtualReality_EXTERNAL_PROJECT_DEPENDENCIES:${SlicerVirtualReality_EXTERNAL_PROJECT_DEPENDENCIES}")
if(NOT DEFINED Slicer_SOURCE_DIR)
# Extension is built standalone
# VTKExternalModule is required to configure these external projects:
# - vtkRenderingVR
# - vtkRenderingOpenVR
# - vtkRenderingOpenXR
# - vtkRenderingOpenXRRemoting
include(${SlicerVirtualReality_SOURCE_DIR}/FetchVTKExternalModule.cmake)
else()
# Extension is bundled in a custom application
# Additional external project dependencies
if(SlicerVirtualReality_HAS_OPENVR_SUPPORT)
ExternalProject_Add_Dependencies(VTK
DEPENDS
OpenVR
)
endif()
if(SlicerVirtualReality_HAS_OPENXR_SUPPORT)
ExternalProject_Add_Dependencies(VTK
DEPENDS
OpenXR-SDK
)
endif()
# Additional external project options
set(VTK_MODULE_ENABLE_VTK_RenderingVR YES)
if(SlicerVirtualReality_HAS_OPENVR_SUPPORT)
set(VTK_MODULE_ENABLE_VTK_RenderingOpenVR YES)
else()
set(VTK_MODULE_ENABLE_VTK_RenderingOpenVR NO)
endif()
if(SlicerVirtualReality_HAS_OPENXR_SUPPORT)
set(VTK_MODULE_ENABLE_VTK_RenderingOpenXR YES)
else()
set(VTK_MODULE_ENABLE_VTK_RenderingOpenXR NO)
endif()
if(SlicerVirtualReality_HAS_OPENXRREMOTING_SUPPORT)
set(VTK_MODULE_ENABLE_VTK_RenderingOpenXRRemoting YES)
else()
set(VTK_MODULE_ENABLE_VTK_RenderingOpenXRRemoting NO)
endif()
mark_as_superbuild(
VARS
VTK_MODULE_ENABLE_VTK_RenderingVR:STRING
VTK_MODULE_ENABLE_VTK_RenderingOpenVR:STRING
VTK_MODULE_ENABLE_VTK_RenderingOpenXR:STRING
VTK_MODULE_ENABLE_VTK_RenderingOpenXRRemoting:STRING
PROJECTS
VTK
)
endif()