#!/bin/sh #------------------------------------------------------------------------------ # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2024 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # Script # makeHDF5 # # Description # Build script for HDF5 # # ---------------------------------------------- # NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE #------------------------------------------------------------------------------ # Dynamic library ending (default is .so) [ "$(uname -s)" = Darwin ] && EXT_SO=.dylib || EXT_SO=.so # Short-circuit test for an installation if [ "$1" = "-test" ] then [ "$#" -eq 2 ] || { echo "${0##*/} -test : needs 1 argument"; exit 1; } dir="${2%/}" # <- *_ARCH_PATH [ -d "$dir/include" ] || exit 2 package="hdf5" libName="hdf5" for lib in \ "$dir/lib/$libName$EXT_SO" \ "$dir/lib$WM_COMPILER_LIB_ARCH/$libName$EXT_SO" \ ; do if [ -r "$lib" ] then echo " $package include: $dir/include" echo " $package library: ${lib%/*}" exit 0 fi done exit 2 fi #------------------------------------------------------------------------------ if : # Run from third-party directory then cd "${0%/*}" || exit wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" echo " Check your OpenFOAM environment and installation" exit 1 } fi . "${WM_THIRD_PARTY_DIR:?}"/etc/tools/ThirdPartyFunctions . "${WM_THIRD_PARTY_DIR:?}"/etc/tools/CMakeFunctions #------------------------------------------------------------------------------ # Obtain version from OpenFOAM etc/config.sh file: _foamConfig hdf5 PACKAGE="${hdf5_version:-none}" # Hint for cmake findMPI if [ -d "$MPI_ARCH_PATH" ] then export MPI_HOME="$MPI_ARCH_PATH" fi #------------------------------------------------------------------------------ printVersions() { listPackageVersions hdf5; exit 0; } printHelp() { cat< $FOAM_EXT_LIBBIN/$FOAM_MPI # echo echo ======================================== echo "Build hdf5 library $PACKAGE for $FOAM_MPI" echo # Needs future adjustment # - for mpi-specific library locations if [ -z "$optForce" ] \ && [ -f "$PKG_PREFIX/include/hdf5.h" ] \ && { [ -r "$PKG_PREFIX/lib/libhdf5$EXT_SO" ] \ || [ -r "$PKG_PREFIX/lib$WM_COMPILER_LIB_ARCH/libhdf5$EXT_SO" ] } then echo " HDF5 already built : $PKG_PREFIX" else # CMake options often lag the configure ones echo "Starting build: $PACKAGE (using cmake)" echo ( PKG_BUILD="$buildBASE/$PACKAGE" cd "$PKG_SOURCE" || exit applyPatch "$PACKAGE" "$PKG_SOURCE" # Remove any existing build folder and recreate rm -rf "$PKG_PREFIX" rm -rf "$PKG_BUILD" mkdir -p "$PKG_BUILD" # May not work properly with FOAM_MPI = dummy if [ "$FOAM_MPI" != dummy ] then CC=mpicc CXX=mpicxx fi cmake=$(findCMake) # Installs into lib64/ cd "$PKG_BUILD" && set -x && \ ${cmake:?} \ -DCMAKE_INSTALL_PREFIX="$PKG_PREFIX" \ -DCMAKE_BUILD_TYPE=Release \ -DHDF5_BUILD_FORTRAN=FALSE \ -DHDF5_BUILD_TESTING=FALSE \ -DHDF5_BUILD_STATIC_LIBS=FALSE \ ${WM_QUIET:+-DCMAKE_RULE_MESSAGES=OFF} \ "$PKG_SOURCE" \ && make -j $WM_NCOMPPROCS all \ && make install \ && echo "Built: $PACKAGE" ) || { echo "Error building: $PACKAGE" exit 1 } fi # -----------------------------------------------------------------------------