vtk: update to 9.4.1

Remove patches that have been applied upstream.
Fix compilation issues with `clang++` version 19.
Fix new build issues with fmt 11.
Cherry-pick patches from upstream VTK-m.
Update patch to make it apply cleanly.
Update DIY to version 3.6.0 to avoid compilation issue with C++ STL from LLVM 19 (`std::char_traits<T>` can no longer be instantiated with arbitrary types).
Add patch to fix compatibility with DIY 3.
Add patch to fix build issue of the InfovisBoostGraphAlgorithms module that requires C++14 now.
Add patch for the ANARI rendering module to fix an issue with undeclared type identifiers.
Add optional dependencies for new Alembic and ANARI modules.
This commit is contained in:
Markus Mützel
2025-01-13 17:45:24 +01:00
parent 2f9e8c830a
commit 6f0fc110e2
13 changed files with 26764 additions and 213 deletions

View File

@@ -1,12 +0,0 @@
--- a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/thirdparty/diy/vtkmdiy/include/vtkmdiy/mpi/no-mpi.hpp
+++ b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/thirdparty/diy/vtkmdiy/include/vtkmdiy/mpi/no-mpi.hpp
@@ -1,9 +1,9 @@
#ifndef VTKMDIY_MPI_NO_MPI_HPP
#define VTKMDIY_MPI_NO_MPI_HPP
+#include <cstdint> // uintptr_t
#include <stdexcept> // std::runtime_error
-
static const int MPI_SUCCESS = 0;
static const int MPI_ANY_SOURCE = -1;

View File

@@ -0,0 +1,14 @@
a template argument list is expected after a name prefixed by the template keyword
diff -urN VTK-9.3.1/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/internal/VariantImplDetail.h.orig VTK-9.3.1/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/internal/VariantImplDetail.h
--- VTK-9.3.1/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/internal/VariantImplDetail.h.orig 2024-06-28 18:00:10.000000000 +0200
+++ VTK-9.3.1/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/internal/VariantImplDetail.h 2025-01-13 15:35:29.812473900 +0100
@@ -548,7 +548,7 @@
// just the one that it currently holds.
return f(storage.V7, std::forward<Args>(args)...);
default:
- return VariantCases<NumCases - 8>::template CastAndCall(
+ return VariantCases<NumCases - 8>::template CastAndCall<>(
index - 8, std::forward<Functor>(f), storage.Remaining, std::forward<Args>(args)...);
}
}

View File

@@ -1,40 +1,22 @@
--- a/ThirdParty/ioss/vtkioss/Ioss_IOFactory.C
+++ b/ThirdParty/ioss/vtkioss/Ioss_IOFactory.C
diff -urN VTK-9.4.1/ThirdParty/ioss/vtkioss/Ioss_Field.C.orig VTK-9.4.1/ThirdParty/ioss/vtkioss/Ioss_Field.C
--- VTK-9.4.1/ThirdParty/ioss/vtkioss/Ioss_Field.C.orig 2024-12-27 18:08:14.000000000 +0100
+++ VTK-9.4.1/ThirdParty/ioss/vtkioss/Ioss_Field.C 2025-01-13 16:46:04.272364200 +0100
@@ -12,6 +12,7 @@
#include <cstddef> // for nullptr
#include <cstdint>
#include "vtk_fmt.h"
#include VTK_FMT(fmt/ostream.h)
+#include VTK_FMT(fmt/ranges.h)
#include <map> // for _Rb_tree_iterator, etc
#include <ostream> // for basic_ostream, etc
#include <set>
--- a/ThirdParty/ioss/vtkioss/Ioss_StructuredBlock.C
+++ b/ThirdParty/ioss/vtkioss/Ioss_StructuredBlock.C
@@ -15,6 +15,7 @@
#include <Ioss_StructuredBlock.h>
#include "vtk_fmt.h"
#include VTK_FMT(fmt/ostream.h)
+#include VTK_FMT(fmt/ranges.h)
#include <cstddef> // for size_t
#include <numeric>
--- a/ThirdParty/ioss/vtkioss/Ioss_Utils.C
+++ b/ThirdParty/ioss/vtkioss/Ioss_Utils.C
@@ -21,6 +21,7 @@
#include VTK_FMT(fmt/chrono.h)
+#include VTK_FMT(fmt/xchar.h)
#include <iostream>
#include <string>
#include <vector>
diff -urN VTK-9.4.1/ThirdParty/ioss/vtkioss/Ioss_VariableType.C.orig VTK-9.4.1/ThirdParty/ioss/vtkioss/Ioss_VariableType.C
--- VTK-9.4.1/ThirdParty/ioss/vtkioss/Ioss_VariableType.C.orig 2024-12-27 18:08:14.000000000 +0100
+++ VTK-9.4.1/ThirdParty/ioss/vtkioss/Ioss_VariableType.C 2025-01-13 16:47:09.758522800 +0100
@@ -19,6 +19,7 @@
#include VTK_FMT(fmt/core.h)
#include VTK_FMT(fmt/format.h)
#include VTK_FMT(fmt/ostream.h)
+#include VTK_FMT(fmt/ranges.h)
#include <fstream>
+#include VTK_FMT(fmt/xchar.h)
#include <map>
#include <sstream>
#include <string>
--- a/ThirdParty/ioss/vtkioss/Ioss_ZoneConnectivity.C
+++ b/ThirdParty/ioss/vtkioss/Ioss_ZoneConnectivity.C
@@ -9,6 +9,7 @@
#include <cstddef> // for size_t
#include "vtk_fmt.h"
#include VTK_FMT(fmt/ostream.h)
+#include VTK_FMT(fmt/ranges.h)
#include <string> // for string
#include <vector> // for vector

View File

@@ -1,96 +0,0 @@
From 761aa1d15970fcb6aadb7d6152737fa9b2d4b0d0 Mon Sep 17 00:00:00 2001
From: Lars Glud <larshg@gmail.com>
Date: Fri, 24 May 2024 07:58:23 +0200
Subject: [PATCH] Make compatible with opencascade 7.8.0.
---
IO/OCCT/CMakeLists.txt | 28 ++++++++++++++++++++--------
IO/OCCT/vtkOCCTReader.cxx | 13 ++++++++++++-
2 files changed, 32 insertions(+), 9 deletions(-)
diff --git a/IO/OCCT/CMakeLists.txt b/IO/OCCT/CMakeLists.txt
index e81444ecebd..4baddeb719b 100644
--- a/IO/OCCT/CMakeLists.txt
+++ b/IO/OCCT/CMakeLists.txt
@@ -4,12 +4,25 @@ vtk_module_find_package(PRIVATE_IF_SHARED
VERSION_VAR "@OpenCASCADE_MAJOR_VERSION@.@OpenCASCADE_MINOR_VERSION@.@OpenCASCADE_MAINTENANCE_VERSION@"
)
-set(opencascade_req_targets
- TKSTEP
- TKIGES
- TKMesh
- TKXDESTEP
- TKXDEIGES)
+if (OpenCASCADE_VERSION VERSION_GREATER_EQUAL "7.8.0")
+ set(opencascade_req_targets
+ TKDESTEP
+ TKDEIGES
+ TKernel
+ TKMath
+ TKMesh
+ TKBRep
+ TKXSBase
+ TKLCAF
+ TKXCAF)
+else()
+ set(opencascade_req_targets
+ TKSTEP
+ TKIGES
+ TKMesh
+ TKXDESTEP
+ TKXDEIGES)
+endif()
set(opencascade_missing_targets)
foreach (opencascade_req_target IN LISTS opencascade_req_targets)
if (NOT TARGET "${opencascade_req_target}")
@@ -35,8 +48,7 @@ vtk_module_link(VTK::IOOCCT
${opencascade_req_targets})
# OpenCASCADE started putting include directory usage requirements in 7.7.0.
-set(OpenCASCADE_VERSION
- "${OpenCASCADE_MAJOR_VERSION}.${OpenCASCADE_MINOR_VERSION}.${OpenCASCADE_MAINTENANCE_VERSION}")
+
if (OpenCASCADE_VERSION VERSION_LESS "7.7.0")
vtk_module_include(VTK::IOOCCT PRIVATE "${OpenCASCADE_INCLUDE_DIR}")
endif ()
diff --git a/IO/OCCT/vtkOCCTReader.cxx b/IO/OCCT/vtkOCCTReader.cxx
index 52e76be72c1..5aca5c93c8c 100644
--- a/IO/OCCT/vtkOCCTReader.cxx
+++ b/IO/OCCT/vtkOCCTReader.cxx
@@ -345,11 +345,19 @@ public:
}
//----------------------------------------------------------------------------
+#if VTK_OCCT_VERSION(7, 8, 0) <= OCC_VERSION_HEX
+ size_t GetHash(const TDF_Label& label)
+ {
+ TopoDS_Shape aShape;
+ return this->ShapeTool->GetShape(label, aShape) ? std::hash<TopoDS_Shape>{}(aShape) : 0;
+ }
+#else
int GetHash(const TDF_Label& label)
{
TopoDS_Shape aShape;
return this->ShapeTool->GetShape(label, aShape) ? aShape.HashCode(INT_MAX) : 0;
}
+#endif
//----------------------------------------------------------------------------
static void GetMatrix(const TopLoc_Location& loc, vtkMatrix4x4* mat)
@@ -381,8 +389,11 @@ public:
GetMatrix(hLoc->Get(), location);
}
}
-
+#if VTK_OCCT_VERSION(7, 8, 0) <= OCC_VERSION_HEX
+ std::unordered_map<size_t, vtkSmartPointer<vtkPolyData>> ShapeMap;
+#else
std::unordered_map<int, vtkSmartPointer<vtkPolyData>> ShapeMap;
+#endif
Handle(XCAFDoc_ShapeTool) ShapeTool;
Handle(XCAFDoc_ColorTool) ColorTool;
--
GitLab

View File

@@ -0,0 +1,31 @@
From c805a6039ea500cb96158cfc11271987c9f67aa4 Mon Sep 17 00:00:00 2001
From: Kenneth Moreland <morelandkd@ornl.gov>
Date: Tue, 15 Oct 2024 13:06:36 -0400
Subject: [PATCH] Remove unused method from MIR tables
The implementation of this method was incorrect as it referenced a class
member that does not exist. Many compilers allowed it in a templated
class when the method was never used, but other compilers attempt to
compile the inlined method regardless.
Since the method clearly is not needed, the easy solution is to remove
it.
---
vtkm/filter/contour/worklet/mir/MIRTables.h | 5 -----
1 file changed, 5 deletions(-)
diff -urN VTK-9.4.1/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/contour/worklet/mir/MIRTables.h.orig VTK-9.4.1/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/contour/worklet/mir/MIRTables.h
--- VTK-9.4.1/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/contour/worklet/mir/MIRTables.h.orig 2024-12-27 18:08:14.000000000 +0100
+++ VTK-9.4.1/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/contour/worklet/mir/MIRTables.h 2025-01-13 16:56:54.495714500 +0100
@@ -11400,11 +11400,6 @@
return FacesLookup[shape];
}
- VTKM_EXEC vtkm::UInt8 GetPoint(vtkm::Id pointIndex) const
- {
- return this->CellFacePortal.Get(pointIndex);
- }
-
private:
typename vtkm::cont::ArrayHandle<vtkm::UInt8>::ReadPortalType MIRTablesDataPortal;
typename vtkm::cont::ArrayHandle<vtkm::UInt16>::ReadPortalType MIRTablesIndicesPortal;

View File

@@ -0,0 +1,37 @@
From 48e385af319543800398656645327243a29babfb Mon Sep 17 00:00:00 2001
From: Kenneth Moreland <morelandkd@ornl.gov>
Date: Tue, 15 Oct 2024 12:01:34 -0400
Subject: [PATCH] Fix compile error for contour tree print
A print for one of the contour tree objects was referencing members of
itself that don't seem to exist. This causes the Intel compiler to fail
to compile it. I'm at a loss about how any other compiler does not error
out, but at any rate this should be correct.
---
.../worklet/contourtree_distributed/HierarchicalContourTree.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h
index a996d42928..e40d5f4f15 100644
--- a/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h
+++ b/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h
@@ -663,7 +663,7 @@ std::string HierarchicalContourTree<FieldType>::PrintDotSuperStructure(const cha
auto hyperarcsPortal = this->Hyperarcs.ReadPortal();
auto regularNodeGlobalIdsPortal = this->RegularNodeGlobalIds.ReadPortal();
auto whichIterationPortal = this->WhichIteration.ReadPortal();
- auto whichRoundPortal = this->whichRound.ReadPortal();
+ auto whichRoundPortal = this->WhichRound.ReadPortal();
auto superarcsPortal = this->Superarcs.ReadPortal();
auto superparentsPortal = this->Superparents.ReadPortal();
for (vtkm::Id supernode = 0; supernode < this->Supernodes.GetNumberOfValues(); supernode++)
@@ -708,7 +708,7 @@ std::string HierarchicalContourTree<FieldType>::PrintDotSuperStructure(const cha
if (contourtree_augmented::NoSuchElement(superarcTo))
{ // no superarc
// if it occurred on the final round, it's the global root and is shown as the NULL node
- if (whichRoundPortal.Get(superarcFrom) == this->NRounds)
+ if (whichRoundPortal.Get(superarcFrom) == this->NumRounds)
{ // root node
outstream << "\tSN" << std::setw(1) << superarcFrom << " -> SA" << std::setw(1) << superarc
<< " [label=\"S" << std::setw(1) << superarc << "\",style=dotted]\n";
--
GitLab

View File

@@ -40,20 +40,20 @@
/**
* Get component @a comp of the tuple at @a tupleIdx.
*/
- ValueType GetTypedComponent(vtkIdType tupleIdx, int comp) const VTK_EXPECTS(0 <= tupleIdx &&
+ VTKCOMMONCORE_EXPORT ValueType GetTypedComponent(vtkIdType tupleIdx, int comp) const VTK_EXPECTS(0 <= tupleIdx &&
tupleIdx < GetNumberOfTuples()) VTK_EXPECTS(0 <= comp && comp < GetNumberOfComponents())
- ValueType GetTypedComponent(vtkIdType tupleIdx, int comp) const
+ VTKCOMMONCORE_EXPORT ValueType GetTypedComponent(vtkIdType tupleIdx, int comp) const
VTK_EXPECTS(0 <= tupleIdx && GetNumberOfComponents() * tupleIdx + comp < GetNumberOfValues())
VTK_EXPECTS(0 <= comp && comp < GetNumberOfComponents())
{
return this->Buffer->GetBuffer()[this->NumberOfComponents * tupleIdx + comp];
@@ -116,7 +116,7 @@
/**
* Set component @a comp of the tuple at @a tupleIdx to @a value.
*/
- void SetTypedComponent(vtkIdType tupleIdx, int comp, ValueType value) VTK_EXPECTS(0 <= tupleIdx &&
+ VTKCOMMONCORE_EXPORT void SetTypedComponent(vtkIdType tupleIdx, int comp, ValueType value) VTK_EXPECTS(0 <= tupleIdx &&
tupleIdx < GetNumberOfTuples()) VTK_EXPECTS(0 <= comp && comp < GetNumberOfComponents())
- void SetTypedComponent(vtkIdType tupleIdx, int comp, ValueType value)
+ VTKCOMMONCORE_EXPORT void SetTypedComponent(vtkIdType tupleIdx, int comp, ValueType value)
VTK_EXPECTS(0 <= tupleIdx && GetNumberOfComponents() * tupleIdx + comp < GetNumberOfValues())
VTK_EXPECTS(0 <= comp && comp < GetNumberOfComponents())
{
const vtkIdType valueIdx = tupleIdx * this->NumberOfComponents + comp;
@@ -260,11 +260,11 @@
vtkIdType dstStart, vtkIdType n, vtkIdType srcStart, vtkAbstractArray* source) override;
// MSVC doesn't like 'using' here (error C2487). Just forward instead:
@@ -80,9 +80,9 @@
if (!strcmp(thisClassName, type)) \
{ \
@@ -836,7 +836,7 @@
return superclass::IsTypeOf(type); \
{ \
return this->thisClass::IsTypeOf(type); \
} \
vtkTypeBool IsA(const char* type) override { return this->thisClass::IsTypeOf(type); } \
- static thisClass* SafeDownCast(vtkObjectBase* o) \
+ static VTKCOMMONCORE_EXPORT thisClass* SafeDownCast(vtkObjectBase* o) \
{ \

View File

@@ -1,46 +0,0 @@
--- a/ThirdParty/vtkm/vtkvtkm/vtk-m/CMake/VTKmConfig.cmake.in
+++ b/ThirdParty/vtkm/vtkvtkm/vtk-m/CMake/VTKmConfig.cmake.in
@@ -105,6 +105,14 @@ if (VTKm_ENABLE_TBB)
endif()
endif()
+if (VTKm_ENABLE_OPENMP)
+ find_dependency(OpenMP)
+ if (NOT OpenMP_FOUND)
+ set(VTKm_FOUND 0)
+ list(APPEND VTKm_NOT_FOUND_REASON "OpenMP not found: ${OpenMP_NOT_FOUND_MESSAGE}")
+ endif()
+endif()
+
# Load the library exports, but only if not compiling VTK-m itself
set_and_check(VTKm_CONFIG_DIR "@PACKAGE_VTKm_INSTALL_CONFIG_DIR@")
set(VTKM_FROM_INSTALL_DIR FALSE)
--- a/ThirdParty/vtkm/vtkvtkm/vtk-m/CMake/VTKmDeviceAdapters.cmake
+++ b/ThirdParty/vtkm/vtkvtkm/vtk-m/CMake/VTKmDeviceAdapters.cmake
@@ -58,21 +58,13 @@ if(VTKm_ENABLE_OPENMP AND NOT (TARGET vtkm_openmp OR TARGET vtkm::openmp))
find_package(OpenMP 4.0 REQUIRED COMPONENTS CXX QUIET)
add_library(vtkm_openmp INTERFACE)
- set_target_properties(vtkm_openmp PROPERTIES EXPORT_NAME openmp)
- if(OpenMP_CXX_FLAGS)
- set_property(TARGET vtkm_openmp
- APPEND PROPERTY INTERFACE_COMPILE_OPTIONS $<$<COMPILE_LANGUAGE:CXX>:${OpenMP_CXX_FLAGS}>)
-
- if(VTKm_ENABLE_CUDA)
- string(REPLACE ";" "," openmp_cuda_flags "-Xcompiler=${OpenMP_CXX_FLAGS}")
- set_property(TARGET vtkm_openmp
- APPEND PROPERTY INTERFACE_COMPILE_OPTIONS $<$<COMPILE_LANGUAGE:CUDA>:${openmp_cuda_flags}>)
- endif()
- endif()
- if(OpenMP_CXX_LIBRARIES)
- set_target_properties(vtkm_openmp PROPERTIES
- INTERFACE_LINK_LIBRARIES "${OpenMP_CXX_LIBRARIES}")
+ target_link_libraries(vtkm_openmp INTERFACE OpenMP::OpenMP_CXX)
+ target_compile_options(vtkm_openmp INTERFACE $<$<COMPILE_LANGUAGE:CXX>:${OpenMP_CXX_FLAGS}>)
+ if(VTKm_ENABLE_CUDA)
+ string(REPLACE ";" "," openmp_cuda_flags "-Xcompiler=${OpenMP_CXX_FLAGS}")
+ target_compile_options(vtkm_openmp INTERFACE $<$<COMPILE_LANGUAGE:CUDA>:${openmp_cuda_flags}>)
endif()
+ set_target_properties(vtkm_openmp PROPERTIES EXPORT_NAME openmp)
install(TARGETS vtkm_openmp EXPORT ${VTKm_EXPORT_NAME})
endif()

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,42 @@
Fix compatibility with DIY 3.
diff -urN VTK-9.4.1/Filters/ParallelDIY2/vtkDIYKdTreeUtilities.cxx.orig VTK-9.4.1/Filters/ParallelDIY2/vtkDIYKdTreeUtilities.cxx
--- VTK-9.4.1/Filters/ParallelDIY2/vtkDIYKdTreeUtilities.cxx.orig 2024-12-27 18:08:14.000000000 +0100
+++ VTK-9.4.1/Filters/ParallelDIY2/vtkDIYKdTreeUtilities.cxx 2025-01-14 14:21:38.139663500 +0100
@@ -263,7 +263,7 @@
}
else
{
- block->BlockBounds.resize(srp.in_link().size());
+ block->BlockBounds.resize(srp.in_link().size(), diy::ContinuousBounds(0));
for (int i = 0; i < srp.in_link().size(); ++i)
{
assert(i == srp.in_link().target(i).gid);
diff -urN VTK-9.4.1/Filters/ParallelDIY2/vtkPResampleToImage.cxx.orig VTK-9.4.1/Filters/ParallelDIY2/vtkPResampleToImage.cxx
--- VTK-9.4.1/Filters/ParallelDIY2/vtkPResampleToImage.cxx.orig 2024-12-27 18:08:14.000000000 +0100
+++ VTK-9.4.1/Filters/ParallelDIY2/vtkPResampleToImage.cxx 2025-01-14 14:40:23.384439700 +0100
@@ -337,8 +337,8 @@
unsigned round = srp.round();
// step 1: dequeue all the incoming points and add them to this block's vector
- diy::Master::IncomingQueues& in = *srp.incoming();
- for (diy::Master::IncomingQueues::iterator i = in.begin(); i != in.end(); ++i)
+ diy::ReduceProxy::IncomingQueues& in = *srp.incoming();
+ for (diy::ReduceProxy::IncomingQueues::iterator i = in.begin(); i != in.end(); ++i)
{
while (i->second)
{
diff -urN VTK-9.4.1/Filters/ParallelDIY2/vtkPResampleWithDataSet.cxx.orig VTK-9.4.1/Filters/ParallelDIY2/vtkPResampleWithDataSet.cxx
--- VTK-9.4.1/Filters/ParallelDIY2/vtkPResampleWithDataSet.cxx.orig 2024-12-27 18:08:14.000000000 +0100
+++ VTK-9.4.1/Filters/ParallelDIY2/vtkPResampleWithDataSet.cxx 2025-01-14 14:38:24.066841100 +0100
@@ -1008,8 +1008,8 @@
int numBlocks = static_cast<int>(block->InputBlocks.size());
std::vector<std::map<std::string, int>> arrayReceiveCounts(numBlocks);
- diy::Master::IncomingQueues& in = *cp.incoming();
- for (diy::Master::IncomingQueues::iterator i = in.begin(); i != in.end(); ++i)
+ diy::Master::ProxyWithLink::IncomingQueues& in = *cp.incoming();
+ for (diy::Master::ProxyWithLink::IncomingQueues::iterator i = in.begin(); i != in.end(); ++i)
{
if (!i->second)
{

View File

@@ -0,0 +1,14 @@
Boost.Math requires C++14
diff -urN VTK-9.4.1/CMake/vtkCompilerChecks.cmake.orig VTK-9.4.1/CMake/vtkCompilerChecks.cmake
--- VTK-9.4.1/CMake/vtkCompilerChecks.cmake.orig 2024-12-27 18:08:14.000000000 +0100
+++ VTK-9.4.1/CMake/vtkCompilerChecks.cmake 2025-01-14 15:41:43.252214400 +0100
@@ -33,7 +33,7 @@
# Needed to make sure libraries and executables not built by the
# vtkModuleMacros still have the C++11 compiler flags enabled
# Wrap this in an escape hatch for unknown compilers
- set(CMAKE_CXX_STANDARD 11)
+ set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_EXTENSIONS False)
endif()

View File

@@ -0,0 +1,226 @@
Use standard integer type identifiers in ANARI Rendering module.
diff -urN VTK-9.4.1/Rendering/ANARI/vtkAnariPolyDataMapperNode.cxx.orig VTK-9.4.1/Rendering/ANARI/vtkAnariPolyDataMapperNode.cxx
--- VTK-9.4.1/Rendering/ANARI/vtkAnariPolyDataMapperNode.cxx.orig 2024-12-27 18:08:14.000000000 +0100
+++ VTK-9.4.1/Rendering/ANARI/vtkAnariPolyDataMapperNode.cxx 2025-01-14 16:35:12.992846600 +0100
@@ -74,7 +74,7 @@
* (e.g., wireframe or points).
*/
void RenderSurfaces(anari::Sampler, vtkActor*, vtkPolyData*, std::vector<vec3>&,
- std::vector<u_int>&, bool, double, double, vtkDataArray*, vtkPiecewiseFunction*,
+ std::vector<unsigned int>&, bool, double, double, vtkDataArray*, vtkPiecewiseFunction*,
std::vector<vec2>&, std::vector<float>&, std::vector<vec4>&,
vtkPolyDataMapperNode::vtkPDConnectivity& conn, int);
@@ -83,7 +83,7 @@
* of which can have its own radius.
*/
anari::Surface RenderAsSpheres(anari::Sampler, vtkProperty*, std::vector<vec3>&,
- std::vector<u_int>&, double, vtkDataArray*, vtkPiecewiseFunction*, std::vector<vec2>&,
+ std::vector<unsigned int>&, double, vtkDataArray*, vtkPiecewiseFunction*, std::vector<vec2>&,
std::vector<float>&, std::vector<vec4>&, int);
/**
@@ -91,7 +91,7 @@
* of which can have its own radius.
*/
anari::Surface RenderAsCylinders(anari::Sampler, vtkProperty* property, std::vector<vec3>&,
- std::vector<u_int>&, double, vtkDataArray*, vtkPiecewiseFunction*, std::vector<vec2>&,
+ std::vector<unsigned int>&, double, vtkDataArray*, vtkPiecewiseFunction*, std::vector<vec2>&,
std::vector<float>&, std::vector<vec4>&, int);
/**
@@ -99,14 +99,14 @@
* of which can have its own radius.
*/
anari::Surface RenderAsCurves(anari::Sampler, vtkProperty* property, std::vector<vec3>&,
- std::vector<u_int>&, double, vtkDataArray*, vtkPiecewiseFunction*, std::vector<vec2>&,
+ std::vector<unsigned int>&, double, vtkDataArray*, vtkPiecewiseFunction*, std::vector<vec2>&,
std::vector<float>&, std::vector<vec4>&, int);
/**
* Create an ANARI surface with a geometry consisting of triangles.
*/
anari::Surface RenderAsTriangles(anari::Sampler anariSampler, vtkProperty* property,
- std::vector<vec3>&, std::vector<u_int>& indexArray, std::vector<vec3>& normals,
+ std::vector<vec3>&, std::vector<unsigned int>& indexArray, std::vector<vec3>& normals,
std::vector<vec2>& textureCoords, std::vector<float>&, std::vector<vec4>&, int);
/**
@@ -363,11 +363,11 @@
anari::DataType anariLinearColorFormats[4] = { ANARI_UFIXED8_R_SRGB, ANARI_UFIXED8_RA_SRGB,
ANARI_UFIXED8_RGB_SRGB, ANARI_UFIXED8_RGBA_SRGB };
- std::vector<u_char> charData;
+ std::vector<unsigned char> charData;
if (comps > 4)
{
- u_char* imageDataPtr = (u_char*)imageData->GetScalarPointer(0, 0, 0);
+ unsigned char* imageDataPtr = (unsigned char*)imageData->GetScalarPointer(0, 0, 0);
for (int i = 0; i < xsize; i++)
{
@@ -426,11 +426,11 @@
anari::DataType anariColorFormats[4] = { ANARI_UFIXED16, ANARI_UFIXED16_VEC2,
ANARI_UFIXED16_VEC3, ANARI_UFIXED16_VEC4 };
- std::vector<u_short> shortData;
+ std::vector<unsigned short> shortData;
if (comps > 4)
{
- u_short* imageDataPtr = reinterpret_cast<u_short*>(imageData->GetScalarPointer(0, 0, 0));
+ unsigned short* imageDataPtr = reinterpret_cast<unsigned short*>(imageData->GetScalarPointer(0, 0, 0));
for (int i = 0; i < xsize; i++)
{
@@ -779,7 +779,7 @@
//----------------------------------------------------------------------------
void vtkAnariPolyDataMapperNodeInternals::RenderSurfaces(anari::Sampler anariSampler,
- vtkActor* actor, vtkPolyData* poly, std::vector<vec3>& vertices, std::vector<u_int>& indexArray,
+ vtkActor* actor, vtkPolyData* poly, std::vector<vec3>& vertices, std::vector<unsigned int>& indexArray,
bool isTriangleIndex, double pointSize, double lineWidth, vtkDataArray* scaleArray,
vtkPiecewiseFunction* scaleFunction, std::vector<vec2>& textureCoords,
std::vector<float>& pointValueTextureCoords, std::vector<vec4>& pointColors,
@@ -877,7 +877,7 @@
//----------------------------------------------------------------------------
anari::Surface vtkAnariPolyDataMapperNodeInternals::RenderAsTriangles(anari::Sampler anariSampler,
- vtkProperty* property, std::vector<vec3>& vertices, std::vector<u_int>& indexArray,
+ vtkProperty* property, std::vector<vec3>& vertices, std::vector<unsigned int>& indexArray,
std::vector<vec3>& normals, std::vector<vec2>& textureCoords,
std::vector<float>& pointValueTextureCoords, std::vector<vec4>& pointColors, int cellFlag)
{
@@ -914,7 +914,7 @@
else
{
char buffer[50];
- snprintf(buffer, 50, "[RenderAsTriangles] numVertices = %ld", numVertices);
+ snprintf(buffer, 50, "[RenderAsTriangles] numVertices = %zu", numVertices);
vtkDebugWithObjectMacro(this->Owner, << buffer);
return nullptr;
}
@@ -1092,7 +1092,7 @@
//----------------------------------------------------------------------------
anari::Surface vtkAnariPolyDataMapperNodeInternals::RenderAsCylinders(anari::Sampler anariSampler,
- vtkProperty* property, std::vector<vec3>& vertices, std::vector<u_int>& indexArray,
+ vtkProperty* property, std::vector<vec3>& vertices, std::vector<unsigned int>& indexArray,
double lineWidth, vtkDataArray* scaleArray, vtkPiecewiseFunction* scaleFunction,
std::vector<vec2>& textureCoords, std::vector<float>& pointValueTextureCoords,
std::vector<vec4>& pointColors, int cellFlag)
@@ -1131,7 +1131,7 @@
else
{
char buffer[50];
- snprintf(buffer, 50, "[RenderAsCylinders] numVertices = %ld", numVertices);
+ snprintf(buffer, 50, "[RenderAsCylinders] numVertices = %zu", numVertices);
vtkDebugWithObjectMacro(this->Owner, << buffer);
return nullptr;
}
@@ -1292,7 +1292,7 @@
//----------------------------------------------------------------------------
anari::Surface vtkAnariPolyDataMapperNodeInternals::RenderAsCurves(anari::Sampler anariSampler,
- vtkProperty* property, std::vector<vec3>& vertices, std::vector<u_int>& indexArray,
+ vtkProperty* property, std::vector<vec3>& vertices, std::vector<unsigned int>& indexArray,
double lineWidth, vtkDataArray* scaleArray, vtkPiecewiseFunction* scaleFunction,
std::vector<vec2>& textureCoords, std::vector<float>& pointValueTextureCoords,
std::vector<vec4>& pointColors, int cellFlag)
@@ -1331,7 +1331,7 @@
else
{
char buffer[50];
- snprintf(buffer, 50, "[RenderAsCurves] numVertices = %ld", numVertices);
+ snprintf(buffer, 50, "[RenderAsCurves] numVertices = %zu", numVertices);
vtkDebugWithObjectMacro(this->Owner, << buffer);
return nullptr;
}
@@ -1341,7 +1341,7 @@
{
auto indicesArray = anari::newArray1D(this->AnariDevice, ANARI_UINT32, numIndices);
{
- auto indicesArrayPtr = anari::map<u_int>(this->AnariDevice, indicesArray);
+ auto indicesArrayPtr = anari::map<unsigned int>(this->AnariDevice, indicesArray);
for (size_t i = 0; i < numIndices; i++)
{
@@ -1488,7 +1488,7 @@
//----------------------------------------------------------------------------
anari::Surface vtkAnariPolyDataMapperNodeInternals::RenderAsSpheres(anari::Sampler anariSampler,
- vtkProperty* property, std::vector<vec3>& vertices, std::vector<u_int>& indexArray,
+ vtkProperty* property, std::vector<vec3>& vertices, std::vector<unsigned int>& indexArray,
double pointSize, vtkDataArray* scaleArray, vtkPiecewiseFunction* scaleFunction,
std::vector<vec2>& textureCoords, std::vector<float>& pointValueTextureCoords,
std::vector<vec4>& pointColors, int cellFlag)
@@ -1530,7 +1530,7 @@
else
{
char buffer[50];
- snprintf(buffer, 50, "[RenderAsSpheres] numVertices = %ld", numVertices);
+ snprintf(buffer, 50, "[RenderAsSpheres] numVertices = %zu", numVertices);
vtkDebugWithObjectMacro(this->Owner, << buffer);
return nullptr;
}
@@ -1540,7 +1540,7 @@
{
auto indicesArray = anari::newArray1D(this->AnariDevice, ANARI_UINT32, numPositions);
{
- auto indicesArrayPtr = anari::map<u_int32_t>(this->AnariDevice, indicesArray);
+ auto indicesArrayPtr = anari::map<uint32_t>(this->AnariDevice, indicesArray);
for (size_t i = 0; i < numPositions; i++)
{
@@ -1870,7 +1870,7 @@
{
// Use the color for the field data value
int ncomps = mapperColors->GetNumberOfComponents();
- u_char* mapperColorsPtr = mapperColors->GetPointer(0);
+ unsigned char* mapperColorsPtr = mapperColors->GetPointer(0);
mapperColorsPtr = mapperColorsPtr + mapper->GetFieldDataTupleId() * ncomps;
double diffuseColor[3] = { mapperColorsPtr[0] * property->GetDiffuse() / 255.0,
mapperColorsPtr[1] * property->GetDiffuse() / 255.0,
@@ -1886,7 +1886,7 @@
for (int i = 0; i < numPointColors; i++)
{
- u_char* color = mapperColors->GetPointer(ncomps * i);
+ unsigned char* color = mapperColors->GetPointer(ncomps * i);
float alpha = ncomps == 3 ? 1.0f : (color[3] / 255.0f);
pointColors[i] = { color[0] / 255.0f, color[1] / 255.0f, color[2] / 255.0f, alpha };
diff -urN VTK-9.4.1/Rendering/ANARI/vtkAnariRendererNode.cxx.orig VTK-9.4.1/Rendering/ANARI/vtkAnariRendererNode.cxx
--- VTK-9.4.1/Rendering/ANARI/vtkAnariRendererNode.cxx.orig 2024-12-27 18:08:14.000000000 +0100
+++ VTK-9.4.1/Rendering/ANARI/vtkAnariRendererNode.cxx 2025-01-14 16:36:21.358276500 +0100
@@ -123,7 +123,7 @@
int ColorBufferTex{ 0 };
int DepthBufferTex{ 0 };
- std::vector<u_char> ColorBuffer;
+ std::vector<unsigned char> ColorBuffer;
std::vector<float> DepthBuffer;
int ImageX;
@@ -575,8 +575,8 @@
//----------------------------------------------------------------------------
void vtkAnariRendererNode::UpdateAnariFrameSize()
{
- const uvec2 frameSize = { static_cast<uint>(this->Size[0]), static_cast<uint>(this->Size[1]) };
- if ((uint)this->Internal->ImageX == frameSize[0] && (uint)this->Internal->ImageY == frameSize[1])
+ const uvec2 frameSize = { static_cast<unsigned int>(this->Size[0]), static_cast<unsigned int>(this->Size[1]) };
+ if ((unsigned int)this->Internal->ImageX == frameSize[0] && (unsigned int)this->Internal->ImageY == frameSize[1])
{
return;
}
@@ -1115,7 +1115,7 @@
for (int h = 0; h < 3; h++)
{
- *optr = static_cast<u_char>(((float)*iptr) * (A) + ((float)*optr) * (1 - A));
+ *optr = static_cast<unsigned char>(((float)*iptr) * (A) + ((float)*optr) * (1 - A));
optr++;
iptr++;
}

View File

@@ -4,8 +4,8 @@
_realname=vtk
pkgbase="mingw-w64-${_realname}"
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=9.3.1
pkgrel=7
pkgver=9.4.1
pkgrel=1
pkgdesc="A software system for 3D computer graphics, image processing and visualization (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
@@ -39,6 +39,8 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
"${MINGW_PACKAGE_PREFIX}-cmake"
"${MINGW_PACKAGE_PREFIX}-ninja"
"${MINGW_PACKAGE_PREFIX}-adios2"
"${MINGW_PACKAGE_PREFIX}-alembic"
$([[ ${MSYSTEM} == MINGW64 ]] || echo "${MINGW_PACKAGE_PREFIX}-anari-sdk")
"${MINGW_PACKAGE_PREFIX}-boost"
"${MINGW_PACKAGE_PREFIX}-cgns"
"${MINGW_PACKAGE_PREFIX}-cli11"
@@ -73,6 +75,7 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
"${MINGW_PACKAGE_PREFIX}-utf8cpp"
)
optdepends=("${MINGW_PACKAGE_PREFIX}-adios2: I/O ADIOS2"
"${MINGW_PACKAGE_PREFIX}-alembic: I/O Alembic"
"${MINGW_PACKAGE_PREFIX}-boost: InfovisBoost and InfovisBoostGraphAlgorithms modules"
"${MINGW_PACKAGE_PREFIX}-cgns: CGNS Reader"
"${MINGW_PACKAGE_PREFIX}-ffmpeg: I/O FFMPEG"
@@ -102,22 +105,33 @@ optdepends=("${MINGW_PACKAGE_PREFIX}-adios2: I/O ADIOS2"
"${MINGW_PACKAGE_PREFIX}-sqlite3: I/O SQL"
# "${MINGW_PACKAGE_PREFIX}-tk: TCL bindings, Python Tk widgets"
"${MINGW_PACKAGE_PREFIX}-unixodbc")
if [[ ${MSYSTEM} != MINGW64 ]]; then
optdepends+=("${MINGW_PACKAGE_PREFIX}-anari-sdk: ANARI Rendering")
fi
source=(https://www.vtk.org/files/release/${pkgver%.*}/VTK-${pkgver}.tar.gz
"001-no-exact-version-for-fast_float.patch"
"002-Fix-build-with-gcc-13.patch"
"002-llvm-19-compatibility.patch"
"003-fix-build-with-fmt-11.patch"
"004-accept-future-versions-of-boost-and-occ.patch"
"005-opencascade-7.8.patch"::https://gitlab.kitware.com/vtk/vtk/-/merge_requests/11159.patch
"005-remove-unused-method-from-mir-tables.patch"
"006-fix-compile-error-for-contour-tree-print.patch"
"007-dll-export-some-functions.patch"
"008-Fix-vtkm_openmp-exported-target.patch")
sha256sums=('8354ec084ea0d2dc3d23dbe4243823c4bfc270382d0ce8d658939fd50061cab8'
"008-update-to-diy-3.6.0.patch"
"009-diy-3-compatibility.patch"
"010-boost-math-requires-cxx-14.patch"
"011-anari-integer-types.patch")
sha256sums=('c253b0c8d002aaf98871c6d0cb76afc4936c301b72358a08d5f3f72ef8bc4529'
'411b0521fcd2864acae0af20ba6334f69f7c605c9e31996529f64aa749d61065'
'20733e97ccf9b0a8e615c75936ce5e4c1db0ac00e9cac30bc359d5912da38990'
'7c15ee91447c9199dafaa32eb3cf6afbf16e6306b7879a2dcd9f4ebc95c2e75e'
'410ddfbb2acb66746771a0e1f3ad81230904f712729af29cd26e8aaaa19dc48e'
'2d1795111b410e0fbb8e7b08fab2e83e37e74ca0d7fd6685d435d4b27f355b87'
'a44b3ba4bdc02be4767ff48b8a7fd4206a53756a881421fca99f538b08a7b48c'
'761183f537772c8a75e0b41d1587872895c4ecd02c3d4fadcac78ac952cc975d'
'a9b9292be90c259f0aa058e3f4a7a08b6218f20e6cb2a71e214acda2d2302a50'
'988ef1d43dadf1da157fc69398f545c6d2e82d2dabd7cb830e9fba9ebaba34ac')
'66e3ac19197fb9f6f49dc98a746919ed025619ab8dae433d153c22ca595d92bc'
'ace675cf8a9081532756b66d4f1ca1b03b12dad719b79e8cfa60ee6d60e2eeaf'
'6cc0c44b2cb9693b8ae101fdde186561633fc6e6629c6e797231331895baa5df'
'7602c7b4afa61f57f27022d4ea015c6e3c1d4ab8df5907ca828e08bb48c26b20'
'19ffd04b06b4c3c0c3f0b1b375cbac956191d4b7d3fa1066dc62bbfe78d69908'
'1d5e3b29631d976aea356ad2ed2f9a38ee1ac8eefdeb269655c0773556e44868'
'd76aa1788bbe2dd14390d4c7a4e65bcd652e4521324a7982ef7ead2306c82436')
# Helper macros to help make tasks easier #
apply_patch_with_msg() {
@@ -133,13 +147,17 @@ prepare() {
apply_patch_with_msg \
001-no-exact-version-for-fast_float.patch \
002-Fix-build-with-gcc-13.patch \
002-llvm-19-compatibility.patch \
003-fix-build-with-fmt-11.patch \
004-accept-future-versions-of-boost-and-occ.patch \
005-opencascade-7.8.patch \
008-Fix-vtkm_openmp-exported-target.patch
005-remove-unused-method-from-mir-tables.patch \
006-fix-compile-error-for-contour-tree-print.patch \
008-update-to-diy-3.6.0.patch \
009-diy-3-compatibility.patch \
010-boost-math-requires-cxx-14.patch \
011-anari-integer-types.patch
# Succeed with Clang but failed with GCC!
# Succeeds with Clang but fails with GCC!
if [[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]]; then
apply_patch_with_msg \
007-dll-export-some-functions.patch
@@ -157,7 +175,8 @@ build() {
fi
if [[ ${MSYSTEM} == MINGW64 ]]; then
_extra_config+=("-DVTK_MODULE_USE_EXTERNAL_VTK_verdict=OFF")
_extra_config+=("-DVTK_MODULE_ENABLE_VTK_RenderingAnari=NO"
"-DVTK_MODULE_USE_EXTERNAL_VTK_verdict=OFF")
fi
CFLAGS+=" ${CPPFLAGS}"
@@ -183,6 +202,7 @@ build() {
-DVTK_MODULE_USE_EXTERNAL_VTK_exprtk=OFF \
-DVTK_MODULE_USE_EXTERNAL_VTK_ioss=OFF \
-DVTK_MODULE_USE_EXTERNAL_VTK_pegtl=OFF \
-DVTK_MODULE_USE_EXTERNAL_VTK_token=OFF \
-DVTK_WRAP_JAVA=OFF \
-DVTK_WRAP_PYTHON=ON \
-DVTK_SMP_IMPLEMENTATION_TYPE=TBB \