# Maintainer: Sergey Popov # Contributor: Mario Emmenlauer _realname=vtk pkgbase="mingw-w64-${_realname}" pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=9.5.2 pkgrel=7 pkgdesc="A software system for 3D computer graphics, image processing and visualization (mingw-w64)" arch=('any') mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64') url="https://www.vtk.org/" msys2_repository_url="https://gitlab.kitware.com/vtk/vtk" msys2_references=( 'archlinux: vtk' "cpe: cpe:/a:vtk:vtk" ) license=("spdx:BSD-3-Clause") depends=("${MINGW_PACKAGE_PREFIX}-cc-libs" "${MINGW_PACKAGE_PREFIX}-double-conversion" "${MINGW_PACKAGE_PREFIX}-expat" "${MINGW_PACKAGE_PREFIX}-fmt" "${MINGW_PACKAGE_PREFIX}-freetype" "${MINGW_PACKAGE_PREFIX}-glew" "${MINGW_PACKAGE_PREFIX}-tbb" "${MINGW_PACKAGE_PREFIX}-jsoncpp" "${MINGW_PACKAGE_PREFIX}-libharu" "${MINGW_PACKAGE_PREFIX}-libjpeg" "${MINGW_PACKAGE_PREFIX}-libtiff" "${MINGW_PACKAGE_PREFIX}-libwinpthread" "${MINGW_PACKAGE_PREFIX}-lz4" "${MINGW_PACKAGE_PREFIX}-omp" "${MINGW_PACKAGE_PREFIX}-openxr-sdk" "${MINGW_PACKAGE_PREFIX}-pugixml" $([[ ${MSYSTEM} == MINGW64 ]] || echo \ "${MINGW_PACKAGE_PREFIX}-verdict" \ "${MINGW_PACKAGE_PREFIX}-viskores") "${MINGW_PACKAGE_PREFIX}-xz" "${MINGW_PACKAGE_PREFIX}-zlib") 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}-scnlib") "${MINGW_PACKAGE_PREFIX}-boost" "${MINGW_PACKAGE_PREFIX}-cgns" "${MINGW_PACKAGE_PREFIX}-cli11" "${MINGW_PACKAGE_PREFIX}-eigen3" "${MINGW_PACKAGE_PREFIX}-fast_float" "${MINGW_PACKAGE_PREFIX}-ffmpeg" "${MINGW_PACKAGE_PREFIX}-fontconfig" "${MINGW_PACKAGE_PREFIX}-gdal" "${MINGW_PACKAGE_PREFIX}-gl2ps" "${MINGW_PACKAGE_PREFIX}-hdf5" "${MINGW_PACKAGE_PREFIX}-liblas" "${MINGW_PACKAGE_PREFIX}-libmariadbclient" "${MINGW_PACKAGE_PREFIX}-libpng" "${MINGW_PACKAGE_PREFIX}-libogg" "${MINGW_PACKAGE_PREFIX}-libtheora" "${MINGW_PACKAGE_PREFIX}-libxml2" "${MINGW_PACKAGE_PREFIX}-netcdf" "${MINGW_PACKAGE_PREFIX}-openslide" "${MINGW_PACKAGE_PREFIX}-opencascade" "${MINGW_PACKAGE_PREFIX}-openturns" "${MINGW_PACKAGE_PREFIX}-openvdb" "${MINGW_PACKAGE_PREFIX}-openvr" "${MINGW_PACKAGE_PREFIX}-pdal" # "${MINGW_PACKAGE_PREFIX}-pegtl" https://gitlab.kitware.com/vtk/vtk/-/issues/18151 "${MINGW_PACKAGE_PREFIX}-postgresql" "${MINGW_PACKAGE_PREFIX}-proj" "${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-qt6-declarative" "${MINGW_PACKAGE_PREFIX}-sqlite3" # "${MINGW_PACKAGE_PREFIX}-tk" "${MINGW_PACKAGE_PREFIX}-unixodbc" "${MINGW_PACKAGE_PREFIX}-utf8cpp" ) optdepends=("${MINGW_PACKAGE_PREFIX}-adios2: I/O ADIOS2" "${MINGW_PACKAGE_PREFIX}-alembic: I/O Alembic" "${MINGW_PACKAGE_PREFIX}-boost-libs: InfovisBoost and InfovisBoostGraphAlgorithms modules" "${MINGW_PACKAGE_PREFIX}-cgns: CGNS Reader" "${MINGW_PACKAGE_PREFIX}-ffmpeg: I/O FFMPEG" "${MINGW_PACKAGE_PREFIX}-fontconfig: Fontconfig Rendering" "${MINGW_PACKAGE_PREFIX}-gdal: I/O GDAL" "${MINGW_PACKAGE_PREFIX}-gl2ps: PS Rendering" "${MINGW_PACKAGE_PREFIX}-hdf5: I/O HDF5" "${MINGW_PACKAGE_PREFIX}-liblas: I/O LAS" "${MINGW_PACKAGE_PREFIX}-libmariadbclient: I/O MySQL/MariaDB" "${MINGW_PACKAGE_PREFIX}-libpng: I/O PNG Images" "${MINGW_PACKAGE_PREFIX}-libogg: I/O OGG and Theora" "${MINGW_PACKAGE_PREFIX}-libtheora: I/O OGG and Theora" "${MINGW_PACKAGE_PREFIX}-libxml2: I/O Infovis" "${MINGW_PACKAGE_PREFIX}-netcdf: I/O netCDF" "${MINGW_PACKAGE_PREFIX}-opencascade: I/O OCCT" "${MINGW_PACKAGE_PREFIX}-openslide: DomainsMicroscopy" "${MINGW_PACKAGE_PREFIX}-openturns: OpenTURNS Filter" "${MINGW_PACKAGE_PREFIX}-openvdb: I/O OpenVDB" "${MINGW_PACKAGE_PREFIX}-openvr: OpenVR Rendering" "${MINGW_PACKAGE_PREFIX}-pdal: I/O PDAL" "${MINGW_PACKAGE_PREFIX}-postgresql: I/O PostgreSQL" "${MINGW_PACKAGE_PREFIX}-proj: GEOVis" "${MINGW_PACKAGE_PREFIX}-python: Python bindings" "${MINGW_PACKAGE_PREFIX}-python-matplotlib: Matplotlib renderer" "${MINGW_PACKAGE_PREFIX}-qt6-base: Qt Rendering" "${MINGW_PACKAGE_PREFIX}-qt6-declarative: Qt Qml plugin" "${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-fmt-12.patch" "004-accept-future-versions-of-boost-and-occ.patch" "007-dll-export-some-functions.patch") sha256sums=('cee64b98d270ff7302daf1ef13458dff5d5ac1ecb45d47723835f7f7d562c989' 'a978ec60b9ef3a9a19265b4e502a602cff016a5cbfc7801398dc1f2f7206a1d9' '91d2219d329879a79c9a139fcaab83667d1469098cd307529ac2809e4a30725d' 'a44b3ba4bdc02be4767ff48b8a7fd4206a53756a881421fca99f538b08a7b48c' '61c334b3050f675ee65f92163719da3e75688e490971ffcc9c4cd95eb90d762a') # Helper macros to help make tasks easier # apply_patch_with_msg() { for _patch in "$@" do msg2 "Applying ${_patch}" patch -Nbp1 -i "${srcdir}/${_patch}" done } prepare() { cd "${srcdir}/${_realname}-${pkgver}" apply_patch_with_msg \ 001-no-exact-version-for-fast_float.patch \ 002-fix-build-with-fmt-12.patch \ 004-accept-future-versions-of-boost-and-occ.patch # Succeeds with Clang but fails with GCC! if [[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]]; then apply_patch_with_msg \ 007-dll-export-some-functions.patch fi } build() { mkdir -p "${srcdir}"/build-${MSYSTEM} && cd "${srcdir}"/build-${MSYSTEM} declare -a _extra_config if check_option "debug" "n"; then _extra_config+=("-DCMAKE_BUILD_TYPE=Release") else _extra_config+=("-DCMAKE_BUILD_TYPE=Debug") fi if [[ ${MSYSTEM} == MINGW64 ]]; then _extra_config+=("-DVTK_MODULE_ENABLE_VTK_RenderingAnari=NO" "-DVTK_MODULE_USE_EXTERNAL_VTK_scn=OFF" "-DVTK_MODULE_USE_EXTERNAL_VTK_verdict=OFF" "-DVTK_MODULE_USE_EXTERNAL_VTK_vtkviskores=OFF") fi CFLAGS+=" ${CPPFLAGS}" CXXFLAGS+=" ${CPPFLAGS} -D_USE_MATH_DEFINES -w" MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ ${MINGW_PREFIX}/bin/cmake \ -Wno-dev \ -G"Ninja" \ -DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \ -DCMAKE_INSTALL_LICENSEDIR=share/licenses/vtk \ -DBUILD_SHARED_LIBS=ON \ -DPython3_EXECUTABLE="${MINGW_PREFIX}/bin/python.exe" \ -DVTK_BUILD_TESTING=OFF \ -DVTK_VERSIONED_INSTALL=OFF \ -DVTK_BUILD_ALL_MODULES=ON \ -DVTK_GROUP_ENABLE_MPI=NO \ -DVTK_GROUP_ENABLE_Web=NO \ -DVTK_MODULE_ENABLE_VTK_FiltersParallelVerdict=WANT \ -DVTK_MODULE_ENABLE_VTK_FiltersTemporal=WANT \ -DVTK_MODULE_ENABLE_VTK_IOERF=WANT \ -DVTK_MODULE_ENABLE_VTK_IOFDS=WANT \ -DVTK_MODULE_ENABLE_VTK_RenderingOpenXRRemoting=NO \ -DVTK_MODULE_ENABLE_VTK_RenderingZSpace=NO \ -DVTK_USE_EXTERNAL=ON \ -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 \ -DVTK_SMP_ENABLE_SEQUENTIAL=ON \ -DVTK_SMP_ENABLE_STDTHREAD=ON \ -DVTK_SMP_ENABLE_OPENMP=ON \ -DVTK_USE_VIDEO_FOR_WINDOWS=ON \ -DVTK_ENABLE_OSPRAY=OFF \ -DVTK_ENABLE_REMOTE_MODULES=OFF \ "${_extra_config[@]}" \ ../${_realname}-${pkgver} ${MINGW_PREFIX}/bin/cmake --build . } package() { cd "${srcdir}/build-${MSYSTEM}" DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install . install -Dm644 "${srcdir}"/${_realname}-${pkgver}/Copyright.txt \ "${pkgdir}"${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE # Remove third party CMake patching for older versions than ours rm -rv "${pkgdir}"${MINGW_PREFIX}/lib/cmake/vtk/patches/3.{1{3,6,9},2{0,2,3}} }