# Maintainer: Konstantin Podsvirov _basename=chrono _realname=project${_basename} pkgbase=mingw-w64-${_realname} pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}" $([[ ${CARCH} == aarch64 ]] || echo "${MINGW_PACKAGE_PREFIX}-${_realname}-docs")) pkgver=9.0.1 _mjver=2.7.9 pkgrel=12 pkgdesc='High-performance C++ library for multiphysics and multibody dynamics simulations (mingw-w64)' arch=('any') mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64') url='https://projectchrono.org/' msys2_repository_url='https://github.com/projectchrono/chrono' license=('spdx:BSD-3-Clause') depends=("${MINGW_PACKAGE_PREFIX}-cc-libs" "${MINGW_PACKAGE_PREFIX}-glm" "${MINGW_PACKAGE_PREFIX}-glew" "${MINGW_PACKAGE_PREFIX}-glfw" "${MINGW_PACKAGE_PREFIX}-irrlicht" "${MINGW_PACKAGE_PREFIX}-omp" "${MINGW_PACKAGE_PREFIX}-python" "${MINGW_PACKAGE_PREFIX}-vsgimgui" "${MINGW_PACKAGE_PREFIX}-vsgxchange" "${MINGW_PACKAGE_PREFIX}-vulkan-loader" "${MINGW_PACKAGE_PREFIX}-vulkanscenegraph") makedepends=("${MINGW_PACKAGE_PREFIX}-cc" "${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" "${MINGW_PACKAGE_PREFIX}-swig" "${MINGW_PACKAGE_PREFIX}-eigen3" $([[ ${CARCH} == aarch64 ]] || echo \ "${MINGW_PACKAGE_PREFIX}-doxygen" \ "${MINGW_PACKAGE_PREFIX}-graphviz") "${MINGW_PACKAGE_PREFIX}-vulkan-headers") source=("${msys2_repository_url}/archive/${pkgver}/${_basename}-${pkgver}.tar.gz" "https://github.com/mathjax/MathJax/archive/${_mjver}/MathJax-${_mjver}.tar.gz" '0001-chrono-9.0.1-fix-build.patch' '0002-chrono-9.0.1-not-install-irrlicht.patch' '0003-chrono-9.0.1-fix-python.patch' '0004-chrono-9.0.1-local-mathjax.patch' '0005-chrono-9.0.1-not-install-glew-and-glfw.patch' '0006-chrono-9.0.1-vsg-shadow-settings.patch' '0007-eigen3-5-detection.patch' '0008-vsg-1.1.13.patch') sha256sums=('86da726ed3e3bacf682666b21d9c95dc87746b026dbafc722051a3202b822d39' 'c9167279c87da044f2ff910ad573a02ce90354cb59440ae568eb86e1630f65df' 'e0bb91f35ed4ddc3bee82d083be566174fbb5fc35d7c0fdb746461888a1b120c' '5c5f70d2c134fc90f52484f36e84464f7e040e483a09cc81a425ff2589377477' '2874a51c3cdb3848440e47b37b8d94624a90f59e10a97ae96d3378707aa942cc' '230a216716facc7d0633b175b968a419816ca72b9225ac07613d6278216ae41f' '1a4a34516b1667eb219ee17f15ac8359348874956a3f2094d70668f0cc0d573c' '56c0aa5fa0e2fe7b43026288cfce5c92afb83181bcd57445482481cfd6c8ca81' '07dba36c188a53bf5206397f9e2e6d4179bab745bd2c9ed223ce2f84ceefc24f' '3faed8171d6f2a5248ca04a3dce0b4eefa1571bf648a31fb19e499fac94a6abc') apply_patch_with_msg() { for _fname in "$@" do msg2 "Applying ${_fname}" patch -Nbp1 -i "${srcdir}"/${_fname} done } prepare() { cd "${_basename}-${pkgver}" apply_patch_with_msg \ 0001-chrono-9.0.1-fix-build.patch \ 0002-chrono-9.0.1-not-install-irrlicht.patch \ 0003-chrono-9.0.1-fix-python.patch \ 0004-chrono-9.0.1-local-mathjax.patch \ 0005-chrono-9.0.1-not-install-glew-and-glfw.patch \ 0006-chrono-9.0.1-vsg-shadow-settings.patch \ 0007-eigen3-5-detection.patch \ 0008-vsg-1.1.13.patch } build() { declare -a extra_config if check_option "debug" "n"; then extra_config+=("-DCMAKE_BUILD_TYPE=Release") else extra_config+=("-DCMAKE_BUILD_TYPE=Debug") fi MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ cmake \ -GNinja \ -DCMAKE_INSTALL_PREFIX="${MINGW_PREFIX}" \ "${extra_config[@]}" \ -DBUILD_{SHARED,STATIC}_LIBS=ON \ -DENABLE_MODULE_IRRLICHT=ON \ -DENABLE_MODULE_OPENGL=ON \ -DENABLE_MODULE_VSG=ON \ -DENABLE_MODULE_PYTHON=ON \ -DIRRLICHT_INSTALL_DIR="${MINGW_PREFIX}" \ -DBUILD_DEMOS=OFF \ -DBUILD_TESTING=OFF \ -S "${_basename}-${pkgver}" \ -B "build-${MSYSTEM}" cmake --build "build-${MSYSTEM}" if [[ ${CARCH} == x86_64 ]]; then cd "${srcdir}/${_basename}-${pkgver}/"doxygen doxygen Doxyfile fi } check() { cmake \ -DBUILD_TESTING=ON \ -S "${_basename}-${pkgver}" \ -B "build-${MSYSTEM}" cmake --build "build-${MSYSTEM}" --target test } package_projectchrono() { DESTDIR="${pkgdir}" cmake --install "build-${MSYSTEM}" MSYS2_ARG_CONV_EXCL="-p" \ python -m compileall -o 0 -o 1 -q -s"${pkgdir}" -p"/" "${pkgdir}${MINGW_PREFIX}" install -Dm644 "${srcdir}"/${_basename}-${pkgver}/LICENSE \ "${pkgdir}"${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE } package_projectchrono-docs() { pkgdesc+=" (Documentation)" depends=() install -d "${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/html/" cp -r -t "${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/html/" build-doxygen/html/* install -d "${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/mathjax/" cp -r -t "${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/mathjax/" MathJax-${_mjver}/* } # vim: set ft=bash : # generate wrappers for _name in "${pkgname[@]}"; do _short="package_${_name#${MINGW_PACKAGE_PREFIX}-}" _func="$(declare -f "${_short}")" eval "${_func/#${_short}/package_${_name}}" done