From 717fe5ddc03f05b53dc2c0bf175bc9010e1a2e2c Mon Sep 17 00:00:00 2001 From: Mehdi Chinoune Date: Sat, 11 Sep 2021 05:29:49 +0100 Subject: [PATCH] Fix building HDF on clang subsystems - Disable Fortran - Enable clang32 --- mingw-w64-hdf4/PKGBUILD | 29 ++++++++++++-------- mingw-w64-hdf5/PKGBUILD | 56 ++++++++++++++++++++++++--------------- mingw-w64-netcdf/PKGBUILD | 2 +- 3 files changed, 53 insertions(+), 34 deletions(-) diff --git a/mingw-w64-hdf4/PKGBUILD b/mingw-w64-hdf4/PKGBUILD index cee3b58023..d17ce0fafe 100644 --- a/mingw-w64-hdf4/PKGBUILD +++ b/mingw-w64-hdf4/PKGBUILD @@ -7,7 +7,7 @@ pkgver=4.2.15 pkgrel=3 pkgdesc="Legacy HDF4 driver for GDAL (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url='https://support.hdfgroup.org/products/hdf4/' license=('GPL2') source=(#"https://support.hdfgroup.org/ftp/HDF/HDF_Current/src/${_realname}-${pkgver}.tar.gz" @@ -18,11 +18,13 @@ sha256sums=('bde035ef5a1cd5fdbd0a7f1fa5c17e98bbd599300189ac4d234f16e9bb7bcb12' 'f842fb5efe99b8ad3e4ecb7683af106c4891d994abb44adf8fd34a54cb729a38' '0362725aa964bff6318d37740481e462d77c2d1c39cccc86690773de3d69e94c') depends=("${MINGW_PACKAGE_PREFIX}-libjpeg-turbo" - "${MINGW_PACKAGE_PREFIX}-gcc-libgfortran" - "${MINGW_PACKAGE_PREFIX}-zlib") + "${MINGW_PACKAGE_PREFIX}-zlib" + $([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] || echo "${MINGW_PACKAGE_PREFIX}-gcc-libgfortran") + ) makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" "${MINGW_PACKAGE_PREFIX}-ninja" - "${MINGW_PACKAGE_PREFIX}-gcc-fortran") + $([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] || echo "${MINGW_PACKAGE_PREFIX}-gcc-fortran") + ) options=('strip' 'staticlibs') prepare() { @@ -32,34 +34,39 @@ prepare() { } build() { - [[ -d "${srcdir}"/build-${CARCH} ]] && rm -rf "${srcdir}"/build-${CARCH} - mkdir -p "${srcdir}"/build-${CARCH} && cd "${srcdir}"/build-${CARCH} + [[ -d "${srcdir}"/build-${MSYSTEM} ]] && rm -rf "${srcdir}"/build-${MSYSTEM} + mkdir -p "${srcdir}"/build-${MSYSTEM} && cd "${srcdir}"/build-${MSYSTEM} + local -a _enable_fortran if [[ ${MINGW_PACKAGE_PREFIX} != *-clang-* ]]; then + _enable_fortran="ON" export FFLAGS="-fallow-argument-mismatch" + else + _enable_fortran="OFF" fi MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ - ${MINGW_PREFIX}/bin/cmake.exe \ + cmake \ -G"Ninja" \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ -DCMAKE_BUILD_TYPE="Release" \ -DBUILD_SHARED_LIBS=ON \ -DHDF4_BUILD_TOOLS=OFF \ -DHDF4_BUILD_UTILS=ON \ - -DHDF4_BUILD_FORTRAN=ON \ + -DHDF4_BUILD_FORTRAN=${_enable_fortran} \ -DHDF4_NO_PACKAGES=ON \ -DHDF4_ENABLE_NETCDF=OFF \ -DHDF4_INSTALL_CMAKE_DIR="lib/cmake" \ -DHDF4_INSTALL_DATA_DIR="share/docs/hdf4" \ ../${_realname}-${pkgver} - ${MINGW_PREFIX}/bin/cmake.exe --build ./ + cmake --build . } package() { - cd "${srcdir}"/build-${CARCH} - DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake.exe --build ./ --target install + cd "${srcdir}"/build-${MSYSTEM} + + DESTDIR="${pkgdir}" cmake --install . local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX}) for _f in "${pkgdir}${MINGW_PREFIX}"/lib/cmake/hdf4/*.cmake; do diff --git a/mingw-w64-hdf5/PKGBUILD b/mingw-w64-hdf5/PKGBUILD index d8fc00533a..44f9a7b121 100644 --- a/mingw-w64-hdf5/PKGBUILD +++ b/mingw-w64-hdf5/PKGBUILD @@ -10,9 +10,19 @@ pkgver=${_ver}${patch//-/.} pkgrel=4 pkgdesc="General purpose library and file format for storing scientific data (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') license=("custom") url="https://www.hdfgroup.org/HDF5/" +depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" + "${MINGW_PACKAGE_PREFIX}-libaec" + "${MINGW_PACKAGE_PREFIX}-zlib" + $([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] || echo "${MINGW_PACKAGE_PREFIX}-gcc-libgfortran") + ) +makedepends=("${MINGW_PACKAGE_PREFIX}-cmake" + "${MINGW_PACKAGE_PREFIX}-ninja" + $([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] || echo "${MINGW_PACKAGE_PREFIX}-gcc-fortran") + ) +options=('staticlibs' 'strip') source=("https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${_ver%.*}/hdf5-${_ver}${patch}/src/hdf5-${_ver}${patch}.tar.bz2" "hdf5-default-import-suffix.patch" "hdf5-proper-library-names-mingw.patch" @@ -25,16 +35,6 @@ sha256sums=('97906268640a6e9ce0cde703d5a71c9ac3092eded729591279bf2e3ca9765f61' '2f4438d780c897e06481231688a61251738ee84550dde7e0153a3d09b9ede1f7' '92322234b82fb47ee1b2a9998955f3e5d944fd0290a7b0016b6c037671571a1e' '76995487009646600c8953e7c568d9050f084924f9a3a3ad7c784d1002d2c5fc') -depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" - "${MINGW_PACKAGE_PREFIX}-gcc-libgfortran" - "${MINGW_PACKAGE_PREFIX}-libaec" - "${MINGW_PACKAGE_PREFIX}-zlib") -makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" - "${MINGW_PACKAGE_PREFIX}-gcc-fortran" - "${MINGW_PACKAGE_PREFIX}-cmake" - "${MINGW_PACKAGE_PREFIX}-ninja" - "patch") -options=('staticlibs' 'strip') prepare() { cd "${srcdir}/${_realname}-${_ver}${patch}" @@ -46,11 +46,19 @@ prepare() { } build() { - [[ -d ${srcdir}/build-${MINGW_CHOST} ]] && rm -rf ${srcdir}/build-${MINGW_CHOST} - mkdir -p ${srcdir}/build-${MINGW_CHOST} && cd ${srcdir}/build-${MINGW_CHOST} + [[ -d ${srcdir}/build-${MSYSTEM} ]] && rm -rf ${srcdir}/build-${MSYSTEM} + mkdir -p ${srcdir}/build-${MSYSTEM} && cd ${srcdir}/build-${MSYSTEM} + + local -a _enable_fortran + if [[ "${MINGW_PACKAGE_PREFIX}" == *-clang-* ]]; then + _enable_fortran="OFF" + else + _enable_fortran="ON" + fi + MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ SZIP_INSTALL=${MINGW_PREFIX} \ - ${MINGW_PREFIX}/bin/cmake \ + cmake \ -Wno-dev \ -GNinja \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ @@ -60,7 +68,7 @@ build() { -DCMAKE_SKIP_RPATH=ON \ -DHDF5_BUILD_HL_LIB=ON \ -DHDF5_BUILD_CPP_LIB=ON \ - -DHDF5_BUILD_FORTRAN=ON \ + -DHDF5_BUILD_FORTRAN=${_enable_fortran} \ -DHDF5_BUILD_TOOLS=ON \ -DHDF5_ENABLE_DEPRECATED_SYMBOLS=ON \ -DHDF5_ENABLE_SZIP_SUPPORT=ON \ @@ -69,16 +77,20 @@ build() { -DHDF5_INSTALL_DATA_DIR="share/doc/hdf5" \ ../${_realname}-${_ver}${patch} - ${MINGW_PREFIX}/bin/cmake --build . + cmake --build . } package() { - mkdir -p ${srcdir}/build-${MINGW_CHOST}/bin/static/Release/ - mkdir -p ${srcdir}/build-${MINGW_CHOST}/bin/shared/Release/ - cp ${srcdir}/build-${MINGW_CHOST}/bin/static/*.mod ${srcdir}/build-${MINGW_CHOST}/bin/static/Release - cp ${srcdir}/build-${MINGW_CHOST}/bin/shared/*.mod ${srcdir}/build-${MINGW_CHOST}/bin/shared/Release - cd "${srcdir}/build-${MINGW_CHOST}" - DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --build . --target install + cd "${srcdir}/build-${MSYSTEM}" + + if [[ "${MINGW_PACKAGE_PREFIX}" != *-clang-* ]]; then + mkdir -p ${srcdir}/build-${MSYSTEM}/bin/static/Release/ + mkdir -p ${srcdir}/build-${MSYSTEM}/bin/shared/Release/ + cp ${srcdir}/build-${MSYSTEM}/bin/static/*.mod ${srcdir}/build-${MSYSTEM}/bin/static/Release + cp ${srcdir}/build-${MSYSTEM}/bin/shared/*.mod ${srcdir}/build-${MSYSTEM}/bin/shared/Release + fi + + DESTDIR="${pkgdir}" cmake --install . local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX}) for _f in "${pkgdir}${MINGW_PREFIX}"/lib/cmake/hdf5/*.cmake; do diff --git a/mingw-w64-netcdf/PKGBUILD b/mingw-w64-netcdf/PKGBUILD index 4c54f7f932..283a0174ed 100644 --- a/mingw-w64-netcdf/PKGBUILD +++ b/mingw-w64-netcdf/PKGBUILD @@ -7,7 +7,7 @@ pkgver=4.7.4 pkgrel=2 pkgdesc="Interface for scientific data access to large binary data (mingw-w64)" arch=('any') -mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') +mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') license=('custom') url="https://www.unidata.ucar.edu/software/netcdf/" depends=("${MINGW_PACKAGE_PREFIX}-curl"