1 # Maintainer: Bruno Pagani <archange at archlinux dot org>
2 # Contributor: Evgeniy Alekseev <arcanis at archlinux dot org>
3 # Contributor: Michael Migliore <mcmigliore+aur@gmail.com>
4 # Contributor: Ray Rashif <schiv at archlinux dot org>
5 # Contributor: Andrzej Giniewicz <gginiu at gmail dot com>
6 # Contributor: Thomas Dziedzic <gostrc at gmail>
11 pkgdesc="Software system for 3D computer graphics, image processing, and visualization"
13 url="https://www.vtk.org/"
80 # pegtl: https://gitlab.kitware.com/vtk/vtk/-/issues/18151
81 # exprtk, ioss: not packaged
90 'gnuplot: plotting tools'
91 'graphviz: drawing tools'
93 'java-runtime=11: java bindings'
102 'openmpi: OpenMPI support'
110 'python: python bindings'
111 'python-matplotlib: for Matplotlib rendering'
112 'python-mpi4py: OpenMPI python support'
113 'qt5-declarative: QML plugin'
120 source=(${url}/files/release/${pkgver%.*}/VTK-${pkgver}.tar.gz
121 https://github.com/Kitware/VTK/commit/1233ceec.patch
122 https://github.com/Kitware/VTK/commit/4d8283bc.patch)
123 sha256sums=('06fc8d49c4e56f498c40fcb38a563ed8d4ec31358d0101e8988f0bb4d539dd12'
124 '5f662d5052dc07ee43d690c5ffdc1880c5c6c4236945c03a40177ae3a6dc5917'
125 '82eae5864704b1d955c905d75e565380829b05bb6300c4614da2d19834e15014')
128 cd ${pkgname^^}-${pkgver}
129 # We have a patched fmt
130 sed -i "s|8.1.0|9.0.0|" ThirdParty/fmt/CMakeLists.txt
132 patch -p1 -i ../1233ceec.patch # Fix build with GCC 13
133 patch -p1 -i ../4d8283bc.patch
137 # To help cmake find java
138 export JAVA_HOME=/usr/lib/jvm/default
139 # To set tcl lib path
140 local _tkver=$(echo 'puts $tcl_version' | tclsh)
141 cmake -B build -S ${pkgname^^}-${pkgver} \
142 -DCMAKE_BUILD_TYPE=Release \
143 -DCMAKE_CXX_FLAGS="$CXXFLAGS -ffat-lto-objects" \
144 -DCMAKE_INSTALL_PREFIX=/usr \
145 -DCMAKE_INSTALL_LICENSEDIR=share/licenses/vtk \
146 -DCMAKE_SKIP_RPATH=OFF \
147 -DCMAKE_SKIP_INSTALL_RPATH=ON \
148 -DCMAKE_JAVA_COMPILE_FLAGS="-Xlint:-options" \
149 -DBUILD_SHARED_LIBS=ON \
150 -DVTK_BUILD_ALL_MODULES=ON \
151 -DVTK_INSTALL_TCL_DIR=/usr/lib/tcl${_tkver}/vtk/ \
152 -DVTK_LEGACY_REMOVE=ON \
153 -DVTK_SMP_ENABLE_OPENMP=ON \
154 -DVTK_SMP_IMPLEMENTATION_TYPE=TBB \
155 -DVTK_PYTHON_VERSION=3 \
158 -DVTK_VERSIONED_INSTALL=OFF \
160 -DVTK_WRAP_PYTHON=ON \
161 -DVTKOSPRAY_ENABLE_DENOISER=ON \
162 -DVTKm_ENABLE_HDF5_IO=ON \
163 -DVTKm_ENABLE_MPI=ON \
164 -DVTKm_ENABLE_OPENMP=ON \
165 -DVTK_USE_EXTERNAL=ON \
166 -DVTK_MODULE_USE_EXTERNAL_VTK_exprtk=OFF \
167 -DVTK_MODULE_USE_EXTERNAL_VTK_ioss=OFF \
168 -DVTK_MODULE_USE_EXTERNAL_VTK_pegtl=OFF \
169 -DVTK_MODULE_ENABLE_VTK_DomainsMicroscopy=NO \
170 -DVTK_MODULE_ENABLE_VTK_FiltersOpenTURNS=NO \
171 -DOpenGL_GL_PREFERENCE=LEGACY \
173 # -DFIDES_USE_EXTERNAL_RAPIDJSON=ON \
178 make -C build DESTDIR="${pkgdir}" install
180 # Move the vtk.jar to the arch-specific location…
181 install -dv "${pkgdir}"/usr/share/java/vtk
182 mv -v "${pkgdir}"/usr/lib/java/vtk.jar "${pkgdir}"/usr/share/java/vtk
183 # …and the libs to the proper place
184 mv "${pkgdir}"/usr/lib/java/vtk-Linux-${CARCH}/*.so "${pkgdir}"/usr/lib/
185 rmdir "${pkgdir}"/usr/lib/java/{vtk-Linux-${CARCH}/,}
187 # byte-compile python modules since the CMake build does not do it
188 local site_packages=$(python -c "import site; print(site.getsitepackages()[0])")
189 python -m compileall -o 0 -o 1 -o 2 --hardlink-dupes -s "${pkgdir}" "${pkgdir}"${site_packages}
191 # Remove third party CMake patching for older versions than ours
192 rm -rv "${pkgdir}"/usr/lib/cmake/vtk/patches/3.{1{3,6,9},20}
193 # … as well as duplicate copies
194 rm -rv "${pkgdir}"/usr/lib/cmake/vtk/vtkm/{Find*.cmake,cmake/{Find*.cmake,3.15}}