#!/bin/sh #------------------------------------------------------------------------------ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2017-2021 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # Script # makeOPENMPI # # Description # Build script for openmpi # # ---------------------------------------------- # 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 package="openmpi" libName="libmpi" for lib in \ "$dir/lib/$libName.a" \ "$dir/lib/$libName$EXT_SO" \ "$dir/lib$WM_COMPILER_LIB_ARCH/$libName.a" \ "$dir/lib$WM_COMPILER_LIB_ARCH/$libName$EXT_SO" \ ; do if [ -r "$lib" ] then echo "Have $package library (${dir##*/})" exit 0 fi done echo "No $package libraries found: ${dir:-not-specified}" 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 # Transition _foamAddLib() { true; } _foamAddMan() { true; } _foamAddPath() { true; } #------------------------------------------------------------------------------ # Obtain version from OpenFOAM etc/config.sh file: WM_MPLIB=OPENMPI # Ensure we get the correct MPI _foamConfig mpi PACKAGE="${FOAM_MPI:-system}" #------------------------------------------------------------------------------ printVersions() { listPackageVersions openmpi; exit 0; } printHelp() { cat</dev/null || true rm -rf "$PKG_PREFIX" rm -rf "$PKG_BUILD" mkdir -p "$PKG_BUILD" # The real prefix is /path/ThirdParty/platforms/arch/openmpi-x.y.z # but configure with prefix="/arch/openmpi-x.y.z" # and install into "/path/ThirdParty/platforms" # The final binaries are then independent of the build location and # will always require OPAL_PREFIX to run local_destdir="$(dirname $PKG_PREFIX)" local_prefix="/$(basename $local_destdir)/$(basename $PKG_PREFIX)" local_destdir="$(dirname $local_destdir)" echo echo "configured prefix: $local_prefix" echo "install directory: $local_destdir" echo # Do not specify '--libdir' or relocating becomes difficult cd "$PKG_BUILD" && set -x && \ "$PKG_SOURCE"/configure \ --prefix="$local_prefix" \ --disable-orterun-prefix-by-default \ --enable-shared --disable-static \ --enable-mpi-fortran=none \ $configOpt \ && set +x \ && make -j $WM_NCOMPPROCS \ && make install DESTDIR="$local_destdir" \ && echo "Built: $PACKAGE" ) || { echo "Error building: $PACKAGE" exit 1 } # Unneeded generated files for dir in share/doc share/info share/man do if [ -d "$PKG_PREFIX/$dir" ] then echo "Discard $dir files to save space: $PACKAGE" rm -rf "$PKG_PREFIX/$dir" fi done rmdir "$PKG_PREFIX"/share 2>/dev/null || true fi #------------------------------------------------------------------------------