aboutsummaryrefslogtreecommitdiff
path: root/ports/paraview
diff options
context:
space:
mode:
authorAlexander Neumann <30894796+Neumann-A@users.noreply.github.com>2020-06-23 19:20:18 +0200
committerGitHub <noreply@github.com>2020-06-23 10:20:18 -0700
commit03766d0834c1ca8dea25ffafbe4fe1c60786a412 (patch)
treef1dfa6d4a06ed5129f12ce59296c50d2eb920fbb /ports/paraview
parentaef838536ea3a08e3c1030ead553ca6456cc7fe3 (diff)
downloadvcpkg-03766d0834c1ca8dea25ffafbe4fe1c60786a412.tar.gz
vcpkg-03766d0834c1ca8dea25ffafbe4fe1c60786a412.zip
[CGNS/ParaView] Add new ports (#9960)
* [cgns] add port cgns * [paraview] add new port * [paraview] correct dependencies; disable catalyst * [VTK/ParaView] Make ParaView build * [paraview] add missing patch * [paraview] add cgns patch * [paraview] add qt plugin patches back in. Remove in the future * [vtk] slightly improved patches * [vtk] don't disable findPython * [paraview] add more features * [paraview] remove X11Extras from OSX * [vtk] make vtk workcorrectly with python and prepare for paraview with python * [paraview] Python fixes * [paraview] small bin -> lib replacement fix for static builds * [vtk] fix patch path * update baseline to exclude paraview for the time being on osx and linux. requires a fix in qt5-base linkage of libpq. * [paraview]try setting LD_LIBRARY_PATH for unix systems * [paraview] a bit of cleanup * update baseline * fix typo in baseline * [paraview] remove unnecessary patch * [vtk] replace custom patch with upstream patch * [paraview] cleanup in the portfile. * Update ports/paraview/CONTROL Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
Diffstat (limited to 'ports/paraview')
-rw-r--r--ports/paraview/CONTROL25
-rw-r--r--ports/paraview/VisIt_Build.patch107
-rw-r--r--ports/paraview/cgns.patch29
-rw-r--r--ports/paraview/paraview_build.patch745
-rw-r--r--ports/paraview/portfile.cmake173
-rw-r--r--ports/paraview/python_include.patch13
-rw-r--r--ports/paraview/python_wrapper.patch19
-rw-r--r--ports/paraview/qt_plugin.patch50
-rw-r--r--ports/paraview/qt_static_plugins.patch77
-rw-r--r--ports/paraview/remove_duplicates.patch14
-rw-r--r--ports/paraview/removedoublesymbols.patch89
11 files changed, 1341 insertions, 0 deletions
diff --git a/ports/paraview/CONTROL b/ports/paraview/CONTROL
new file mode 100644
index 000000000..e22b8f385
--- /dev/null
+++ b/ports/paraview/CONTROL
@@ -0,0 +1,25 @@
+Source: paraview
+Version: 5.8.0
+Homepage: https://www.paraview.org/
+Description: VTK-based Data Analysis and Visualization Application
+Build-Depends: vtk[core,paraview], protobuf, cgns, boost-core, boost-format, boost-algorithm
+
+Feature: vtkm
+Description: enables vtkm for the build of paraview
+Build-Depends: vtk[core,vtkm]
+
+Feature: python
+Description: enables the build of python wrappers
+Build-Depends: vtk[core,python]
+
+Feature: cuda
+Description: enables cuda within paraview
+Build-Depends: cuda, vtk[core, cuda]
+
+Feature: mpi
+Description: enables cuda within paraview
+Build-Depends: hdf5[core,parallel], vtk[core, mpi]
+
+Feature: all_modules
+Description: enables the build of all paraview modules
+Build-Depends: gdal, pdal, ffmpeg, laszip
diff --git a/ports/paraview/VisIt_Build.patch b/ports/paraview/VisIt_Build.patch
new file mode 100644
index 000000000..fb676a737
--- /dev/null
+++ b/ports/paraview/VisIt_Build.patch
@@ -0,0 +1,107 @@
+diff --git a/databases/readers/CEAucd/vtkCEAucdReader.C b/databases/readers/CEAucd/vtkCEAucdReader.C
+index 0ad9a828a..cf37beb86 100644
+--- a/databases/readers/CEAucd/vtkCEAucdReader.C
++++ b/databases/readers/CEAucd/vtkCEAucdReader.C
+@@ -172,7 +172,7 @@ const char *vtkCEAucdReader::GetByteOrderAsString()
+ }
+ }
+
+-void vtkCEAucdReader::SetFileStream( ifstream* istr )
++void vtkCEAucdReader::SetFileStream( std::ifstream* istr )
+ {
+ if( istr == this->FileStream ) return;
+
+@@ -311,9 +311,9 @@ int vtkCEAucdReader::RequestInformation(
+ {
+ vtkDebugMacro(<<"Open file "<<this->FileName<<"\n");
+ #ifdef _WIN32
+- this->FileStream = new ifstream(this->FileName, ios::in | ios::binary);
++ this->FileStream = new std::ifstream(this->FileName, std::ios::in | std::ios::binary);
+ #else
+- this->FileStream = new ifstream(this->FileName, ios::in);
++ this->FileStream = new std::ifstream(this->FileName, std::ios::in);
+ #endif
+ }
+
+@@ -340,7 +340,7 @@ int vtkCEAucdReader::RequestInformation(
+ vtkDebugMacro(<<"Re-open file "<<this->FileName<<" in ASCII mode");
+ delete this->FileStream; // close file to reopen it later
+ this->FileStream = NULL;
+- this->FileStream = new ifstream(this->FileName, ios::in);
++ this->FileStream = new std::ifstream(this->FileName, std::ios::in);
+ }
+
+ char c='\0', buf[100];
+diff --git a/databases/readers/CEAucd/vtkCEAucdReader.h b/databases/readers/CEAucd/vtkCEAucdReader.h
+index c3a86c16b..434556488 100644
+--- a/databases/readers/CEAucd/vtkCEAucdReader.h
++++ b/databases/readers/CEAucd/vtkCEAucdReader.h
+@@ -49,7 +49,7 @@ class vtkCEAucdReader : public vtkUnstructuredGridAlgorithm
+ public:
+ static vtkCEAucdReader *New();
+ vtkTypeMacro(vtkCEAucdReader,vtkUnstructuredGridAlgorithm);
+- void PrintSelf(ostream& os, vtkIndent indent) override;
++ void PrintSelf(std::ostream& os, vtkIndent indent) override;
+
+ // Description:
+ // Specify file name of CEA UCD datafile to read
+@@ -120,7 +120,7 @@ class vtkCEAucdReader : public vtkUnstructuredGridAlgorithm
+ vtkSetStringMacro(ActivePointArray);
+ vtkGetStringMacro(ActivePointArray);
+
+- void SetFileStream( ifstream* istr );
++ void SetFileStream( std::ifstream* istr );
+
+ // Description:
+ // The following methods allow selective reading of solutions fields. by
+@@ -173,7 +173,7 @@ class vtkCEAucdReader : public vtkUnstructuredGridAlgorithm
+ vtkIdType * PointsInMaterial;
+ vtkIdType * CellIndexInMaterial;
+
+- ifstream *FileStream;
++ std::ifstream *FileStream;
+ long GlobalOffset;
+ long FileSize;
+ bool OwnStream;
+diff --git a/databases/readers/Image/vtkStimulateReader.C b/databases/readers/Image/vtkStimulateReader.C
+index be91dc91e..aeec88891 100644
+--- a/databases/readers/Image/vtkStimulateReader.C
++++ b/databases/readers/Image/vtkStimulateReader.C
+@@ -104,7 +104,6 @@ int vtkStimulateReader::OpenFile(void)
+ // Close file from any previous image
+ if (this->File)
+ {
+- this->File->close();
+ delete this->File;
+ this->File = NULL;
+ }
+@@ -122,9 +121,9 @@ int vtkStimulateReader::OpenFile(void)
+ if ( !FileFunctions::VisItStat( sdt_name, &fs) )
+ {
+ #ifdef _WIN32
+- this->File = new ifstream(sdt_name, ios::in | ios::binary);
++ this->File = new std::ifstream(sdt_name, std::ios::in | std::ios::binary);
+ #else
+- this->File = new ifstream(sdt_name, ios::in);
++ this->File = new std::ifstream(sdt_name, std::ios::in);
+ #endif
+ }
+ if (! this->File || this->File->fail())
+@@ -246,7 +245,7 @@ int vtkStimulateReader::CanReadFile(const char* fname)
+ return 0;
+ }
+
+- ifstream sdt_file(sdt_name);
++ std::ifstream sdt_file(sdt_name);
+ if (sdt_file.fail())
+ {
+ vtkErrorMacro(<<"Cannot read file: invalid sdt_file " << sdt_name);
+@@ -266,7 +265,7 @@ bool vtkStimulateReader::ReadSPRFile(const char *spr_name)
+ haveReadSPRFile = true;
+ validSPRFile = false;
+
+- ifstream spr_file(spr_name);
++ std::ifstream spr_file(spr_name);
+ if (spr_file.fail())
+ {
+ vtkErrorMacro(<<"Unable to read SPR file " << spr_name << ": file "
diff --git a/ports/paraview/cgns.patch b/ports/paraview/cgns.patch
new file mode 100644
index 000000000..2ebb05e1b
--- /dev/null
+++ b/ports/paraview/cgns.patch
@@ -0,0 +1,29 @@
+diff --git a/CMake/FindCGNS.cmake b/CMake/FindCGNS.cmake
+index 005f1afd9..a45103a9f 100644
+--- a/CMake/FindCGNS.cmake
++++ b/CMake/FindCGNS.cmake
+@@ -16,7 +16,7 @@ mark_as_advanced(CGNS_INCLUDE_DIR)
+
+ find_library(CGNS_LIBRARY
+ NAMES
+- cgns
++ cgnsdll cgns
+ DOC "CGNS library")
+ mark_as_advanced(CGNS_LIBRARY)
+
+@@ -45,4 +45,15 @@ if (CGNS_FOUND)
+ IMPORTED_LOCATION "${CGNS_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${CGNS_INCLUDE_DIR}")
+ endif ()
++ include(CMakeFindDependencyMacro)
++ find_dependency(hdf5 CONFIG)
++ if(TARGET hdf5::hdf5-shared)
++ set_property(TARGET CGNS::CGNS APPEND PROPERTY
++ INTERFACE_LINK_LIBRARIES "hdf5::hdf5-shared")
++ elseif(TARGET hdf5::hdf5-static)
++ set_property(TARGET CGNS::CGNS APPEND PROPERTY
++ INTERFACE_LINK_LIBRARIES "hdf5::hdf5-static")
++ else()
++ message(FATAL_ERROR "No HDF5 target to link cgns against")
++ endif()
+ endif ()
diff --git a/ports/paraview/paraview_build.patch b/ports/paraview/paraview_build.patch
new file mode 100644
index 000000000..042bbe6b5
--- /dev/null
+++ b/ports/paraview/paraview_build.patch
@@ -0,0 +1,745 @@
+diff --git a/CMake/ParaViewClient.cmake b/CMake/ParaViewClient.cmake
+index 7dadad937..dd271739d 100644
+--- a/CMake/ParaViewClient.cmake
++++ b/CMake/ParaViewClient.cmake
+@@ -516,6 +516,7 @@ function (paraview_client_documentation)
+ NAMES xmlpatterns-qt5 xmlpatterns
+ HINTS "${Qt5_DIR}/../../../bin"
+ "${Qt5_DIR}/../../../libexec/qt5/bin"
++ "${Qt5_DIR}/../../../tools/qt5/bin"
+ DOC "Path to xmlpatterns")
+ mark_as_advanced(qt_xmlpatterns_executable)
+
+diff --git a/CMake/ParaViewOptions.cmake b/CMake/ParaViewOptions.cmake
+index 5e402e9fc..ccb553e8f 100644
+--- a/CMake/ParaViewOptions.cmake
++++ b/CMake/ParaViewOptions.cmake
+@@ -88,7 +88,7 @@ endif()
+ #========================================================================
+
+ # XXX(VTK): External VTK is not yet actually supported.
+-if (FALSE)
++if (TRUE)
+ option(PARAVIEW_USE_EXTERNAL_VTK "Use an external VTK." OFF)
+ mark_as_advanced(PARAVIEW_USE_EXTERNAL_VTK)
+ else ()
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index d7e8f1dfe..8b0e7a8c6 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -73,7 +73,9 @@ if (NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
+ endif ()
+
+ set(paraview_cmake_dir "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
+-set(vtk_cmake_dir "${CMAKE_CURRENT_SOURCE_DIR}/VTK/CMake")
++set(vtk_cmake_dir "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/share/vtk")
++string(REPLACE "/debug" "" vtk_cmake_dir "${vtk_cmake_dir}")
++message(STATUS "vtk_cmake_dir:${vtk_cmake_dir}")
+ list(APPEND CMAKE_MODULE_PATH
+ "${paraview_cmake_dir}"
+ "${vtk_cmake_dir}")
+@@ -214,6 +216,7 @@ if (NOT WIN32)
+ endif ()
+ endif ()
+
++message(STATUS "PARAVIEW_USE_EXTERNAL_VTK:${PARAVIEW_USE_EXTERNAL_VTK}")
+ if (PARAVIEW_USE_EXTERNAL_VTK)
+ find_package(VTK REQUIRED)
+ else ()
+@@ -369,9 +372,73 @@ endif ()
+
+ if (PARAVIEW_USE_EXTERNAL_VTK)
+ if (paraview_required_modules OR paraview_unrecognized_modules)
+- message(FATAL_ERROR
+- "The following modules were requested or required, but not found: "
+- "${paraview_required_modules};${paraview_unrecognized_modules}.")
++ message(STATUS "REQUIRED:${paraview_required_modules}")
++ foreach(mod ${paraview_required_modules})
++ if(NOT TARGET ${mod})
++ message(STATUS "REQUIRED TARGET not defined: ${mod}")
++ list(APPEND modules_notarget ${mod})
++ endif()
++ if(${mod} MATCHES "VTK::") # For better debugging
++ message(STATUS "VTK TARGET found: ${mod}")
++ list(APPEND vtk_modules ${mod})
++ endif()
++ endforeach()
++ foreach(mod ${paraview_unrecognized_modules})
++ if(NOT TARGET ${mod})
++ message(STATUS "UNREC TARGET not defined: ${mod}")
++ list(FIND paraview_rejected_modules ${mod} _found_mod)
++ if(_found_mod GREATER_EQUAL 0)
++ message(STATUS "MODULE ${mod} not necessary; Removing from unrecognized")
++ list(APPEND _to_remove ${mod})
++ endif()
++ else()
++ list(APPEND _to_remove ${mod})
++ #list(APPEND vtk_modules ${mod}) #probably do not need to add unrecognized_modules to the wrapper
++ endif()
++ endforeach()
++ message(STATUS "UNRECOGNIZED:${paraview_unrecognized_modules}")
++ list(REMOVE_ITEM paraview_unrecognized_modules ${_to_remove})
++ message(STATUS "REJECTED MODULES: ${paraview_rejected_modules}")
++ message(STATUS "UNRECOGNIZED WITHOUT REJECTED AND KNOWN TARGETS: ${paraview_unrecognized_modules}")
++ message(STATUS "ALL PROVIDED MODULES: ${paraview_modules}")
++ set(_unnecessary_moduls ${paraview_modules})
++ list(REMOVE_ITEM _unnecessary_moduls ${paraview_required_modules})
++ message(STATUS "Unnecessary MODULES: ${_unnecessary_moduls}")
++ if(modules_notarget)
++ message(FATAL_ERROR
++ "The following modules were requested or required, but not found: "
++ "${modules_notarget}")
++ endif()
++ list(REMOVE_DUPLICATES vtk_modules)
++ macro(search_dependent_targets)
++ set(vtk_mod_dep_list)
++ foreach(vtk_targ ${ARGN})
++ get_target_property(vtk_mod_dep ${vtk_targ} "INTERFACE_vtk_module_depends")
++ if(vtk_mod_dep)
++ list(APPEND vtk_mod_dep_list ${vtk_mod_dep})
++ endif()
++ get_target_property(vtk_mod_pdep ${vtk_targ} "INTERFACE_vtk_module_private_depends")
++ if(vtk_mod_pdep)
++ list(APPEND vtk_mod_dep_list ${vtk_mod_pdep})
++ endif()
++ get_target_property(vtk_mod_odep ${vtk_targ} "INTERFACE_vtk_module_opional_depends")
++ if(vtk_mod_odep)
++ list(APPEND vtk_mod_dep_list ${vtk_mod_odep})
++ endif()
++ if(vtk_mod_dep_list)
++ message(STATUS "Target ${vtk_targ} depends on ${vtk_mod_dep_list}")
++ list(REMOVE_ITEM vtk_mod_dep_list ${vtk_modules})
++ if(vtk_mod_dep_list)
++ message(STATUS "Newly discovered modules: ${vtk_mod_dep_list}")
++ list(APPEND vtk_modules ${vtk_mod_dep_list})
++ search_dependent_targets(${vtk_mod_dep_list})
++ else()
++ message(STATUS "No new modules discovered!")
++ endif()
++ endif()
++ endforeach()
++ endmacro()
++ search_dependent_targets(${vtk_modules})
+ endif ()
+
+ if (PARAVIEW_USE_PYTHON)
+@@ -498,7 +565,7 @@ else ()
+ TEST_INPUT_DATA_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/VTK/Testing"
+ TEST_OUTPUT_DATA_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/ExternalData/VTK/Testing")
+
+- if (NOT PARAVIEW_USE_EXTERNAL_VTK AND PARAVIEW_INSTALL_DEVELOPMENT_FILES)
++ if (PARAVIEW_INSTALL_DEVELOPMENT_FILES)
+ set(vtk_cmake_dir
+ "${CMAKE_CURRENT_SOURCE_DIR}/VTK/CMake")
+ set(vtk_cmake_destination
+@@ -543,9 +610,11 @@ vtk_module_build(
+ TEST_OUTPUT_DATA_DIRECTORY "${paraview_test_data_directory_output}")
+
+ include(vtkModuleJson)
+-vtk_module_json(
+- MODULES "${vtk_modules}"
+- OUTPUT "vtk-modules.json")
++if(NOT PARAVIEW_USE_EXTERNAL_VTK)
++ vtk_module_json(
++ MODULES "${vtk_modules}"
++ OUTPUT "vtk-modules.json")
++endif()
+ vtk_module_json(
+ MODULES "${paraview_modules}"
+ OUTPUT "paraview-modules.json")
+diff --git a/Plugins/AnalyzeNIfTIReaderWriter/NIfTIIO/vtkAnalyzeReader.cxx b/Plugins/AnalyzeNIfTIReaderWriter/NIfTIIO/vtkAnalyzeReader.cxx
+index be318d6d4..80187dd69 100644
+--- a/Plugins/AnalyzeNIfTIReaderWriter/NIfTIIO/vtkAnalyzeReader.cxx
++++ b/Plugins/AnalyzeNIfTIReaderWriter/NIfTIIO/vtkAnalyzeReader.cxx
+@@ -1381,8 +1381,8 @@ int vtkAnalyzeReader::CanReadFile(const char* fname)
+ return false;
+ }
+
+- ifstream local_InputStream;
+- local_InputStream.open(HeaderFileName.c_str(), ios::in | ios::binary);
++ std::ifstream local_InputStream;
++ local_InputStream.open(HeaderFileName.c_str(), std::ios::in | std::ios::binary);
+ if (local_InputStream.fail())
+ {
+ return false;
+diff --git a/Plugins/AnalyzeNIfTIReaderWriter/NIfTIIO/vtkNIfTIReader.cxx b/Plugins/AnalyzeNIfTIReaderWriter/NIfTIIO/vtkNIfTIReader.cxx
+index e7df3dacc..1bae5ae22 100644
+--- a/Plugins/AnalyzeNIfTIReaderWriter/NIfTIIO/vtkNIfTIReader.cxx
++++ b/Plugins/AnalyzeNIfTIReaderWriter/NIfTIIO/vtkNIfTIReader.cxx
+@@ -1277,8 +1277,8 @@ int vtkNIfTIReader::CanReadFile(const char* fname)
+ return false;
+ }
+
+- ifstream local_InputStream;
+- local_InputStream.open(HeaderFileName.c_str(), ios::in | ios::binary);
++ std::ifstream local_InputStream;
++ local_InputStream.open(HeaderFileName.c_str(), std::ios::in | std::ios::binary);
+ if (local_InputStream.fail())
+ {
+ return false;
+diff --git a/Qt/Components/pqCustomFilterManager.cxx b/Qt/Components/pqCustomFilterManager.cxx
+index 4c6911ac8..b04828168 100644
+--- a/Qt/Components/pqCustomFilterManager.cxx
++++ b/Qt/Components/pqCustomFilterManager.cxx
+@@ -214,7 +214,7 @@ void pqCustomFilterManager::exportSelected(const QStringList& files)
+ QStringList::ConstIterator jter = files.begin();
+ for (; jter != files.end(); ++jter)
+ {
+- ofstream os((*jter).toLocal8Bit().data(), ios::out);
++ std::ofstream os((*jter).toLocal8Bit().data(), std::ios::out);
+ root->PrintXML(os, vtkIndent());
+ }
+
+diff --git a/Qt/Components/pqPresetDialog.cxx b/Qt/Components/pqPresetDialog.cxx
+index 411480e3e..af0195763 100644
+--- a/Qt/Components/pqPresetDialog.cxx
++++ b/Qt/Components/pqPresetDialog.cxx
+@@ -952,7 +952,7 @@ void pqPresetDialog::exportPresets()
+ }
+ assert(presetCollection.size() > 0);
+
+- ofstream outfs;
++ std::ofstream outfs;
+ outfs.open(filename.toStdString().c_str());
+ if (!outfs.is_open())
+ {
+diff --git a/Qt/Core/pqCoreTestUtility.cxx b/Qt/Core/pqCoreTestUtility.cxx
+index 95c7df5b6..00f61e2f8 100644
+--- a/Qt/Core/pqCoreTestUtility.cxx
++++ b/Qt/Core/pqCoreTestUtility.cxx
+@@ -45,7 +45,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include "QtTestingConfigure.h"
+
+ #include "QVTKOpenGLNativeWidget.h"
+-#include "QVTKOpenGLWidget.h"
++#include "QVTKOpenGLStereoWidget.h"
+ #include "pqApplicationCore.h"
+ #include "pqCollaborationEventPlayer.h"
+ #include "pqColorButtonEventPlayer.h"
+@@ -309,13 +309,13 @@ bool pqCoreTestUtility::CompareImage(QWidget* widget, const QString& referenceIm
+ }
+
+ // try to recover the render window directly
+- QVTKOpenGLWidget* glWidget = qobject_cast<QVTKOpenGLWidget*>(widget);
++ QVTKOpenGLStereoWidget* glWidget = qobject_cast<QVTKOpenGLStereoWidget*>(widget);
+ if (glWidget)
+ {
+ vtkRenderWindow* rw = glWidget->renderWindow();
+ if (rw)
+ {
+- cout << "Using QVTKOpenGLWidget RenderWindow API for capture" << endl;
++ cout << "Using QVTKOpenGLStereoWidget RenderWindow API for capture" << endl;
+ return pqCoreTestUtility::CompareImage(
+ rw, referenceImage, threshold, std::cerr, tempDirectory, size);
+ }
+diff --git a/Qt/Core/pqQVTKWidgetBase.h b/Qt/Core/pqQVTKWidgetBase.h
+index 5f11871de..c6b7dbcbb 100644
+--- a/Qt/Core/pqQVTKWidgetBase.h
++++ b/Qt/Core/pqQVTKWidgetBase.h
+@@ -43,8 +43,8 @@ using pqQVTKWidgetBase = QVTKOpenGLNativeWidget;
+ #define PARAVIEW_USING_QVTKOPENGLNATIVEWIDGET 1
+ #define PARAVIEW_USING_QVTKOPENGLWIDGET 0
+ #else
+-#include "QVTKOpenGLWidget.h"
+-using pqQVTKWidgetBase = QVTKOpenGLWidget;
++#include "QVTKOpenGLStereoWidget.h"
++using pqQVTKWidgetBase = QVTKOpenGLStereoWidget;
+ #define PARAVIEW_USING_QVTKOPENGLNATIVEWIDGET 0
+ #define PARAVIEW_USING_QVTKOPENGLWIDGET 1
+ #endif
+diff --git a/Qt/Core/pqQVTKWidgetEventPlayer.cxx b/Qt/Core/pqQVTKWidgetEventPlayer.cxx
+index 105796d8a..63c0bde5f 100644
+--- a/Qt/Core/pqQVTKWidgetEventPlayer.cxx
++++ b/Qt/Core/pqQVTKWidgetEventPlayer.cxx
+@@ -37,7 +37,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include <QtDebug>
+
+ #include "QVTKOpenGLNativeWidget.h"
+-#include "QVTKOpenGLWidget.h"
++#include "QVTKOpenGLStereoWidget.h"
+ #include "QVTKOpenGLWindow.h"
+ #include "pqEventDispatcher.h"
+
+@@ -49,7 +49,7 @@ pqQVTKWidgetEventPlayer::pqQVTKWidgetEventPlayer(QObject* p)
+ bool pqQVTKWidgetEventPlayer::playEvent(
+ QObject* Object, const QString& Command, const QString& Arguments, bool& Error)
+ {
+- QVTKOpenGLWidget* qvtkWidget = qobject_cast<QVTKOpenGLWidget*>(Object);
++ QVTKOpenGLStereoWidget* qvtkWidget = qobject_cast<QVTKOpenGLStereoWidget*>(Object);
+ QVTKOpenGLNativeWidget* qvtkNativeWidget = qobject_cast<QVTKOpenGLNativeWidget*>(Object);
+ if (qvtkWidget || qvtkNativeWidget)
+ {
+@@ -92,7 +92,7 @@ bool pqQVTKWidgetEventPlayer::playEvent(
+
+ if (qvtkWidget != nullptr)
+ {
+- // Due to QTBUG-61836 (see QVTKOpenGLWidget::testingEvent()), events should
++ // Due to QTBUG-61836 (see QVTKOpenGLStereoWidget::testingEvent()), events should
+ // be propagated back to the internal QVTKOpenGLWindow when being fired
+ // explicitly on the widget instance. We have to use a custom event
+ // callback in this case to ensure that events are passed to the window.
+diff --git a/Qt/Core/pqQVTKWidgetEventTranslator.cxx b/Qt/Core/pqQVTKWidgetEventTranslator.cxx
+index f79d5c4e5..77950a0d1 100644
+--- a/Qt/Core/pqQVTKWidgetEventTranslator.cxx
++++ b/Qt/Core/pqQVTKWidgetEventTranslator.cxx
+@@ -44,7 +44,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #include <QMouseEvent>
+
+ #include "QVTKOpenGLNativeWidget.h"
+-#include "QVTKOpenGLWidget.h"
++#include "QVTKOpenGLStereoWidget.h"
+ #include "QVTKOpenGLWindow.h"
+
+ pqQVTKWidgetEventTranslator::pqQVTKWidgetEventTranslator(QObject* p)
+@@ -70,7 +70,7 @@ bool pqQVTKWidgetEventTranslator::translateEvent(
+ // Look for a render window in the possible widget types.
+ vtkRenderWindow* rw = nullptr;
+
+- if (QVTKOpenGLWidget* const qvtkWidget = qobject_cast<QVTKOpenGLWidget*>(Object))
++ if (QVTKOpenGLStereoWidget* const qvtkWidget = qobject_cast<QVTKOpenGLStereoWidget*>(Object))
+ {
+ rw = qvtkWidget->embeddedOpenGLWindow() ? qvtkWidget->renderWindow() : nullptr;
+ }
+diff --git a/Remoting/ClientServerStream/vtkClientServerInterpreter.cxx b/Remoting/ClientServerStream/vtkClientServerInterpreter.cxx
+index 487b5ad60..c6c24d81d 100644
+--- a/Remoting/ClientServerStream/vtkClientServerInterpreter.cxx
++++ b/Remoting/ClientServerStream/vtkClientServerInterpreter.cxx
+@@ -184,7 +184,7 @@ void vtkClientServerInterpreter::SetLogFile(const char* name)
+ // If a non-empty name was given, open a new log file.
+ if (name && name[0])
+ {
+- this->LogFileStream = new ofstream(name);
++ this->LogFileStream = new std::ofstream(name);
+ if (this->LogFileStream && *this->LogFileStream)
+ {
+ this->LogStream = this->LogFileStream;
+diff --git a/Remoting/ClientServerStream/vtkClientServerInterpreter.h b/Remoting/ClientServerStream/vtkClientServerInterpreter.h
+index 1eafb27f3..1371ef727 100644
+--- a/Remoting/ClientServerStream/vtkClientServerInterpreter.h
++++ b/Remoting/ClientServerStream/vtkClientServerInterpreter.h
+@@ -195,8 +195,8 @@ protected:
+ ~vtkClientServerInterpreter() override;
+
+ // A stream to which a log is written.
+- ostream* LogStream;
+- ofstream* LogFileStream;
++ std::ostream* LogStream;
++ std::ofstream* LogFileStream;
+
+ // Internal message processing functions.
+ int ProcessCommandNew(const vtkClientServerStream& css, int midx);
+diff --git a/Remoting/Core/vtkPVPluginLoader.cxx b/Remoting/Core/vtkPVPluginLoader.cxx
+index 5b04b2f00..447d9d63a 100644
+--- a/Remoting/Core/vtkPVPluginLoader.cxx
++++ b/Remoting/Core/vtkPVPluginLoader.cxx
+@@ -73,12 +73,12 @@ public:
+ vtkPVXMLOnlyPlugin* instance = new vtkPVXMLOnlyPlugin();
+ instance->PluginName = vtksys::SystemTools::GetFilenameWithoutExtension(xmlfile);
+
+- ifstream is;
+- is.open(xmlfile, ios::binary);
++ std::ifstream is;
++ is.open(xmlfile, std::ios::binary);
+ // get length of file:
+- is.seekg(0, ios::end);
++ is.seekg(0, std::ios::end);
+ size_t length = is.tellg();
+- is.seekg(0, ios::beg);
++ is.seekg(0, std::ios::beg);
+
+ // allocate memory:
+ char* buffer = new char[length + 1];
+diff --git a/Remoting/ServerManager/vtkPVSessionCore.cxx b/Remoting/ServerManager/vtkPVSessionCore.cxx
+index 8d36fad37..6ff043967 100644
+--- a/Remoting/ServerManager/vtkPVSessionCore.cxx
++++ b/Remoting/ServerManager/vtkPVSessionCore.cxx
+@@ -293,7 +293,7 @@ vtkPVSessionCore::vtkPVSessionCore()
+ {
+ filename << this->ParallelController->GetLocalProcessId();
+ }
+- this->LogStream = new ofstream(filename.str().c_str());
++ this->LogStream = new std::ofstream(filename.str().c_str());
+ LOG("Log for " << options->GetArgv0() << " (" << this->ParallelController->GetLocalProcessId()
+ << ")");
+ }
+diff --git a/Remoting/ServerManager/vtkSMSessionProxyManager.cxx b/Remoting/ServerManager/vtkSMSessionProxyManager.cxx
+index 8525457e5..05bdfd723 100644
+--- a/Remoting/ServerManager/vtkSMSessionProxyManager.cxx
++++ b/Remoting/ServerManager/vtkSMSessionProxyManager.cxx
+@@ -1261,7 +1261,7 @@ void vtkSMSessionProxyManager::LoadXMLState(
+ bool vtkSMSessionProxyManager::SaveXMLState(const char* filename)
+ {
+ vtkPVXMLElement* rootElement = this->SaveXMLState();
+- ofstream os(filename, ios::out);
++ std::ofstream os(filename, std::ios::out);
+ if (!os.is_open())
+ {
+ return false;
+diff --git a/Remoting/Views/vtkPVRenderView.cxx b/Remoting/Views/vtkPVRenderView.cxx
+index de9c50ab3..d7f739192 100644
+--- a/Remoting/Views/vtkPVRenderView.cxx
++++ b/Remoting/Views/vtkPVRenderView.cxx
+@@ -2514,11 +2514,11 @@ void vtkPVRenderView::UpdateSkybox()
+ this->CubeMap->SetInputTexture(vtkOpenGLTexture::SafeDownCast(texture));
+ this->CubeMap->InterpolateOn();
+ this->GetRenderer()->AddActor(this->Skybox);
+- this->GetRenderer()->SetEnvironmentCubeMap(this->CubeMap, true);
++ this->GetRenderer()->SetEnvironmentTexture(this->CubeMap, true);
+ }
+ else
+ {
+- this->GetRenderer()->SetEnvironmentCubeMap(nullptr);
++ this->GetRenderer()->SetEnvironmentTexture(nullptr);
+ }
+ }
+
+diff --git a/Remoting/Views/vtkSMTransferFunctionPresets.cxx b/Remoting/Views/vtkSMTransferFunctionPresets.cxx
+index 1151ce58f..21e5a28b7 100644
+--- a/Remoting/Views/vtkSMTransferFunctionPresets.cxx
++++ b/Remoting/Views/vtkSMTransferFunctionPresets.cxx
+@@ -142,7 +142,7 @@ public:
+ Json::CharReaderBuilder builder;
+ builder["collectComments"] = false;
+ Json::Value root;
+- ifstream file;
++ std::ifstream file;
+ file.open(filename);
+ if (!file)
+ {
+@@ -456,7 +456,7 @@ bool vtkSMTransferFunctionPresets::ImportPresets(const char* filename)
+ if (vtksys::SystemTools::LowerCase(vtksys::SystemTools::GetFilenameLastExtension(filename)) ==
+ ".xml")
+ {
+- ifstream in(filename);
++ std::ifstream in(filename);
+ if (in)
+ {
+ std::ostringstream contents;
+diff --git a/Remoting/Views/vtkSMTransferFunctionProxy.cxx b/Remoting/Views/vtkSMTransferFunctionProxy.cxx
+index efa8e9341..2023ca41b 100644
+--- a/Remoting/Views/vtkSMTransferFunctionProxy.cxx
++++ b/Remoting/Views/vtkSMTransferFunctionProxy.cxx
+@@ -273,7 +273,7 @@ bool vtkSMTransferFunctionProxy::ExportTransferFunction(
+
+ exportCollection.append(transferFunction);
+
+- ofstream outfs;
++ std::ofstream outfs;
+ outfs.open(filename);
+ if (!outfs.is_open())
+ {
+@@ -1370,7 +1370,7 @@ bool vtkSMTransferFunctionProxy::ConvertLegacyColorMapsToJSON(
+ return false;
+ }
+
+- ofstream file;
++ std::ofstream file;
+ file.open(outjsonfile);
+ if (file)
+ {
+diff --git a/ThirdParty/protobuf/CMakeLists.txt b/ThirdParty/protobuf/CMakeLists.txt
+index 0502ca2d9..25b2e778f 100644
+--- a/ThirdParty/protobuf/CMakeLists.txt
++++ b/ThirdParty/protobuf/CMakeLists.txt
+@@ -42,7 +42,8 @@ vtk_module_third_party(
+ PACKAGE Protobuf
+ VERSION "3.4"
+ TARGETS protobuf::libprotobuf
+- STANDARD_INCLUDE_DIRS)
++ STANDARD_INCLUDE_DIRS
++ CONFIG_MODE)
+
+ if (VTK_MODULE_USE_EXTERNAL_ParaView_protobuf)
+ # promote protobuf::protoc to GLOBAL to allow to call protobuf_generate from other directories
+diff --git a/VTKExtensions/CGNSReader/vtkFileSeriesHelper.cxx b/VTKExtensions/CGNSReader/vtkFileSeriesHelper.cxx
+index 66a7d6972..9d314b8ce 100644
+--- a/VTKExtensions/CGNSReader/vtkFileSeriesHelper.cxx
++++ b/VTKExtensions/CGNSReader/vtkFileSeriesHelper.cxx
+@@ -211,7 +211,7 @@ bool vtkFileSeriesHelper::ReadMetaFile(const char* metafilename)
+ }
+
+ // Open the metafile.
+- ifstream metafile(metafilename);
++ std::ifstream metafile(metafilename);
+ if (metafile.bad())
+ {
+ // vtkErrorMacro("Failed to open meta-file: " << metafilename);
+diff --git a/VTKExtensions/IOCore/vtkCSVWriter.cxx b/VTKExtensions/IOCore/vtkCSVWriter.cxx
+index 11f777c1a..a1773600c 100644
+--- a/VTKExtensions/IOCore/vtkCSVWriter.cxx
++++ b/VTKExtensions/IOCore/vtkCSVWriter.cxx
+@@ -97,7 +97,7 @@ namespace
+ //-----------------------------------------------------------------------------
+ template <class iterT>
+ void vtkCSVWriterGetDataString(
+- iterT* iter, vtkIdType tupleIndex, ofstream& stream, vtkCSVWriter* writer, bool* first)
++ iterT* iter, vtkIdType tupleIndex, std::ofstream& stream, vtkCSVWriter* writer, bool* first)
+ {
+ int numComps = iter->GetNumberOfComponents();
+ vtkIdType index = tupleIndex * numComps;
+@@ -118,7 +118,7 @@ void vtkCSVWriterGetDataString(
+ //-----------------------------------------------------------------------------
+ template <>
+ void vtkCSVWriterGetDataString(vtkArrayIteratorTemplate<vtkStdString>* iter, vtkIdType tupleIndex,
+- ofstream& stream, vtkCSVWriter* writer, bool* first)
++ std::ofstream& stream, vtkCSVWriter* writer, bool* first)
+ {
+ int numComps = iter->GetNumberOfComponents();
+ vtkIdType index = tupleIndex * numComps;
+@@ -139,7 +139,7 @@ void vtkCSVWriterGetDataString(vtkArrayIteratorTemplate<vtkStdString>* iter, vtk
+ //-----------------------------------------------------------------------------
+ template <>
+ void vtkCSVWriterGetDataString(vtkArrayIteratorTemplate<char>* iter, vtkIdType tupleIndex,
+- ofstream& stream, vtkCSVWriter* writer, bool* first)
++ std::ofstream& stream, vtkCSVWriter* writer, bool* first)
+ {
+ int numComps = iter->GetNumberOfComponents();
+ vtkIdType index = tupleIndex * numComps;
+@@ -160,7 +160,7 @@ void vtkCSVWriterGetDataString(vtkArrayIteratorTemplate<char>* iter, vtkIdType t
+ //-----------------------------------------------------------------------------
+ template <>
+ void vtkCSVWriterGetDataString(vtkArrayIteratorTemplate<unsigned char>* iter, vtkIdType tupleIndex,
+- ofstream& stream, vtkCSVWriter* writer, bool* first)
++ std::ofstream& stream, vtkCSVWriter* writer, bool* first)
+ {
+ int numComps = iter->GetNumberOfComponents();
+ vtkIdType index = tupleIndex * numComps;
+@@ -190,7 +190,7 @@ void vtkCSVWriterGetDataString(vtkArrayIteratorTemplate<unsigned char>* iter, vt
+
+ class vtkCSVWriter::CSVFile
+ {
+- ofstream Stream;
++ std::ofstream Stream;
+ std::vector<std::pair<std::string, int> > ColumnInfo;
+ double Time = vtkMath::Nan();
+
+diff --git a/VTKExtensions/IOCore/vtkFileSeriesReader.cxx b/VTKExtensions/IOCore/vtkFileSeriesReader.cxx
+index f2448f2b8..7d84bc1ab 100644
+--- a/VTKExtensions/IOCore/vtkFileSeriesReader.cxx
++++ b/VTKExtensions/IOCore/vtkFileSeriesReader.cxx
+@@ -783,7 +783,7 @@ int vtkFileSeriesReader::ReadMetaDataFile(const char* metafilename, vtkStringArr
+ std::vector<double>& timeValues, int maxFilesToRead /*= VTK_INT_MAX*/)
+ {
+ // Open the metafile.
+- ifstream metafile(metafilename);
++ std::ifstream metafile(metafilename);
+ if (metafile.bad())
+ {
+ return 0;
+diff --git a/VTKExtensions/IOEnSight/vtkPEnSightGoldBinaryReader.cxx b/VTKExtensions/IOEnSight/vtkPEnSightGoldBinaryReader.cxx
+index 8370e21e3..ff90a0421 100644
+--- a/VTKExtensions/IOEnSight/vtkPEnSightGoldBinaryReader.cxx
++++ b/VTKExtensions/IOEnSight/vtkPEnSightGoldBinaryReader.cxx
+@@ -50,7 +50,6 @@ vtkPEnSightGoldBinaryReader::~vtkPEnSightGoldBinaryReader()
+ {
+ if (this->IFile)
+ {
+- this->IFile->close();
+ delete this->IFile;
+ this->IFile = NULL;
+ }
+@@ -72,7 +71,6 @@ int vtkPEnSightGoldBinaryReader::OpenFile(const char* filename)
+ // Close file from any previous image
+ if (this->IFile)
+ {
+- this->IFile->close();
+ delete this->IFile;
+ this->IFile = NULL;
+ }
+@@ -86,9 +84,9 @@ int vtkPEnSightGoldBinaryReader::OpenFile(const char* filename)
+ this->FileSize = (long)(fs.st_size);
+
+ #ifdef _WIN32
+- this->IFile = new ifstream(filename, ios::in | ios::binary);
++ this->IFile = new std::ifstream(filename, std::ios::in | std::ios::binary);
+ #else
+- this->IFile = new ifstream(filename, ios::in);
++ this->IFile = new std::ifstream(filename, std::ios::in);
+ #endif
+ }
+ else
+diff --git a/VTKExtensions/IOEnSight/vtkPEnSightGoldBinaryReader.h b/VTKExtensions/IOEnSight/vtkPEnSightGoldBinaryReader.h
+index c5a5551d5..9c871e4a1 100644
+--- a/VTKExtensions/IOEnSight/vtkPEnSightGoldBinaryReader.h
++++ b/VTKExtensions/IOEnSight/vtkPEnSightGoldBinaryReader.h
+@@ -204,7 +204,7 @@ protected:
+ int ElementIdsListed;
+ int Fortran;
+
+- ifstream* IFile;
++ std::ifstream* IFile;
+ // The size of the file could be used to choose byte order.
+ long FileSize;
+
+diff --git a/VTKExtensions/IOEnSight/vtkPEnSightGoldReader.cxx b/VTKExtensions/IOEnSight/vtkPEnSightGoldReader.cxx
+index b433bc57a..b5cdc2672 100644
+--- a/VTKExtensions/IOEnSight/vtkPEnSightGoldReader.cxx
++++ b/VTKExtensions/IOEnSight/vtkPEnSightGoldReader.cxx
+@@ -91,7 +91,7 @@ int vtkPEnSightGoldReader::ReadGeometryFile(
+
+ // Opening the text file as binary. If not, the reader fails to read
+ // files with Unix line endings on Windows machines.
+- this->IS = new ifstream(sfilename.c_str(), ios::in | ios::binary);
++ this->IS = new std::ifstream(sfilename.c_str(), std::ios::in | std::ios::binary);
+ if (this->IS->fail())
+ {
+ vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+@@ -291,7 +291,7 @@ int vtkPEnSightGoldReader::ReadMeasuredGeometryFile(
+ sfilename = fileName;
+ }
+
+- this->IS = new ifstream(sfilename.c_str(), ios::in | ios::binary);
++ this->IS = new std::ifstream(sfilename.c_str(), std::ios::in | std::ios::binary);
+ if (this->IS->fail())
+ {
+ vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+@@ -455,7 +455,7 @@ int vtkPEnSightGoldReader::ReadScalarsPerNode(const char* fileName, const char*
+ sfilename = fileName;
+ }
+
+- this->IS = new ifstream(sfilename.c_str(), ios::in | ios::binary);
++ this->IS = new std::ifstream(sfilename.c_str(), std::ios::in | std::ios::binary);
+ if (this->IS->fail())
+ {
+ vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+@@ -675,7 +675,7 @@ int vtkPEnSightGoldReader::ReadVectorsPerNode(const char* fileName, const char*
+ sfilename = fileName;
+ }
+
+- this->IS = new ifstream(sfilename.c_str(), ios::in | ios::binary);
++ this->IS = new std::ifstream(sfilename.c_str(), std::ios::in | std::ios::binary);
+ if (this->IS->fail())
+ {
+ vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+@@ -854,7 +854,7 @@ int vtkPEnSightGoldReader::ReadTensorsPerNode(const char* fileName, const char*
+ sfilename = fileName;
+ }
+
+- this->IS = new ifstream(sfilename.c_str(), ios::in | ios::binary);
++ this->IS = new std::ifstream(sfilename.c_str(), std::ios::in | std::ios::binary);
+ if (this->IS->fail())
+ {
+ vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+@@ -980,7 +980,7 @@ int vtkPEnSightGoldReader::ReadScalarsPerElement(const char* fileName, const cha
+ sfilename = fileName;
+ }
+
+- this->IS = new ifstream(sfilename.c_str(), ios::in | ios::binary);
++ this->IS = new std::ifstream(sfilename.c_str(), std::ios::in | std::ios::binary);
+ if (this->IS->fail())
+ {
+ vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+@@ -1187,7 +1187,7 @@ int vtkPEnSightGoldReader::ReadVectorsPerElement(const char* fileName, const cha
+ sfilename = fileName;
+ }
+
+- this->IS = new ifstream(sfilename.c_str(), ios::in | ios::binary);
++ this->IS = new std::ifstream(sfilename.c_str(), std::ios::in | std::ios::binary);
+ if (this->IS->fail())
+ {
+ vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+@@ -1356,7 +1356,7 @@ int vtkPEnSightGoldReader::ReadTensorsPerElement(const char* fileName, const cha
+ sfilename = fileName;
+ }
+
+- this->IS = new ifstream(sfilename.c_str(), ios::in | ios::binary);
++ this->IS = new std::ifstream(sfilename.c_str(), std::ios::in | ios::binary);
+ if (this->IS->fail())
+ {
+ vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+diff --git a/VTKExtensions/IOEnSight/vtkPEnSightReader.cxx b/VTKExtensions/IOEnSight/vtkPEnSightReader.cxx
+index 4f4840f5c..dd515e5ca 100644
+--- a/VTKExtensions/IOEnSight/vtkPEnSightReader.cxx
++++ b/VTKExtensions/IOEnSight/vtkPEnSightReader.cxx
+@@ -1319,7 +1319,7 @@ int vtkPEnSightReader::ReadCaseFile()
+ sfilename = this->CaseFileName;
+ }
+
+- this->IS = new ifstream(sfilename.c_str(), ios::in);
++ this->IS = new std::ifstream(sfilename.c_str(), ios::in);
+ if (this->IS->fail())
+ {
+ vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+diff --git a/VTKExtensions/IOEnSight/vtkPVEnSightMasterServerReader.cxx b/VTKExtensions/IOEnSight/vtkPVEnSightMasterServerReader.cxx
+index 5768eb32f..8bbc582ae 100644
+--- a/VTKExtensions/IOEnSight/vtkPVEnSightMasterServerReader.cxx
++++ b/VTKExtensions/IOEnSight/vtkPVEnSightMasterServerReader.cxx
+@@ -429,7 +429,7 @@ int vtkPVEnSightMasterServerReader::ParseMasterServerFile()
+ }
+
+ // Open the file for reading.
+- ifstream fin(sfilename.c_str(), ios::in);
++ std::ifstream fin(sfilename.c_str(), std::ios::in);
+ if (!fin)
+ {
+ vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+diff --git a/VTKExtensions/IOEnSight/vtkPVEnSightMasterServerReader2.cxx b/VTKExtensions/IOEnSight/vtkPVEnSightMasterServerReader2.cxx
+index e7701d458..a358b9df0 100644
+--- a/VTKExtensions/IOEnSight/vtkPVEnSightMasterServerReader2.cxx
++++ b/VTKExtensions/IOEnSight/vtkPVEnSightMasterServerReader2.cxx
+@@ -512,7 +512,7 @@ int vtkPVEnSightMasterServerReader2::ParseMasterServerFile()
+ }
+
+ // Open the file for reading.
+- ifstream fin(sfilename.c_str(), ios::in);
++ std::ifstream fin(sfilename.c_str(), std::ios::in);
+ if (!fin)
+ {
+ vtkErrorMacro("Unable to open file: " << sfilename.c_str());
+diff --git a/VTKExtensions/IOSPCTH/vtkSpyPlotReader.cxx b/VTKExtensions/IOSPCTH/vtkSpyPlotReader.cxx
+index 1af09a68e..4aba88655 100644
+--- a/VTKExtensions/IOSPCTH/vtkSpyPlotReader.cxx
++++ b/VTKExtensions/IOSPCTH/vtkSpyPlotReader.cxx
+@@ -1289,7 +1289,7 @@ int vtkSpyPlotReader::MergeVectors(vtkDataSetAttributes* da, vtkDataArray* a1, v
+ //-----------------------------------------------------------------------------
+ int vtkSpyPlotReader::CanReadFile(const char* fname)
+ {
+- ifstream ifs(fname, ios::binary | ios::in);
++ std::ifstream ifs(fname, std::ios::binary | std::ios::in);
+ if (!ifs)
+ {
+ return 0;
+diff --git a/VTKExtensions/IOSPCTH/vtkSpyPlotReaderMap.cxx b/VTKExtensions/IOSPCTH/vtkSpyPlotReaderMap.cxx
+index c7e1bac87..157768255 100644
+--- a/VTKExtensions/IOSPCTH/vtkSpyPlotReaderMap.cxx
++++ b/VTKExtensions/IOSPCTH/vtkSpyPlotReaderMap.cxx
+@@ -83,7 +83,7 @@ bool vtkSpyPlotReaderMap::Initialize(const char* filename)
+ {
+ this->Clean(NULL);
+
+- ifstream ifs(filename);
++ std::ifstream ifs(filename);
+ if (!ifs)
+ {
+ vtkGenericWarningMacro("Error opening file " << filename);
+@@ -238,7 +238,7 @@ bool vtkSpyPlotReaderMap::InitializeFromSpyFile(const char* filename)
+ bool vtkSpyPlotReaderMap::InitializeFromCaseFile(const char* filename)
+ {
+ // Setup the filemap and spcth structures
+- ifstream ifs(filename);
++ std::ifstream ifs(filename);
+ if (!ifs)
+ {
+ vtkGenericWarningMacro("Error opening file " << filename);
+diff --git a/VTKExtensions/IOSPCTH/vtkSpyPlotUniReader.cxx b/VTKExtensions/IOSPCTH/vtkSpyPlotUniReader.cxx
+index 7dfe451c9..f4ea91928 100644
+--- a/VTKExtensions/IOSPCTH/vtkSpyPlotUniReader.cxx
++++ b/VTKExtensions/IOSPCTH/vtkSpyPlotUniReader.cxx
+@@ -212,7 +212,7 @@ int vtkSpyPlotUniReader::MakeCurrent()
+ }
+
+ std::vector<unsigned char> arrayBuffer;
+- ifstream ifs(this->FileName, ios::binary | ios::in);
++ std::ifstream ifs(this->FileName, std::ios::binary | std::ios::in);
+ vtkSpyPlotIStream spis;
+ spis.SetStream(&ifs);
+ int dump;
+@@ -1358,7 +1358,7 @@ int vtkSpyPlotUniReader::ReadInformation()
+ vtkErrorMacro("FileName not specified");
+ return 0;
+ }
+- ifstream ifs(this->FileName, ios::binary | ios::in);
++ std::ifstream ifs(this->FileName, std::ios::binary | std::ios::in);
+ if (!ifs)
+ {
+ vtkErrorMacro("Cannot open file: " << this->FileName);
diff --git a/ports/paraview/portfile.cmake b/ports/paraview/portfile.cmake
new file mode 100644
index 000000000..97c6d7670
--- /dev/null
+++ b/ports/paraview/portfile.cmake
@@ -0,0 +1,173 @@
+set(VERSION 5.8)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ "cuda" PARAVIEW_USE_CUDA #untested; probably only affects internal VTK build so it does nothing here
+ "all_modules" PARAVIEW_BUILD_ALL_MODULES #untested
+ "mpi" PARAVIEW_USE_MPI #untested
+ "vtkm" PARAVIEW_USE_VTKM
+ "python" PARAVIEW_USE_PYTHON
+)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO Kitware/ParaView
+ REF 56631fdd9a31f4acdfe5fce2c3be3c4fb6e6800f # v5.8.0
+ SHA512 1cdf4065428debc301c98422233524cdafc843495c54569b0854bf53f6ffeba1e83acf60497450779d493e56051557cd377902325d6ece89ad1b98ae6ba831be
+ HEAD_REF master
+ PATCHES
+ paraview_build.patch
+ remove_duplicates.patch # Missed something in the above patch
+ cgns.patch
+ qt_plugin.patch # Remove with Qt version > 5.14
+ qt_static_plugins.patch # Remove with Qt version > 5.14
+ python_include.patch
+ python_wrapper.patch
+)
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ list(APPEND VisItPatches removedoublesymbols.patch)
+endif()
+
+#The following two dependencies should probably be their own port
+#but require additional patching in paraview to make it work.
+
+#Get VisItBridge Plugin
+vcpkg_from_gitlab(
+ OUT_SOURCE_PATH VISITIT_SOURCE_PATH
+ GITLAB_URL https://gitlab.kitware.com/
+ REPO paraview/visitbridge
+ REF c2605b5c3115bc4869c76a0d8bfdd8939b59f283
+ SHA512 6d2c1d6e1cd345547926938451755e7a8be5dabd89e18a2ceb419db16c5b29f354554a5130eb365b7e522d655370fd4766953813ff530c06e4851fe26104ce58
+ PATCHES
+ VisIt_Build.patch
+ #removeunusedsymbols.patch # These also get remove in master of ParaView
+ ${VisItPatches}
+)
+#Get QtTesting Plugin
+vcpkg_from_gitlab(
+ OUT_SOURCE_PATH QTTESTING_SOURCE_PATH
+ GITLAB_URL https://gitlab.kitware.com/
+ REPO paraview/qttesting
+ REF f2429588feb839e0d8f9f3ee73bfa8a032a3f178
+ SHA512 752b13ff79095a14faa2edc134a64497ff0426da3aa6b1a5951624816fb4f113a26fbe559cedf495ebb775d782c9a1851421a88dd299a79f27cbebb730ea227e
+)
+
+file(COPY ${VISITIT_SOURCE_PATH}/ DESTINATION ${SOURCE_PATH}/Utilities/VisItBridge)
+file(COPY ${QTTESTING_SOURCE_PATH}/ DESTINATION ${SOURCE_PATH}/ThirdParty/QtTesting/vtkqttesting)
+
+if("python" IN_LIST FEATURES)
+ vcpkg_find_acquire_program(PYTHON3)
+ list(APPEND ADDITIONAL_OPTIONS
+ -DPython3_FIND_REGISTRY=NEVER
+ "-DPython3_EXECUTABLE:PATH=${PYTHON3}" # Required by more than one feature
+ )
+
+ #VTK_PYTHON_SITE_PACKAGES_SUFFIX should be set to the install dir of the site-packages
+endif()
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA # Disable this option if project cannot be built with Ninja
+ OPTIONS ${FEATURE_OPTIONS}
+ -DPARAVIEW_BUILD_WITH_EXTERNAL:BOOL=ON
+ -DPARAVIEW_USE_EXTERNAL_VTK:BOOL=ON
+ -DPARAVIEW_ENABLE_VISITBRIDGE:BOOL=ON
+ -DVTK_MODULE_ENABLE_ParaView_qttesting=YES
+ -DPARAVIEW_ENABLE_EMBEDDED_DOCUMENTATION:BOOL=OFF
+ -DPARAVIEW_USE_QTHELP:BOOL=OFF
+
+ #A little bit of help in finding the boost headers
+ "-DBoost_INCLUDE_DIR:PATH=${CURRENT_INSTALLED_DIR}/include"
+
+ # Workarounds for CMake issues
+ -DHAVE_SYS_TYPES_H=0 ## For some strange reason the test first succeeds and then fails the second time around
+ -DWORDS_BIGENDIAN=0 ## Tests fails in VisItCommon.cmake for some unknown reason this is just a workaround since most systems are little endian.
+ ${ADDITIONAL_OPTIONS}
+
+ #-DPARAVIEW_ENABLE_FFMPEG:BOOL=OFF
+)
+if(CMAKE_HOST_UNIX)
+ # ParaView runs Qt tools so LD_LIBRARY_PATH must be set correctly for them to find *.so files
+ set(BACKUP_LD_LIBRARY_PATH $ENV{LD_LIBRARY_PATH})
+ set(ENV{LD_LIBRARY_PATH} "${BACKUP_LD_LIBRARY_PATH}:${CURRENT_INSTALLED_DIR}/lib")
+endif()
+
+vcpkg_install_cmake(ADD_BIN_TO_PATH) # Bin to path required since paraview will use some self build tools
+
+if(CMAKE_HOST_UNIX)
+ set(ENV{LD_LIBRARY_PATH} "${BACKUP_LD_LIBRARY_PATH}")
+endif()
+
+vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/paraview-${VERSION})
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
+
+set(TOOLVER pv${VERSION})
+set(TOOLS paraview
+ pvbatch
+ pvdataserver
+ pvpython
+ pvrenderserver
+ pvserver
+ smTestDriver
+ vtkProcessXML
+ vtkWrapClientServer)
+
+foreach(tool ${TOOLS})
+ # Remove debug tools
+ set(filename ${CURRENT_PACKAGES_DIR}/debug/bin/${tool}${VCPKG_TARGET_EXECUTABLE_SUFFIX})
+ if(EXISTS ${filename})
+ file(REMOVE ${filename})
+ endif()
+ set(filename ${CURRENT_PACKAGES_DIR}/debug/bin/${tool}-${TOOLVER}${VCPKG_TARGET_EXECUTABLE_SUFFIX})
+ if(EXISTS ${filename})
+ file(REMOVE ${filename})
+ endif()
+ set(filename ${CURRENT_PACKAGES_DIR}/debug/bin/${tool}-${TOOLVER}d${VCPKG_TARGET_EXECUTABLE_SUFFIX})
+ if(EXISTS ${filename})
+ file(REMOVE ${filename})
+ endif()
+
+ # Move release tools
+ set(filename ${CURRENT_PACKAGES_DIR}/bin/${tool}${VCPKG_TARGET_EXECUTABLE_SUFFIX})
+ if(EXISTS ${filename})
+ file(INSTALL ${filename} DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
+ file(REMOVE ${filename})
+ endif()
+ set(filename ${CURRENT_PACKAGES_DIR}/bin/${tool}-${TOOLVER}${VCPKG_TARGET_EXECUTABLE_SUFFIX})
+ if(EXISTS ${filename})
+ file(INSTALL ${filename} DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT})
+ file(REMOVE ${filename})
+ endif()
+endforeach()
+vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/${PORT})
+
+# # Handle copyright
+file(INSTALL ${SOURCE_PATH}/Copyright.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/paraview RENAME Copyright.txt) # Which one is the correct one?
+file(INSTALL ${SOURCE_PATH}/License_v1.2.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/paraview RENAME copyright)
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ macro(move_bin_to_lib name)
+ if(EXISTS ${CURRENT_PACKAGES_DIR}/bin/${name})
+ file(RENAME "${CURRENT_PACKAGES_DIR}/bin/${name}" "${CURRENT_PACKAGES_DIR}/lib/${name}")
+ endif()
+ if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/bin/${name})
+ file(RENAME "${CURRENT_PACKAGES_DIR}/debug/bin/${name}" "${CURRENT_PACKAGES_DIR}/debug/lib/${name}")
+ endif()
+ endmacro()
+
+ set(to_move Lib paraview-${VERSION} paraview-config)
+ foreach(name ${to_move})
+ move_bin_to_lib(${name})
+ endforeach()
+
+ file(GLOB_RECURSE cmake_files ${CURRENT_PACKAGES_DIR}/share/${PORT}/*.cmake)
+ foreach(cmake_file ${cmake_files})
+ file(READ "${cmake_file}" _contents)
+ STRING(REPLACE "bin/" "lib/" _contents "${_contents}")
+ file(WRITE "${cmake_file}" "${_contents}")
+ endforeach()
+
+ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin)
+endif() \ No newline at end of file
diff --git a/ports/paraview/python_include.patch b/ports/paraview/python_include.patch
new file mode 100644
index 000000000..42ada661b
--- /dev/null
+++ b/ports/paraview/python_include.patch
@@ -0,0 +1,13 @@
+diff --git a/CMake/ParaViewOptions.cmake b/CMake/ParaViewOptions.cmake
+index 0ecb928e9..5b5459a37 100644
+--- a/CMake/ParaViewOptions.cmake
++++ b/CMake/ParaViewOptions.cmake
+@@ -136,7 +136,7 @@ option(PARAVIEW_ENABLE_RAYTRACING "Build ParaView with OSPray and/or OptiX ray-t
+
+ set(paraview_web_default ON)
+ if (PARAVIEW_USE_PYTHON AND WIN32)
+- include("${CMAKE_CURRENT_SOURCE_DIR}/VTK/CMake/FindPythonModules.cmake")
++ include(FindPythonModules)
+ find_python_module(win32api have_pywin32)
+ set(paraview_web_default "${have_pywin32}")
+ endif ()
diff --git a/ports/paraview/python_wrapper.patch b/ports/paraview/python_wrapper.patch
new file mode 100644
index 000000000..33a70f069
--- /dev/null
+++ b/ports/paraview/python_wrapper.patch
@@ -0,0 +1,19 @@
+diff --git a/CMake/vtkModuleWrapClientServer.cmake b/CMake/vtkModuleWrapClientServer.cmake
+index 3804a24e2..91fdd593a 100644
+--- a/CMake/vtkModuleWrapClientServer.cmake
++++ b/CMake/vtkModuleWrapClientServer.cmake
+@@ -37,10 +37,13 @@ function (_vtk_module_wrap_client_server_sources module sources classes)
+ "$<TARGET_PROPERTY:${_vtk_client_server_target_name},COMPILE_DEFINITIONS>")
+ set(_vtk_client_server_genex_include_directories
+ "$<TARGET_PROPERTY:${_vtk_client_server_target_name},INCLUDE_DIRECTORIES>")
++ set(_vtk_client_server_genex_interface_include_directories
++ "$<TARGET_PROPERTY:${_vtk_client_server_target_name},INTERFACE_INCLUDE_DIRECTORIES>")
+ file(GENERATE
+ OUTPUT "${_vtk_client_server_args_file}"
+ CONTENT "$<$<BOOL:${_vtk_client_server_genex_compile_definitions}>:\n-D\'$<JOIN:${_vtk_client_server_genex_compile_definitions},\'\n-D\'>\'>\n
+-$<$<BOOL:${_vtk_client_server_genex_include_directories}>:\n-I\'$<JOIN:${_vtk_client_server_genex_include_directories},\'\n-I\'>\'>\n")
++ $<$<BOOL:${_vtk_client_server_genex_include_directories}>:\n-I\'$<JOIN:${_vtk_client_server_genex_include_directories},\'\n-I\'>\'>\n
++ $<$<BOOL:${_vtk_client_server_genex_interface_include_directories}>:\n-I\'$<JOIN:${_vtk_client_server_genex_interface_include_directories},\'\n-I\'>\'>\n")
+
+ _vtk_module_get_module_property("${module}"
+ PROPERTY "hierarchy"
diff --git a/ports/paraview/qt_plugin.patch b/ports/paraview/qt_plugin.patch
new file mode 100644
index 000000000..2f4763c49
--- /dev/null
+++ b/ports/paraview/qt_plugin.patch
@@ -0,0 +1,50 @@
+diff --git a/Qt/Widgets/CMakeLists.txt b/Qt/Widgets/CMakeLists.txt
+index 93000c493..5f2a06752 100644
+--- a/Qt/Widgets/CMakeLists.txt
++++ b/Qt/Widgets/CMakeLists.txt
+@@ -139,17 +139,43 @@ set(CMAKE_AUTORCC 1)
+ set(CMAKE_AUTOUIC 1)
+ set(CMAKE_AUTOUIC_SEARCH_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/Resources/UI")
+
++##
++if(NOT PARAVIEW_BUILD_SHARED_LIBS) # Should be a check if Qt is built statically and not ParaView
++ list(APPEND qt_components Svg Sql) # added due to svg rescources, sql due to VTK::GUISupportQtSQL
++ set(qt_plugin_list)
++ foreach(qt_component ${qt_components})
++ list(APPEND qt_plugin_list ${Qt5${qt_component}_PLUGINS})
++ message(STATUS "QtPlugin List: ${qt_plugin_list}")
++ endforeach()
++ set(qt_plugin_source "${CMAKE_CURRENT_BINARY_DIR}/qt_static_plugins.cxx")
++ if(EXISTS "${qt_plugin_source}")
++ file(REMOVE "${qt_plugin_source}")
++ endif()
++ set(qt_source_text "#include <QtPlugin>\n")
++ set(qt_source_text "#ifdef QT_STATIC\n")
++ foreach(qt_plugin ${qt_plugin_list})
++ STRING(REGEX REPLACE "[^:]+::" "" qt_plugin_name "${qt_plugin}")
++ message(STATUS "RAW PLUGIN NAME: ${qt_plugin_name}")
++ string(APPEND qt_source_text " Q_IMPORT_PLUGIN(${qt_plugin_name})\n")
++ endforeach()
++ string(APPEND qt_source_text "#endif\n")
++ file(WRITE "${qt_plugin_source}" "${qt_source_text}")
++endif()
++##
++
+ vtk_module_add_module(ParaView::pqWidgets
+ CLASSES ${classes}
+ SOURCES ${ui_files}
+- ${resource_files})
++ ${resource_files}
++ ${qt_plugin_source})
+ vtk_module_link(ParaView::pqWidgets
+ PUBLIC
+ Qt5::Core
+ Qt5::Gui
+ Qt5::Widgets
+ PRIVATE
+- Qt5::Network)
++ Qt5::Network
++ ${qt_plugin_list})
+
+ if (APPLE)
+ vtk_module_link(ParaView::pqWidgets
diff --git a/ports/paraview/qt_static_plugins.patch b/ports/paraview/qt_static_plugins.patch
new file mode 100644
index 000000000..e95685e60
--- /dev/null
+++ b/ports/paraview/qt_static_plugins.patch
@@ -0,0 +1,77 @@
+diff --git a/CMake/ParaViewClient.cmake b/CMake/ParaViewClient.cmake
+index 31beb7e20..d4bb36844 100644
+--- a/CMake/ParaViewClient.cmake
++++ b/CMake/ParaViewClient.cmake
+@@ -263,7 +263,11 @@ IDI_ICON1 ICON \"${_paraview_client_APPLICATION_ICON}\"\n")
+ endif ()
+
+ include("${_ParaViewClient_cmake_dir}/paraview-find-package-helpers.cmake" OPTIONAL)
+- find_package(Qt5 REQUIRED QUIET COMPONENTS Core Widgets)
++ find_package(Qt5 REQUIRED QUIET COMPONENTS Core Widgets Svg Network Sql DBus OpenGL OpenGLExtensions)
++ if(UNIX AND NOT APPLE)
++ find_package(Qt5 REQUIRED QUIET COMPONENTS X11Extras)
++ list(APPEND qt_additional_libs Qt5::X11Extras)
++ endif()
+
+ # CMake 3.13 started using Qt5's version variables to detect what version
+ # of Qt's tools to run for autorcc. However, they are looked up using the
+@@ -322,11 +322,36 @@ IDI_ICON1 ICON \"${_paraview_client_APPLICATION_ICON}\"\n")
+ FILES
+ ${_paraview_client_resource_files})
+ endif ()
++
++ if(NOT PARAVIEW_BUILD_SHARED_LIBS) # Should be a check if Qt is built statically and not ParaView
++ list(APPEND qt_components Svg Widgets Gui OpenGL OpenGLExtensions) # added due to svg rescources, sql due to VTK::GUISupportQtSQL
++ set(qt_plugin_list)
++ foreach(qt_component ${qt_components})
++ message(STATUS "Qt5${qt_component}_PLUGINS: ${Qt5${qt_component}_PLUGINS}")
++ list(APPEND qt_plugin_list ${Qt5${qt_component}_PLUGINS})
++ message(STATUS "QtPlugin List: ${qt_plugin_list}")
++ endforeach()
++ set(qt_plugin_source "${CMAKE_CURRENT_BINARY_DIR}/qt_static_plugins.cxx")
++ if(EXISTS "${qt_plugin_source}")
++ file(REMOVE "${qt_plugin_source}")
++ endif()
++ set(qt_source_text "#include <QtPlugin>\n")
++ string(APPEND qt_source_text "#ifdef QT_STATIC\n")
++ foreach(qt_plugin ${qt_plugin_list})
++ STRING(REGEX REPLACE "[^:]+::" "" qt_plugin_name "${qt_plugin}")
++ message(STATUS "RAW PLUGIN NAME: ${qt_plugin_name}")
++ string(APPEND qt_source_text " Q_IMPORT_PLUGIN(${qt_plugin_name})\n")
++ endforeach()
++ string(APPEND qt_source_text "#endif\n")
++ file(WRITE "${qt_plugin_source}" "${qt_source_text}")
++ endif()
++
+ add_executable("${_paraview_client_NAME}" ${_paraview_client_executable_flags}
+ ${_paraview_client_SOURCES}
+ ${_paraview_client_resource_files}
+ ${_paraview_client_source_files}
+- ${_paraview_client_extra_sources})
++ ${_paraview_client_extra_sources}
++ ${qt_plugin_source})
+ if (DEFINED _paraview_client_NAMESPACE)
+ add_executable("${_paraview_client_NAMESPACE}::${_paraview_client_NAME}" ALIAS "${_paraview_client_NAME}")
+ endif ()
+@@ -338,9 +362,20 @@ IDI_ICON1 ICON \"${_paraview_client_APPLICATION_ICON}\"\n")
+ "$<TARGET_PROPERTY:VTK::vtksys,INTERFACE_INCLUDE_DIRECTORIES>")
+ target_link_libraries("${_paraview_client_NAME}"
+ PRIVATE
++ ${qt_plugin_list}
++ Qt5::Svg ## added
++ Qt5::Sql ## added
++ Qt5::Network ## added
++ Qt5::Gui ## added
++ Qt5::OpenGL
++ Qt5::OpenGLExtensions
++ Qt5::DBus ##added
++ ${qt_additional_libs}
++ Qt5::Core # needed in VCPKG due to the extra Wrapper
+ ParaView::pqApplicationComponents
+ Qt5::Widgets
+- VTK::vtksys)
++ VTK::vtksys
++ )
+
+ set(_paraview_client_export)
+ if (DEFINED _paraview_client_EXPORT)
diff --git a/ports/paraview/remove_duplicates.patch b/ports/paraview/remove_duplicates.patch
new file mode 100644
index 000000000..4ea223e3f
--- /dev/null
+++ b/ports/paraview/remove_duplicates.patch
@@ -0,0 +1,14 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b7101666c..ebac50016 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -592,6 +592,9 @@ set(_paraview_add_tests_default_data_directory
+ set(_paraview_add_tests_default_test_data_target
+ "ParaViewData")
+
++list(REMOVE_DUPLICATES vtk_modules) # Missed this somewhere
++list(REMOVE_DUPLICATES paraview_modules) # probably not needed
++
+ vtk_module_build(
+ MODULES ${paraview_modules}
+ KITS ${paraview_kits}
diff --git a/ports/paraview/removedoublesymbols.patch b/ports/paraview/removedoublesymbols.patch
new file mode 100644
index 000000000..70df9b0e8
--- /dev/null
+++ b/ports/paraview/removedoublesymbols.patch
@@ -0,0 +1,89 @@
+diff --git a/Library/VisItLib/visit_vtk/lightweight/vtkUnstructuredGridFacelistFilter.C b/Library/VisItLib/visit_vtk/lightweight/vtkUnstructuredGridFacelistFilter.C
+index db64a0534..0d987d8e7 100644
+--- a/Library/VisItLib/visit_vtk/lightweight/vtkUnstructuredGridFacelistFilter.C
++++ b/Library/VisItLib/visit_vtk/lightweight/vtkUnstructuredGridFacelistFilter.C
+@@ -69,7 +69,10 @@
+ //
+ // Forward declare some of types used to hash faces.
+ //
+-class Quad;
++namespace hidden {
++ class Quad;
++}
++using hidden::Quad;
+ class QuadMemoryManager;
+ class Tri;
+ class TriMemoryManager;
+@@ -322,43 +325,43 @@ class HashEntryList
+ // Creation: October 21, 2002
+ //
+ // ****************************************************************************
++namespace hidden {
++ class Quad
++ {
++ friend class Tri;
+
+-class Quad
+-{
+- friend class Tri;
+-
+- public:
+- Quad() { ordering_case = 255; };
+-
+- vtkIdType AssignNodes(const vtkIdType *);
+- bool Equals(Quad *);
+- bool Equals(Tri *);
+- void AddInRemainingTriangle(Tri *, int);
+- inline void ReRegisterMemory(void)
+- {
+- hashEntryList->qmm.ReRegisterQuad(this);
+- }
++ public:
++ Quad() { ordering_case = 255; };
+
+- inline void SetOriginalZone(const int &oz) { orig_zone = oz; };
+- inline int GetOriginalZone(void) { return orig_zone; };
++ vtkIdType AssignNodes(const vtkIdType *);
++ bool Equals(Quad *);
++ bool Equals(Tri *);
++ void AddInRemainingTriangle(Tri *, int);
++ inline void ReRegisterMemory(void)
++ {
++ hashEntryList->qmm.ReRegisterQuad(this);
++ }
+
+- void OutputCell(int,vtkPolyData *, vtkCellData *, vtkCellData *);
++ inline void SetOriginalZone(const int &oz) { orig_zone = oz; };
++ inline int GetOriginalZone(void) { return orig_zone; };
+
+- inline void RegisterHashEntryList(HashEntryList *hel)
+- { hashEntryList = hel; };
+- inline void SetNumberOfPoints(int np) { npts = np; };
++ void OutputCell(int,vtkPolyData *, vtkCellData *, vtkCellData *);
+
+- protected:
+- unsigned char ordering_case;
+- vtkIdType nodes[3];
+- vtkIdType orig_zone;
++ inline void RegisterHashEntryList(HashEntryList *hel)
++ { hashEntryList = hel; };
++ inline void SetNumberOfPoints(int np) { npts = np; };
+
+- HashEntryList *hashEntryList;
+- int npts;
++ protected:
++ unsigned char ordering_case;
++ vtkIdType nodes[3];
++ vtkIdType orig_zone;
+
+- void AddInRemainingTriangle(int, int);
+-};
++ HashEntryList *hashEntryList;
++ int npts;
+
++ void AddInRemainingTriangle(int, int);
++ };
++}
+ //
+ // We will be re-ordering the nodes into numerical order. This enumerated
+ // type will allow the ordering to be preserved.