Salome HOME
c6b786d711ede6d8e9fd9740023e0d8d4a8c35a6
[tools/solverlab.git] / CDMATH / cmake_files / FindParaView.cmake
1 #[==[.md
2 # paraview-config.cmake
3
4 This file is used by CMake when finding ParaView.
5
6 The following variables are provided by this module:
7
8   * `ParaView_VERSION`: The version of ParaView found.
9   * `ParaView_PREFIX_PATH`: Install prefix for ParaView.
10   * `PARAVIEW_USE_QT`: If ParaView's Qt GUI is available.
11   * `PARAVIEW_USE_MPI`: If ParaView is built with MPI support.
12   * `PARAVIEW_USE_PYTHON`: If ParaView is built with Python support.
13   * `PARAVIEW_PYTHONPATH`: Where ParaView's Python modules live under the
14     install prefix. Unset if Python is not available.
15   * `PARAVIEW_PLUGIN_SUBDIR`: The subdirectory under the library directory for
16     plugins.
17   * `ParaView_CLIENT_XML_FILES`: XML files for client applications to use to
18     reproduce ParaView's menu items. Only provided if `PARAVIEW_USE_QT`
19     is set.
20   * `ParaView_LIBRARIES`: The list of modules specified by `COMPONENTS` and
21     `OPTIONAL_COMPONENTS`. This may be used in `MODULES` arguments in the API
22     (e.g., `vtk_module_autoinit`). All modules are also targets and may be
23     linked to using `target_link_libraries`.
24 #]==]
25
26 set(${CMAKE_FIND_PACKAGE_NAME}_CMAKE_MODULE_PATH_save "${CMAKE_MODULE_PATH}")
27 list(INSERT CMAKE_MODULE_PATH 0
28   "${CMAKE_CURRENT_LIST_DIR}")
29
30 set("${CMAKE_FIND_PACKAGE_NAME}_CMAKE_PREFIX_PATH_save" "${CMAKE_PREFIX_PATH}")
31 include("${CMAKE_CURRENT_LIST_DIR}/paraview-prefix.cmake")
32 set("${CMAKE_FIND_PACKAGE_NAME}_PREFIX_PATH"
33   "${_vtk_module_import_prefix}")
34 unset(_vtk_module_import_prefix)
35 list(INSERT CMAKE_PREFIX_PATH 0
36   "${${CMAKE_FIND_PACKAGE_NAME}_PREFIX_PATH}")
37
38 set("${CMAKE_FIND_PACKAGE_NAME}_VERSION" "@PARAVIEW_VERSION_FULL@")
39
40 unset("${CMAKE_FIND_PACKAGE_NAME}_FOUND")
41
42 set(_paraview_use_external_vtk "@PARAVIEW_USE_EXTERNAL_VTK@")
43 set(_paraview_find_package_args)
44 if (NOT _paraview_use_external_vtk)
45   list(APPEND _paraview_find_package_args
46     PATHS "${CMAKE_CURRENT_LIST_DIR}/vtk"
47     NO_DEFAULT_PATH)
48 endif ()
49 if (${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
50   list(APPEND _paraview_find_package_args
51     QUIET)
52 endif ()
53 find_package(VTK REQUIRED
54   ${_paraview_find_package_args})
55 if (NOT VTK_FOUND)
56   set("${CMAKE_FIND_PACKAGE_NAME}_FOUND" 0)
57 endif ()
58 unset(_paraview_find_package_args)
59 unset(_paraview_use_external_vtk)
60
61 set(PARAVIEW_USE_QT "@PARAVIEW_USE_QT@")
62 set(PARAVIEW_USE_MPI "@PARAVIEW_USE_MPI@")
63 set(PARAVIEW_USE_PYTHON "@PARAVIEW_USE_PYTHON@")
64 set(PARAVIEW_PLUGIN_SUBDIR "paraview@paraview_version_suffix@/plugins")
65
66 if (PARAVIEW_USE_PYTHON)
67   set(PARAVIEW_PYTHONPATH "@PARAVIEW_PYTHON_SITE_PACKAGES_SUFFIX@")
68   include("${CMAKE_CURRENT_LIST_DIR}/ParaViewPython-targets.cmake")
69   # Unset this for now; these targets will be defined later.
70   unset("${CMAKE_FIND_PACKAGE_NAME}_FOUND")
71   unset("${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE")
72 endif ()
73
74 include("${CMAKE_CURRENT_LIST_DIR}/${CMAKE_FIND_PACKAGE_NAME}-targets.cmake")
75 include("${CMAKE_CURRENT_LIST_DIR}/${CMAKE_FIND_PACKAGE_NAME}-vtk-module-properties.cmake")
76
77 include("${CMAKE_CURRENT_LIST_DIR}/paraview-find-package-helpers.cmake" OPTIONAL)
78 include("${CMAKE_CURRENT_LIST_DIR}/${CMAKE_FIND_PACKAGE_NAME}-vtk-module-find-packages.cmake")
79
80 include("${CMAKE_CURRENT_LIST_DIR}/${CMAKE_FIND_PACKAGE_NAME}Plugins-paraview_plugins-targets-depends.cmake")
81 include("${CMAKE_CURRENT_LIST_DIR}/${CMAKE_FIND_PACKAGE_NAME}Plugins-targets.cmake")
82 include("${CMAKE_CURRENT_LIST_DIR}/${CMAKE_FIND_PACKAGE_NAME}Plugins-paraview-plugin-properties.cmake")
83
84 include("${CMAKE_CURRENT_LIST_DIR}/ParaViewTools-targets.cmake" OPTIONAL)
85
86 include("${CMAKE_CURRENT_LIST_DIR}/ParaViewClient.cmake")
87 include("${CMAKE_CURRENT_LIST_DIR}/ParaViewPlugin.cmake")
88 include("${CMAKE_CURRENT_LIST_DIR}/ParaViewServerManager.cmake")
89 include("${CMAKE_CURRENT_LIST_DIR}/ParaViewTesting.cmake")
90 include("${CMAKE_CURRENT_LIST_DIR}/vtkModuleWrapClientServer.cmake")
91
92 if (@PARAVIEW_USE_PYTHON@) # PARAVIEW_USE_PYTHON
93   include("${CMAKE_CURRENT_LIST_DIR}/paraview.modules-vtk-python-module-properties.cmake")
94 endif ()
95
96 if (@PARAVIEW_USE_QT@) # PARAVIEW_USE_QT
97   include("${CMAKE_CURRENT_LIST_DIR}/${CMAKE_FIND_PACKAGE_NAME}Client-targets.cmake")
98   include("${CMAKE_CURRENT_LIST_DIR}/ParaView-client-xml.cmake")
99 endif ()
100
101 set(_paraview_components_to_check)
102 foreach (_paraview_component IN LISTS "${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS")
103   if (DEFINED "${CMAKE_FIND_PACKAGE_NAME}_${_paraview_component}_FOUND")
104     # It was already not-found (likely due to `find-package` failures).
105   elseif (TARGET "${CMAKE_FIND_PACKAGE_NAME}::${_paraview_component}")
106     list(APPEND _paraview_components_to_check
107       "${_paraview_component}")
108   else ()
109     set("${CMAKE_FIND_PACKAGE_NAME}_${_paraview_component}_FOUND" 0)
110     list(APPEND "${CMAKE_FIND_PACKAGE_NAME}_${_paraview_component}_NOT_FOUND_MESSAGE"
111       "The ${_paraview_component} component is not available.")
112   endif ()
113 endforeach ()
114 unset(_paraview_component)
115
116 set(_paraview_vtk_components)
117
118 while (_paraview_components_to_check)
119   list(GET _paraview_components_to_check 0 _paraview_component)
120   list(REMOVE_AT _paraview_components_to_check 0)
121   if (DEFINED "${CMAKE_FIND_PACKAGE_NAME}_${_paraview_component}_FOUND")
122     # We've already made a determiniation.
123     continue ()
124   endif ()
125
126   get_property(_paraview_dependencies
127     TARGET    "${CMAKE_FIND_PACKAGE_NAME}::${_paraview_component}"
128     PROPERTY  "INTERFACE_paraview_module_depends")
129   string(REPLACE "${CMAKE_FIND_PACKAGE_NAME}::" "" _paraview_dependencies "${_paraview_dependencies}")
130   set(_paraview_all_dependencies_checked TRUE)
131   foreach (_paraview_dependency IN LISTS _paraview_dependencies)
132     # Handle VTK module dependencies.
133     string(FIND "${_paraview_component}" "VTK::" _paraview_vtk_idx)
134     if (NOT _paraview_vtk_idx EQUAL -1)
135       unset(_paraview_vtk_idx)
136       if (NOT TARGET "${_paraview_dependency}")
137         set("${CMAKE_FIND_PACKAGE_NAME}_${_paraview_component}_FOUND" 0)
138         list(APPEND "${CMAKE_FIND_PACKAGE_NAME}_${_paraview_component}_NOT_FOUND_MESSAGE"
139           "Failed to find the ${_paraview_dependency} module.")
140       endif ()
141       continue ()
142     endif ()
143     unset(_paraview_vtk_idx)
144
145     if (DEFINED "${CMAKE_FIND_PACKAGE_NAME}_${_paraview_dependency}_FOUND")
146       if (NOT ${CMAKE_FIND_PACKAGE_NAME}_${_paraview_dependency}_FOUND)
147         set("${CMAKE_FIND_PACKAGE_NAME}_${_paraview_component}_FOUND" 0)
148         list(APPEND "${CMAKE_FIND_PACKAGE_NAME}_${_paraview_component}_NOT_FOUND_MESSAGE"
149           "Failed to find the ${_paraview_dependency} component.")
150       endif ()
151     else ()
152       # Check its dependencies.
153       list(APPEND _paraview_components_to_check
154         "${_paraview_dependency}")
155       set(_paraview_all_found FALSE)
156     endif ()
157   endforeach ()
158   if (NOT DEFINED "${CMAKE_FIND_PACKAGE_NAME}_${_paraview_component}_FOUND")
159     if (_paraview_all_dependencies_checked)
160       set("${CMAKE_FIND_PACKAGE_NAME}_${_paraview_component}_FOUND" 1)
161     else ()
162       list(APPEND _paraview_components_to_check
163         "${_paraview_component}")
164     endif ()
165   endif ()
166   unset(_paraview_all_dependencies_checked)
167   unset(_paraview_dependency)
168   unset(_paraview_dependencies)
169 endwhile ()
170 unset(_paraview_component)
171 unset(_paraview_components_to_check)
172
173 set(_paraview_missing_components)
174 foreach (_paraview_component IN LISTS "${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS")
175   if (NOT ${CMAKE_FIND_PACKAGE_NAME}_${_paraview_component}_FOUND AND ${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED_${_paraview_component})
176     list(APPEND _paraview_missing_components
177       "${_paraview_component}")
178   endif ()
179 endforeach ()
180
181 if (_paraview_missing_components)
182   list(REMOVE_DUPLICATES _paraview_missing_components)
183   list(SORT _paraview_missing_components)
184   string(REPLACE ";" ", " _paraview_missing_components "${_paraview_missing_components}")
185   set("${CMAKE_FIND_PACKAGE_NAME}_FOUND" 0)
186   set("${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE"
187     "Could not find the ${CMAKE_FIND_PACKAGE_NAME} package with the following required components: ${_paraview_missing_components}.")
188 endif ()
189 unset(_paraview_missing_components)
190
191 set("${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES")
192 if (NOT DEFINED "${CMAKE_FIND_PACKAGE_NAME}_FOUND")
193   # If nothing went wrong, we've successfully found the package.
194   set("${CMAKE_FIND_PACKAGE_NAME}_FOUND" 1)
195   # Build the `_LIBRARIES` variable.
196   foreach (_paraview_component IN LISTS "${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS")
197     list(APPEND "${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES"
198       "${CMAKE_FIND_PACKAGE_NAME}::${_paraview_component}")
199   endforeach ()
200   unset(_paraview_component)
201 endif ()
202
203 set(CMAKE_PREFIX_PATH "${${CMAKE_FIND_PACKAGE_NAME}_CMAKE_PREFIX_PATH_save}")
204 unset("${CMAKE_FIND_PACKAGE_NAME}_CMAKE_PREFIX_PATH_save")
205
206 set(CMAKE_MODULE_PATH "${${CMAKE_FIND_PACKAGE_NAME}_CMAKE_MODULE_PATH_save}")
207 unset(${CMAKE_FIND_PACKAGE_NAME}_CMAKE_MODULE_PATH_save)
208
209 # Compatibility with old code.
210 if (NOT ${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION)
211   set(PARAVIEW_USE_FILE "${CMAKE_CURRENT_LIST_DIR}/paraview-use-file-deprecated.cmake")
212 elseif (${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION VERSION_LESS 5.7)
213   set(PARAVIEW_USE_FILE "${CMAKE_CURRENT_LIST_DIR}/paraview-use-file-compat.cmake")
214 else ()
215   set(PARAVIEW_USE_FILE "${CMAKE_CURRENT_LIST_DIR}/paraview-use-file-error.cmake")
216 endif ()
217
218 # 5.8 renamed these variables, so provide them if 5.8 is not the minimum
219 # requested.
220 if (NOT ${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION OR
221     ${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION VERSION_LESS "5.8")
222   set(PARAVIEW_BUILD_QT_GUI "${PARAVIEW_USE_QT}")
223   set(PARAVIEW_ENABLE_PYTHON "${PARAVIEW_USE_PYTHON}")
224 endif ()