set -euo pipefail
sudo () {
[[ $EUID = 0 ]] || set -- command sudo "$@"
"$@"
}
USE_INTEL_MKL=${1:-0}
VERSION="5.9.0"
PREFIX="/usr/local"
INCDIR="$PREFIX/include/mumps"
LIBDIR="$PREFIX/lib/mumps"
PDIR="$(pwd)/zscripts/makefiles-mumps"
sudo pacman -S --noconfirm base-devel curl
if [ "${USE_INTEL_MKL}" = "1" ]; then
set +u source /opt/intel/oneapi/setvars.sh set -u
export | grep -i MKLROOT
else
sudo pacman -S --noconfirm gcc-fortran openmp
fi
if pacman -Q metis &>/dev/null; then
echo "... metis (package) already installed"
else
if [ $EUID = 0 ]; then
su - user -c "yay -S --noconfirm metis"
else
yay -S --noconfirm metis
fi
fi
MUMPS_GZ="mumps_${VERSION}.orig.tar.gz"
MUMPS_DIR="MUMPS_${VERSION}"
cd /tmp
if [ -d "$MUMPS_DIR" ]; then
echo "... removing previous $MUMPS_DIR directory"
rm -rf "$MUMPS_DIR"
fi
if [ -f "$MUMPS_GZ" ]; then
echo "... using existing $MUMPS_GZ file"
else
curl -fL "http://deb.debian.org/debian/pool/main/m/mumps/${MUMPS_GZ}" -o "$MUMPS_GZ"
fi
tar xzf "$MUMPS_GZ"
cd "$MUMPS_DIR"
if [ "${USE_INTEL_MKL}" = "1" ]; then
cp "$PDIR/MakefileMKL.inc" Makefile.inc
else
cp "$PDIR/Makefile.inc" Makefile.inc
fi
sudo mkdir -p "$LIBDIR" "$INCDIR"
make d sudo cp -av lib/lib*.a "$LIBDIR/"
make clean
make dshared sudo cp -av lib/lib*.so "$LIBDIR/"
make clean
make z sudo cp -av lib/lib*.a "$LIBDIR/"
make clean
make zshared sudo cp -av lib/lib*.so "$LIBDIR/"
sudo cp -av include/*.h "$INCDIR/"
echo "$LIBDIR" | sudo tee /etc/ld.so.conf.d/mumps.conf >/dev/null
sudo ldconfig