/builds/gitlab-kitware-sciviz-ci/Documentation/dev/build.md
Go to the documentation of this file.
1 # Building ParaView
2 
3 This page describes how to build and install ParaView. It covers building for
4 development, on both Linux and Windows. Please Note that Linux (x86_64), Windows (x86_64)
5 and macOS (x86_64 and arm64) version are built and tested by our continuous
6 integration system and are considered supported environments.
7 
8 Any other environnements and architecture (including Cygwin, MingGW, PowerPC) are considered
9 non-officially supported, however, patches to fix problems with these platforms will
10 be considered for inclusion.
11 
12 ParaView depends on several open source tools and libraries such as Python, Qt,
13 CGNS, HDF5, etc. Some of these are included in the ParaView source itself
14 (e.g., HDF5), while others are expected to be present on the machine on which
15 ParaView is being built (e.g., Python, Qt).
16 
17 The first section is a getting started guide by OS that is very helpful if you have never
18 built ParaView before and do not know which options you need.
19 If you are looking for the generic help, please read the [Complete Compilation Guide](#complete-compilation-guide)
20 
21 ## Getting Started Guide
22 This is a section intended to help those that have never built ParaView before, are not
23 experienced with compilation in general or have no idea which option they may need when building ParaView.
24 If you follow this guide, you will be able to compile and run a standard version of ParaView
25 for your operating system. It will be built with the Python wrapping, MPI capabilities and multithreading capabilities.
26 
27  * If you are using a Linux distribution, please see [the Linux part](#linux),
28  * If you are using Microsoft Windows, please see [the Windows part](#windows),
29  * If you are using macOS, please see [the macOS part](#macos),
30  * If you are using another OS, feel free to provide compilation steps.
31 
32 ### Linux
33 
34 #### Dependencies
35 Please run the command in a terminal to install the following dependencies depending of your linux distribution.
36 
37 ##### Ubuntu 22.04 LTS / Debian 12
38 
39 `sudo apt-get install git cmake build-essential libgl1-mesa-dev libxt-dev libqt5x11extras5-dev libqt5help5 qttools5-dev qtxmlpatterns5-dev-tools libqt5svg5-dev python3-dev python3-numpy libopenmpi-dev libtbb-dev ninja-build qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools`
40 
41 ##### Ubuntu 18.04 LTS / Debian 10
42 `sudo apt-get install git cmake build-essential libgl1-mesa-dev libxt-dev qt5-default libqt5x11extras5-dev libqt5help5 qttools5-dev qtxmlpatterns5-dev-tools libqt5svg5-dev python3-dev python3-numpy libopenmpi-dev libtbb-dev ninja-build`
43 
44 ##### Centos 7
45 
46 ###### CMake
47 Download and install [cmake][cmake-download]) as the packaged version is not enough considering that
48 CMake 3.12 or higher is needed.
49 
50 ###### Others
51 `sudo yum install python3-devel openmpi-devel mesa-libGL-devel libX11-devel libXt-devel qt5-qtbase-devel qt5-qtx11extras-devel qt5-qttools-devel qt5-qtxmlpatterns-devel tbb-devel ninja-build git`
52 
53 ###### Environment
54 ```sh
55 alias ninja=ninja-build
56 export PATH=$PATH:/usr/lib64/openmpi/bin/
57 ```
58 
59 ##### ArchLinux
60 `sudo pacman -S base-devel ninja openmpi tbb qt python python-numpy cmake`
61 
62 ##### Other distribution
63 If you are using another distribution, please try to adapt the package list.
64 Feel free to then provide it so we can integrate it in this guide by creating an [issue][paraview-issues].
65 
66 #### Build
67 
68 To build ParaView development version (usually refered as "master"), please run the following commands in a terminal:
69 ```sh
70 git clone --recursive https://gitlab.kitware.com/paraview/paraview.git
71 mkdir paraview_build
72 cd paraview_build
73 cmake -GNinja -DPARAVIEW_USE_PYTHON=ON -DPARAVIEW_USE_MPI=ON -DVTK_SMP_IMPLEMENTATION_TYPE=TBB -DCMAKE_BUILD_TYPE=Release ../paraview
74 ninja
75 ```
76 
77 To build a specific ParaView version, eg: v5.9.1, please run the following commands in a terminal while replacing "tag" by the version you want to build
78 ```sh
79 git clone https://gitlab.kitware.com/paraview/paraview.git
80 mkdir paraview_build
81 cd paraview
82 git checkout tag
83 git submodule update --init --recursive
84 cd ../paraview_build
85 cmake -GNinja -DPARAVIEW_USE_PYTHON=ON -DPARAVIEW_USE_MPI=ON -DVTK_SMP_IMPLEMENTATION_TYPE=TBB -DCMAKE_BUILD_TYPE=Release ../paraview
86 ninja
87 ```
88 
89 ParaView also ships CMake presets:
90  - default
91  - dev
92  - mini
93 
94 They can be used directly like this:
95 
96 ```
97 cmake -GNinja --preset presetName ../paraview
98 ninja
99 ```
100 
101 #### Run
102 Double click on the paraview executable in the `/bin` directory or run in the previous terminal
103 
104 ```sh
105 ./bin/paraview
106 ```
107 
108 ### macOS
109 These instructions have worked on a mid 2023 MacMini with an M2 chipset on macOS Ventura.
110 
111 #### Install Homebrew
112 Please run the command in a terminal to install the following dependencies on your Mac via [Homebrew](https://brew.sh/) and add the relevant environment variables for brew.
113 ```zsh
114 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
115 (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> ~/.zprofile
116 eval "$(/opt/homebrew/bin/brew shellenv)"
117 ```
118 ##### Install dependencies (largely following the Ubuntu steps for Linux)
119 `brew install open-mpi cmake mesa tbb ninja gdal qt5`
120 
121 ##### Set build environment
122 ```sh
123 echo 'export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"' >> ~/.zshrc
124 echo 'export LDFLAGS="-L/opt/homebrew/opt/qt@5/lib"' >> ~/.zshrc
125 echo 'export CPPFLAGS="-I/opt/homebrew/opt/qt@5/include"' >> ~/.zshrc
126 source ~/.zshrc
127 ```
128 
129 #### Build
130 
131 To build a specific ParaView version, eg: v5.11.1, please run the following commands in a terminal
132 ```sh
133 git clone https://gitlab.kitware.com/paraview/paraview.git
134 mkdir paraview_build
135 cd paraview
136 git checkout v5.11.1
137 git submodule update --init --recursive
138 cd ../paraview_build
139 cmake -GNinja -DPARAVIEW_USE_PYTHON=ON -DPARAVIEW_USE_MPI=ON -DVTK_SMP_IMPLEMENTATION_TYPE=TBB -DCMAKE_BUILD_TYPE=Release -DPARAVIEW_ENABLE_GDAL=ON ../paraview
140 ninja
141 ```
142 
143 #### Run
144 Double click on the paraview executable in the `/bin` directory or run in the previous terminal
145 
146 ```sh
147 ./bin/paraview.app/Contents/MacOS/paraview
148 ```
149 
150 ### Windows
151 
152 Note: The following steps concerning Visual Studio 2019 can also be applied to newer versions.
153 If so, be sure to use the respective Qt Version (e.g. for VS 2022, use msvc2022_64) and the Native Tools Command Prompt.
154 
155 #### Dependencies
156  * Download and install [git bash for windows][gitforwindows]
157  * Download and install [cmake][cmake-download]
158  * Download and install [Visual Studio 2019 Community Edition][visual-studio]
159  * Download [ninja-build][ninja] and drop `ninja.exe` in `C:\Windows\`
160  * Download and install both `msmpisetup.exe` and `msmpisdk.msi` from [Microsoft MPI][msmpi]
161  * Download and install [Python for Windows][pythonwindows], make sure to add the path to your Python installation folder to the `PATH` environnement variable.
162  * Download and install [Qt 5.15.3][qt-download-5.15.3] for Windows, make sure to check the MSVC 2019 64-bit component during installation.
163  * Make sure to add `C:\Qt\Qt5.15.3\5.15.3\msvc2019_64\bin` to your `PATH` environment variable.
164  * You may also need to add an environment variable `QT_QPA_PLATFORM_PLUGIN_PATH`: `C:\Qt\Qt5.15.3\5.15.3\msvc2019_64\plugins\platforms`.
165 
166 #### Recover the source
167  * Open git bash
168  * To build ParaView development version (usually referred to as `master`), run the following commands:
169 
170 ```sh
171 cd C:
172 mkdir pv
173 cd pv
174 git clone --recursive https://gitlab.kitware.com/paraview/paraview.git
175 mv paraview pv
176 mkdir pvb
177 ```
178 
179  * Or, to build a specific ParaView version, eg: v5.9.1, please run the following commands while replacing "tag" by the version you want to build
180 
181 ```sh
182 cd C:
183 mkdir pv
184 cd pv
185 git clone https://gitlab.kitware.com/paraview/paraview.git
186 mv paraview pv
187 mkdir pvb
188 cd pv
189 git checkout tag
190 git submodule update --init --recursive
191 ```
192 
193 #### Build
194 
195  * Open VS2019 x64 Native Tools Command Prompt and run the following commands
196 ```sh
197 cd C:\pv\pvb
198 cmake -GNinja -DPARAVIEW_USE_PYTHON=ON -DPARAVIEW_USE_MPI=ON -DVTK_SMP_IMPLEMENTATION_TYPE=STDThread -DCMAKE_BUILD_TYPE=Release ..\pv
199 ninja
200 ```
201 
202 Note: If you want to build ParaView with `CMAKE_BUILD_TYPE=Debug` you also need to add the option `-DPARAVIEW_WINDOWS_PYTHON_DEBUGGABLE=ON`.
203 
204 #### Run
205 
206  * Double click on the `C:\pv\pvb\bin\paraview.exe` executable
207 
208 ## Complete Compilation Guide
209 
210 ### Obtaining the source
211 
212 To obtain ParaView's sources locally, clone this repository using
213 [Git][git].
214 
215 ```sh
216 git clone --recursive https://gitlab.kitware.com/paraview/paraview.git
217 ```
218 
219 ### Building
220 
221 ParaView supports all of the common generators supported by CMake. The Ninja,
222 Makefiles, and Visual Studio generators are the most well-tested however.
223 
224 #### Prerequisites
225 
226 ParaView only requires a few packages to build with its basic capabilities. However,
227 specific features may require additional packages to be provided to ParaView's
228 build configuration.
229 
230 Required:
231 
232  * [CMake][cmake]
233  - Version 3.12 or newer, however, the latest version is always recommended
234  * Supported compiler
235  - GCC 8.0 or newer
236  - Intel 19 or newer
237  - IBM XL 17.1 or newer
238  - Clang 5 or newer
239  - Xcode 10 or newer
240  - Visual Studio 2019 or newer
241 
242 Optional dependencies:
243 
244  * [Python][python]
245  - At least 3.3 is required
246  * [Qt5][qt]
247  - Version 5.15 or newer when using Qt 5, Qt 6.9 when using Qt 6.
248 
249 ##### Installing CMake
250 
251 CMake is a tool that makes cross-platform building simple. On several systems
252 it will probably be already installed or available through system package
253 management utilities. If it is not, there are precompiled binaries available on
254 [CMake's download page][cmake-download].
255 
256 ##### Installing Qt
257 
258 ParaView uses Qt to provide its graphical user interface. Precompiled binaries are available on
259 [Qt's website][qt-download].
260 
261 Note that on Windows, the compiler used for building ParaView must match the
262 compiler version used to build Qt.
263 
264 #### Optional Additions
265 
266 ##### Download And Install ffmpeg (`.avi`) movie libraries
267 
268 When the ability to write `.avi` files is desired, and writing these files is
269 not supported by the OS, ParaView can use the ffmpeg library. This is generally
270 true for Linux. Source code for ffmpeg can be obtained from [its
271 website][ffmpeg].
272 
273 ##### MPI
274 
275 To run ParaView in parallel, an [MPI][mpi] implementation is required. If an
276 MPI implementation that exploits special interconnect hardware is provided on
277 your system, we suggest using it for optimal performance. Otherwise, on
278 Linux/Mac, we suggest either [OpenMPI][openmpi] or [MPICH][mpich]. On Windows,
279 [Microsoft MPI][msmpi] is required.
280 
281 ##### Python
282 
283 In order to use Python scripting, [Python][python] is required (version 3.3 or later). Python
284 is also required in order to build ParaViewWeb support.
285 
286 ##### OSMesa
287 
288 Off-screen Mesa can be used as a software-renderer for running ParaView on a
289 server without hardware OpenGL acceleration. This is usually available in
290 system packages on Linux. For example, the `libosmesa6-dev` package on Debian
291 and Ubuntu. However, for older machines, building a newer version of Mesa is
292 likely necessary for bug fixes and support for features needed by ParaView.
293 Its source and build instructions can be found on [its website][mesa].
294 
295 ### Creating the Build Environment
296 
297 #### Linux (Ubuntu/Debian)
298 
299  * `sudo apt install` the following packages:
300  - `build-essential`
301  - `cmake`
302  - `mesa-common-dev`
303  - `mesa-utils`
304  - `freeglut3-dev`
305  - `ninja-build`
306  - `ninja` is a speedy replacement for `make`, highly recommended.
307 
308 *Note*: If you are using an Ubuntu-provided compiler, there is a known issue
309 with the optional Python linking. This case is hard to auto-detect, so if
310 undefined symbol errors related to Python symbols arise, setting
311 `vtk_undefined_symbols_allowed=OFF` may resolve the errors. If it does not,
312 please file a new [issue][paraview-issues].
313 
314 #### Windows
315 
316  * [Visual Studio 2019 Community Edition][visual-studio]
317  * Use "x64 Native Tools Command Prompt" for the installed Visual Studio
318  version to configure with CMake and to build with ninja.
319  * Get [ninja][ninja]. Unzip the binary and put it in `PATH`.
320 
321 ### Building
322 
323 In order to build, CMake requires two steps, configure and build. ParaView
324 itself does not support what are known as in-source builds, so the first step
325 is to create a build directory.
326 
327 !!! note
328  On Windows, there have historically been issues if the path to the
329  build directory is too long. These issues should have been addressed in
330  more recent versions of ParaView's build system, but they may appear again. If you
331  see errors related to header files not being found at paths on your file
332  system that do exist, please report them to [the issue
333  tracker][paraview-issues].
334 
335 ```sh
336 mkdir -p paraview/build
337 cd paraview/build
338 ccmake ../path/to/paraview/source # -GNinja may be added to use the Ninja generator
339 ```
340 
341 CMake's GUI has input entries for the build directory and the generator
342 already. Note that on Windows, the GUI must be launched from a "Native Tools
343 Command Prompt" available with Visual Studio in the start menu.
344 
345 #### Build Settings
346 
347 ParaView has a number of settings available for its build. These are categorized
348 as build options, capability options, feature options and miscellaneous options.
349 
350 #### Build Options
351 
352 Options that impact the build begin with the prefix `PARAVIEW_BUILD_`.
353 Common variables to modify include:
354 
355  * `PARAVIEW_BUILD_SHARED_LIBS` (default `ON`): If set, shared libraries will
356  be built. This is usually what is wanted.
357 
358 Less common, but variables which may be of interest to some:
359 
360  * `PARAVIEW_BUILD_EDITION` (default `CANONICAL`): Choose which features to
361  enable in this build. This is useful to generate ParaView builds with
362  limited features. More on this later.
363  * `PARAVIEW_ENABLE_EXAMPLES` (default `OFF`): If set, ParaView's example code
364  will be added as tests to the ParaView test suite. These tests may be built
365  and run using the `paraview-examples` target.
366  * `PARAVIEW_BUILD_DEVELOPER_DOCUMENTATION` (default `OFF`): If set, the HTML
367  documentation for ParaView's C++, Python, and proxies will be generated.
368  * `PARAVIEW_PLUGIN_DISABLE_XML_DOCUMENTATION` (default `OFF`): Whether
369  plugin XML documentation is forcefully disabled.
370  * `PARAVIEW_BUILD_TESTING` (default `OFF`): Whether to build tests or not.
371  Valid values are `OFF` (no testing), `DEFAULT` (enable tests which have all
372  test dependencies satisfied), `WANT` (enable test dependencies as possible;
373  see vtk/vtk#17509), and `ON` (enable all tests; may error out if features
374  otherwise disabled are required by test code).
375  * `PARAVIEW_BUILD_VTK_TESTING` (default `OFF`): Whether to build tests for the
376  VTK codebase built by ParaView. Valid values are same as
377  `PARAVIEW_BUILD_TESTING`.
378  * `PARAVIEW_ENABLE_CATALYST` (default `OFF`): Whether to build the ParaView
379  implementation of Catalyst.
380 
381 More advanced build options are:
382 
383  * `PARAVIEW_BUILD_ALL_MODULES` (default `OFF`): If set, ParaView will enable
384  all modules not disabled by other features.
385  * `PARAVIEW_BUILD_LEGACY_REMOVE` (default `OFF`): Remove legacy / deprecated
386  code.
387  * `PARAVIEW_BUILD_LEGACY_SILENT` (default `OFF`): Silence all legacy
388  / deprecated code messages.
389  * `PARAVIEW_BUILD_WITH_EXTERNAL` (default `OFF`): When set to `ON`, the build
390  will try to use external copies of all included third party libraries unless
391  explicitly overridden.
392  * `PARAVIEW_BUILD_WITH_KITS` (default `OFF`; requires
393  `PARAVIEW_BUILD_SHARED_LIBS`): Compile ParaView into a smaller set of
394  libraries. Can be useful on platforms where ParaView takes a long time to
395  launch due to expensive disk access.
396  * `PARAVIEW_BUILD_ID` (default `""`): A build ID for the ParaView build. It
397  can be any arbitrary value which can be used to indicate the provenance of
398  ParaView.
399  * `PARAVIEW_GENERATE_SPDX` (default `OFF`): When compiling ParaView, generate
400  a SPDX file for each of ParaView modules containing license and copyright
401  information.
402 
403 #### Capability settings
404 
405 These settings control capabitities of the build. These begin with the prefix
406 `PARAVIEW_USE_`. The common variables to modify include:
407 
408  * `PARAVIEW_USE_QT` (default `ON`): Builds the `paraview` GUI application.
409  * `PARAVIEW_USE_MPI` (default `OFF`): Whether MPI support will be available
410  or not.
411  * `PARAVIEW_USE_PYTHON` (default `OFF`): Whether Python
412  support will be available or not.
413 
414 Less common, but potentially useful variables are:
415 
416  * `PARAVIEW_USE_VISKORES` (default `ON`): Whether Viskores based filters are enabled.
417  * `PARAVIEW_USE_FORTRAN` (default `ON` if Fortran compiler found): Enable
418  Fortran support for Catalyst libraries.
419  * `PARAVIEW_USE_CUDA` (default `OFF`): Enable CUDA support in ParaView.
420  * `PARAVIEW_USE_HIP` (default `OFF`, requires CMake >= 3.21 and NOT
421  `PARAVIEW_USE_CUDA`): Enable HIP support in ParaView.
422  * `PARAVIEW_LOGGING_TIME_PRECISION` (default `3`): Change the precision of
423  times output. Possible values are 3 for ms, 6 for us, 9 for ns.
424  * `PARAVIEW_USE_SERIALIZATION` (default `OFF`): Whether VTK serialization is enabled.
425 
426 #### Feature settings
427 
428 These settings control optional features. These begin with the prefix
429 `PARAVIEW_ENABLE_`. The common variables to modify include:
430 
431  * `PARAVIEW_ENABLE_RAYTRACING` (default `OFF`): Enable ray-tracing support
432  with OSPray and/or OptiX. Requires appropriate external libraries.
433  * `PARAVIEW_ENABLE_WEB` (default `OFF`; requires `PARAVIEW_USE_PYTHON`):
434  Whether ParaViewWeb support will be available or not.
435 
436 These settings are used for translating purpose:
437  * `PARAVIEW_BUILD_TRANSLATIONS` (default `OFF`): Enable translation
438  files update and generation.
439  * `PARAVIEW_TRANSLATIONS_DIRECTORY` (default `${CMAKE_BINARY_DIR}/Translations`):
440  Path where the translation files will be generated on build.
441 
442 More advanced / less common options include:
443 
444  * `PARAVIEW_ENABLE_VISITBRIDGE` (default `OFF`): Enable support for VisIt
445  readers.
446  * `PARAVIEW_ENABLE_NVPIPE` (default `OFF`): Use [nvpipe][nvpipe] image
447  compression that uses the GPU when communicating. Requires CUDA and an NVIDIA GPU.
448  * `PARAVIEW_ENABLE_GDAL` (default `OFF`): Enable support for reading GDAL
449  files.
450  * `PARAVIEW_ENABLE_LAS` (default `OFF`): Enable support for reading LAS
451  files.
452  * `PARAVIEW_ENABLE_OPENTURNS` (default `OFF`): Enable support for reading
453  OpenTURNS files.
454  * `PARAVIEW_ENABLE_PDAL` (default `OFF`): Enable support for reading PDAL
455  files.
456  * `PARAVIEW_ENABLE_MOTIONFX` (default `OFF`): Enable support for reading
457  MotionFX files.
458  * `PARAVIEW_ENABLE_MOMENTINVARIANTS` (default `OFF`): Enable
459  MomentInvariants filters.
460  * `PARAVIEW_ENABLE_LOOKINGGLASS` (default `OFF`): Enable support for LookingGlass displays.
461  * `PARAVIEW_ENABLE_XDMF2` (default `OFF`): Enable support for reading Xdmf2
462  files.
463  * `PARAVIEW_ENABLE_XDMF3` (default `OFF`): Enable support for reading Xdmf3
464  files.
465  * `PARAVIEW_ENABLE_FFMPEG` (default `OFF`; not available on Windows): Enable
466  FFmpeg support.
467  * `PARAVIEW_ENABLE_COSMOTOOLS` (default `OFF`; requires `PARAVIEW_USE_MPI`
468  and not available on Windows): Enable support for CosmoTools which includes
469  GenericIO readers and writers as well as some point cloud algorithms.
470  * `PARAVIEW_ENABLE_CGNS_READER` (default `ON` for CANONICAL builds, `OFF` for
471  non-CANONICAL builds): Enable support for reading CGNS files. When building
472  ParaView for e.g. CATALYST, this option allows building support for reading
473  CGNS files. It will also build CGNSReader dependencies: HDF5 and CGNS.
474  * `PARAVIEW_ENABLE_CGNS_WRITER` (default `ON` for CANONICAL builds, `OFF` for
475  non-CANONICAL builds): Enable support for writing CGNS files. When building
476  ParaView for e.g. CATALYST, this option allows building support for writing
477  CGNS files. It will also build CGNSReader dependencies: HDF5 and CGNS. If
478  `PARAVIEW_ENABLE_MPI` is `ON`, the parallel CGNS writer will also be built.
479  * `PARAVIEW_ENABLE_OCCT` (default `OFF`): Enable support for reading OpenCascade
480  file formats such as STEP and IGES.
481 
482 #### Plugin settings
483 
484 ParaView includes several optional plugins that can be enabled and disabled using the
485 following options:
486 
487  * `PARAVIEW_PLUGINS_DEFAULT` (default `ON`): Pass this flag to the command
488  line using `-DPARAVIEW_PLUGINS_DEFAULT=OFF` before the first cmake run to
489  disable all plugins by default. Note this has no impact after the first
490  cmake configure and hence must be passed on the command line itself.
491  * `PARAVIEW_PLUGIN_ENABLE_<name>` (default varies): Whether to enable a
492  plugin or not.
493  * `PARAVIEW_PLUGIN_AUTOLOAD_<name>` (default `OFF`): Whether to autoload a
494  plugin at startup or not. Note that this affects all clients linking to
495  ParaView's plugin target.
496 
497 #### Miscellaneous settings
498 ParaView uses VTK's module system to control its build. This infrastructure
499 provides a number of variables to control modules which are not otherwise
500 controlled by the other options provided.
501 
502  * `VTK_MODULE_USE_EXTERNAL_<name>` (default depends on
503  `PARAVIEW_BUILD_WITH_EXTERNAL`): Use an external source for the named third-party
504  module rather than the copy contained within the ParaView source tree.
505  * `VTK_MODULE_ENABLE_<name>` (default `DEFAULT`): Change the build settings
506  for the named module. Valid values are those for the module system's build
507  settings (see below).
508  * `VTK_GROUP_ENABLE_<name>` (default `DEFAULT`): Change the default build
509  settings for modules belonging to the named group. Valid values are those
510  for the module system's build settings (see below).
511 
512 For variables that use the module system's build settings, the valid values are as follows:
513 
514  * `YES`: Require the module to be built.
515  * `WANT`: Build the module if possible.
516  * `DEFAULT`: Use the settings by the module's groups and
517  `PARAVIEW_BUILD_ALL_MODULES`.
518  * `DONT_WANT`: Don't build the module unless required as a dependency.
519  * `NO`: Do not build the module.
520 
521 If any `YES` module requires a `NO` module, an error is raised.
522 
523 More advanced options:
524 
525  * `PARAVIEW_INITIALIZE_MPI_ON_CLIENT` (default `ON`; requires
526  `PARAVIEW_USE_MPI`): Initialize MPI on client processes by default.
527  * `PARAVIEW_USE_QTHELP` (default `ON`; requires `PARAVIEW_USE_QT`): Use Qt's
528  help infrastructure for runtime documentation.
529  * `PARAVIEW_VERSIONED_INSTALL` (default `ON`): Whether to add version numbers
530  to ParaView's include and plugin directories in the install tree.
531  * `PARAVIEW_CUSTOM_LIBRARY_SUFFIX` (default depends on
532  `PARAVIEW_VERSIONED_INSTALL`): The custom suffix for libraries built by
533  ParaView. Defaults to either an empty string or `pvX.Y` where `X` and `Y`
534  are ParaView's major and minor version components, respectively.
535  * `PARAVIEW_INSTALL_DEVELOPMENT_FILES` (default `ON`): If set, ParaView will
536  install its headers, CMake API, etc. into its install tree for use.
537  * `PARAVIEW_RELOCATABLE_INSTALL` (default `ON`): If set, the install tree
538  will be relocatable to another path or machine. External dependencies
539  needed by ParaView which are in non-standard locations may need manual
540  settings in ParaView-using projects (those which share an install prefix
541  with ParaView should be OK though). If unset, the install tree will include
542  hints for the location of its dependencies which may include
543  build-machine-specific paths in the install tree.
544  * `PARAVIEW_SERIAL_TESTS_USE_MPIEXEC` (default `OFF`): Used on HPC to run
545  serial tests on compute nodes. If set, it prefixes serial tests with
546  "${MPIEXEC_EXECUTABLE}" "${MPIEXEC_NUMPROC_FLAG}" "1" ${MPI_PREFLAGS}
547  * `PARAVIEW_SKIP_CLANG_TIDY_FOR_VTK` (defaults `ON`; requires
548  `CMAKE_<LANG>_CLANG_TIDY`): If set, any `clang-tidy` settings will be
549  cleared for the internal VTK build.
550  * `PARAVIEW_TEST_DIR`: Used on HPC to set the test directory (default is
551  "${CMAKE_BINARY_DIR}/Testing/Temporary") to a location that is writable from
552  the compute nodes. Typically the user home directory is not.
553  * `PARAVIEW_LINKER_FATAL_WARNINGS`: Specify if linker warnings must
554  be considered as errors.
555  * `PARAVIEW_EXTRA_COMPILER_WARNINGS`: Add compiler flags to do
556  stricter checking when building.
557  * `PARAVIEW_ENABLE_EXTRA_BUILD_WARNINGS` (default `OFF`; requires CMake >= 3.19):
558  If set, PARAVIEW will enable additional build warnings.
559 
560 <!--
561 These variables should be documented once they're effective again. Note that
562 various settings have a dependency on this that is not mentioned since the
563 option doesn't "exist" yet.
564 
565  * `PARAVIEW_USE_EXTERNAL_VTK` (default `OFF`): Use an externally provided
566  VTK. Note that ParaView has fairly narrow requirements for the VTK it can
567  use, so only very recent versions are likely to work.
568 -->
569 
570 ## Building editions
571 
572 A typical ParaView build includes several modules and dependencies. While these
573 are necessary for a fully functional application, there are cases (e.g. in situ
574 use-cases) where a build with limited set of features is adequate. ParaView build supports
575 this using the `PARAVIEW_BUILD_EDITION` setting. Supported values for this setting are:
576 
577 * `CORE`: Build modules necessary for core ParaView functionality.
578  This does not include rendering.
579 * `RENDERING`: Build modules necessary for supporting rendering including views
580  and representations. This includes everything in `CORE`.
581 * `CATALYST`: Build all modules necessary for in situ use cases without
582  rendering and optional components like NetCDF- and HDF5-based readers and
583  writers.
584 * `CATALYST_RENDERING`: Same as `CATALYST` but with rendering supported added.
585 * `CANONICAL` (default): Build modules necessary for standard ParaView build.
586 
587 ## Debugging facilities
588 
589 ParaView's build is fairly complicated, so a few debugging facilities are
590 provided.
591 
592 ### General CMake
593 
594 CMake provides the `--trace-expand` flag which causes CMake to log all commands
595 that it executes with variables expanded. This can help to trace logic and data
596 through the configure step.
597 
598 Debugging `Find` modules can be done using the `--debug-find` flag (introduced
599 in CMake 3.17) to determine what CMake's `find_` commands are doing.
600 
601 ### VTK Modules
602 
603 VTK's module system debugging facilities may be controlled by using the
604 following flags:
605 
606  * `ParaView_DEBUG_MODULE` (default `OFF`): If enabled, debugging is enabled.
607  Specific portions of the module system may be debugged using the other
608  flags.
609  * `ParaView_DEBUG_MODULE_ALL` (default `OFF`): Enable all debugging messages.
610  * `ParaView_DEBUG_MODULE_building` (default `OFF`): Log when modules are
611  being built.
612  * `ParaView_DEBUG_MODULE_enable` (default `OFF`): Log why modules are
613  enabled.
614  * `ParaView_DEBUG_MODULE_kit` (default `OFF`): Log information about
615  discovered kits.
616  * `ParaView_DEBUG_MODULE_module` (default `OFF`): Log information about
617  discovered modules.
618  * `ParaView_DEBUG_MODULE_provide` (default `OFF`): Log why a module is being
619  built or not.
620  * `ParaView_DEBUG_MODULE_testing` (default `OFF`): Log testing for VTK
621  modules.
622 
623 ### ParaView Plugins
624 
625 ParaView's plugin system has a similar setup:
626 
627  * `ParaView_DEBUG_PLUGINS` (default `OFF`): If enabled, debugging is enabled.
628  Specific portions of the plugin system may be debugged using the other
629  flags.
630  * `ParaView_DEBUG_PLUGINS_ALL` (default `OFF`): Enable all debugging messages.
631  * `ParaView_DEBUG_PLUGINS_building` (default `OFF`): Log when plugins are
632  being built.
633  * `ParaView_DEBUG_PLUGINS_plugin` (default `OFF`): Log information about
634  discovered plugins.
635 
636 ### Building Python
637 
638 The following target is provided to ensure that everything needed under `import
639 paraview` is available:
640 
641  * `paraview_all_python_modules`
642 
643 ### Building documentation
644 
645 The following targets are used to build documentation for ParaView:
646 
647  * `ParaViewDoxygenDoc` - build the doxygen documentation from ParaView's C++ source files.
648  * `ParaViewPythonDoc` - build the documentation from ParaView's Python source files.
649  * `ParaViewDoc-TGZ` - build a gzipped tarball of ParaView documentation.
650 
651 ## Using spack
652 
653 [Spack][spack] is a package manager for supercomputers, Linux and macOS. ParaView is one of
654 the packages available in Spack. To install ParaView from spack, you can use:
655 
656 ```
657 spack install paraview
658 ```
659 
660 Please refer to [Spack documentation][spack-docs] for ways of customizing the install,
661 including choosing the version and/or variant to build. Based on the version chosen,
662 spack will download appropriate ParaView source and build it.
663 
664 To make it easier to build ParaView using spack from an existing source checkout, we have included
665 relevant spack `package.yaml` files within the ParaView codebase itself. This
666 also makes it easier to keep the spack package up-to-date with any changes to
667 the ParaView buildsystem. With every release (and as frequently as required), we
668 will push the changes to the ParaView paraview.yaml file upstream to the
669 official spack repository.
670 
671 To build your existing source checkout of ParaView using Spack, here are the
672 steps:
673 
674 ```bash
675 # assuming you've installed spack as documented in spack docs
676 # and activate the spack environment appropriately
677 
678 # add custom paraview/package.yaml
679 > spack repo add $PARAVIEW_SOURCE_DIR/Utilities/spack/repo
680 
681 # use info to confirm that the paraview package is available
682 # only one version should be available
683 > spack info paraview
684 
685 # install similar to any other spack package
686 # e.g. following command installs osmesa-capable ParaView
687 # with mpich
688 
689 > spack install paraview+osmesa^mesa~glx^mpich
690 ```
691 
692 [cmake-download]: https://cmake.org/download
693 [cmake]: https://cmake.org
694 [ffmpeg]: https://ffmpeg.org
695 [git]: https://git-scm.org
696 [gitforwindows]: https://gitforwindows.org/
697 [mesa]: https://www.mesa3d.org
698 [mpi]: https://www.mcs.anl.gov/research/projects/mpi
699 [mpich]: https://www.mpich.org
700 [msmpi]: https://docs.microsoft.com/en-us/message-passing-interface/microsoft-mpi
701 [ninja]: https://github.com/ninja-build/ninja/releases
702 [nvpipe]: https://github.com/NVIDIA/NvPipe
703 [openmpi]: https://www.open-mpi.org
704 [paraview-issues]: https://gitlab.kitware.com/paraview/paraview/-/issues
705 [python]: https://python.org
706 [pythonwindows]: https://www.python.org/downloads/windows/
707 [qt-download]: https://download.qt.io/official_releases/qt
708 [qt]: https://qt.io
709 [qt-download-5.15.3]: https://download.qt.io/archive/qt/5.15/5.15.3/
710 [tbb]: https://github.com/intel/tbb/releases
711 [visual-studio]: https://visualstudio.microsoft.com/vs/older-downloads
712 [spack]: https://spack.io/
713 [spack-docs]: https://spack.readthedocs.io/en/latest/