Files
ThirdParty-common/makeMVAPICH
Mark Olesen 0d0f439dde ENH: reproducible build naming for openmpi
- configure with the arch + package only for the prefix.
  When OPAL_PREFIX is unset, yields this type of information:

      Prefix: /linux64Gcc/openmpi-4.0.3
      Libdir: /linux64Gcc/openmpi-4.0.3/lib

  This ensures that the final binaries do not have the original build
  location, which makes for more reliable testing before shipping.

ENH: improve handling of header-only CGAL

- test for existence now also checks our cached build information
  for header-only configuration

- cleanup build artifacts from boost (in-source build).
  Skip install of generated man, info, doc pages.
  These are usually browsed/searched elsewhere anyhow.
2021-12-09 16:30:28 +01:00

203 lines
5.6 KiB
Bash
Executable File

#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | www.openfoam.com
# \\/ M anipulation |
#------------------------------------------------------------------------------
# Copyright (C) 2019-2021 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
#
# Script
# makeMVAPICH2
#
# Description
# Build script for mvapich2 [unmaintained]
#
# ----------------------------------------------
# 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="mvapich"
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=MVA2MPI # Ensure we get the correct MPI
_foamConfig mpi
PACKAGE="${FOAM_MPI:-system}"
#------------------------------------------------------------------------------
printVersions() { listPackageVersions mvapich; exit 0; }
printHelp() {
cat<<USAGE
Usage: ${0##*/} [OPTION] [mvapich2-VERSION] [-- configure-options]
options:
-force Force compilation, even if include/library already exists
-gcc Force use of gcc/g++
-list List available unpacked source versions
-help Display usage help
* build mvapich2 with
${PACKAGE:-[unspecified]}
The additional configure-options could include, for example,
${0##*/} -- --disable-mcast
USAGE
showDownloadHint mvapich
exit 0 # Clean exit
}
#------------------------------------------------------------------------------
exportCompiler # Compiler info for CMake/configure
unset optForce
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
'') ;; # Ignore empty
--) break;; # Extra configure options (leave on $@ for later detection)
-h | -help*) printHelp;;
-list) printVersions;;
-gcc) useGcc ;;
-force) optForce=true ;;
mvapich/* | sources/mvapich* | \
mvapich*)
PACKAGE="${1%%/}"
;;
*)
die "unknown option/argument: '$1'"
;;
esac
shift
done
if [ -z "$PACKAGE" ]
then
die "The MVAPICH package/version not specified"
elif _foamIsNone "$PACKAGE" || _foamIsSystem "$PACKAGE"
then
echo "Using none/system (skip ThirdParty build of MVAPICH)"
exit 0
fi
#------------------------------------------------------------------------------
#
# Build MVAPICH
# *PACKAGE : name-version of the package
# *SOURCE : location of original sources
# *PREFIX : installation directory
PKG_SOURCE="$(findSourceDir "$PACKAGE")"
PACKAGE="$(basename "$PACKAGE")"
PKG_PREFIX="$installBASE/$PACKAGE"
export GIT_DIR="$PKG_SOURCE/.git"
if [ -z "$optForce" ] \
&& {
[ -r "$PKG_PREFIX/lib/libmpi$EXT_SO" ] \
|| [ -r "$PKG_PREFIX/lib$WM_COMPILER_LIB_ARCH/libmpi$EXT_SO" ]
}
then
echo "Already has shared library: $PKG_PREFIX"
elif [ -z "$optForce" ] \
&& {
[ -r "$PKG_PREFIX/lib/libmpi.a" ] \
|| [ -r "$PKG_PREFIX/lib$WM_COMPILER_LIB_ARCH/libmpi.a" ]
}
then
echo "Already has static library: $PKG_PREFIX"
else
echo "Starting build: $WM_MPLIB ($PACKAGE)"
echo
(
# Configuration options:
unset configOpt
# Additional configure options
if [ "$1" = "--" ]
then
shift
configOpt="$configOpt $@"
fi
# End of configuration options
# ----------------------------
PKG_BUILD="$buildBASE/$PACKAGE"
cd "$PKG_SOURCE" || exit
make distclean 2>/dev/null || true
rm -rf "$PKG_PREFIX"
rm -rf "$PKG_BUILD"
mkdir -p "$PKG_BUILD"
cd "$PKG_BUILD" && set -x && \
"$PKG_SOURCE"/configure \
--prefix="$PKG_PREFIX" \
--disable-fortran --disable-g \
--enable-shared --disable-static \
$configOpt \
&& set +x \
&& make -j $WM_NCOMPPROCS \
&& make install \
&& echo "Built: $PACKAGE" \
&& pkgconfigAdjust "$PKG_PREFIX"
) || {
echo "Error building: $PACKAGE"
exit 1
}
fi
#------------------------------------------------------------------------------