#!/bin/sh

# We choose to behave like OpenMPI in this respect.
#
# All OpenMPI versions support "-showme". Modern OpenMPI version also
# support "-showme:compile" and "-showme:link".
#
# MPICH supports "-compile-info" and "-link-info".

MPIF_FC=${MPIF_FC:-/opt/bin/aarch64-apple-darwin20-libgfortran5-cxx11-mpi+mpiabi/aarch64-apple-darwin20-gfortran}
MPIF_FCFLAGS=${MPIF_FCFLAGS:- -fallow-argument-mismatch -fcray-pointer}
MPIF_FCLIBS=${MPIF_FCLIBS:- -L/workspace/destdir/lib -Wl,-rpath,/workspace/destdir/lib -lmpif -L/workspace/aarch64-apple-darwin20-libgfortran5-cxx11-mpi+mpiabi/destdir/lib /opt/aarch64-apple-darwin20/aarch64-apple-darwin20/sys-root/usr/local/lib/libmpi_abi.dylib;/opt/aarch64-apple-darwin20/aarch64-apple-darwin20/sys-root/usr/local/lib/libpmpi_abi.dylib}

case "$1" in
    -showme:command)
        echo "$MPIF_FC"
        exit 0
        ;;
    -showme:compile)
        echo "$MPIF_FCFLAGS -I/workspace/destdir/include"
        exit 0
        ;;
    -showme:link)
        echo "$MPIF_FCFLAGS -Wl,-commons,use_dylibs -L/workspace/destdir/lib -Wl,-rpath,/workspace/destdir/lib $MPIF_FCLIBS"
        exit 0
        ;;
    -showme:incdirs)
        echo "/workspace/destdir/include"
        exit 0
        ;;
    -showme:libdirs)
        echo "/workspace/destdir/lib"
        exit 0
        ;;
    -showme:libs)
        echo "$MPIF_FCLIBS"
        exit 0
        ;;
    -showme:version)
        echo "mpif 0.1.6"
        echo "MPI Fortran bindings"
        echo "https://github.com/eschnett/mpif"
        exit 0
        ;;
    -showme:help)
        echo "$0 {-showme:{command|compile|link|incdirs|libdirs|libs|version|help}|-show*} args"
        exit 0
        ;;
    -show*)
        echo "$MPIF_FC $MPIF_FCFLAGS -I/workspace/destdir/include -Wl,-commons,use_dylibs -L/workspace/destdir/lib -Wl,-rpath,/workspace/destdir/lib $MPIF_FCLIBS"
        exit 0
        ;;
esac

# Are we linking?
linking=true
for arg in "$@"; do
    if [ "$arg" = "-E" ] || [ "$arg" = "-c" ] || [ "$arg" = "-S" ]; then
        linking=false
        break
    fi
done

# Can we use rpath? (The Darwin linker has an '-r' argument that
# merges object files together. It does not work with '-rpath'.)
add_rpath=true
for arg in "$@"; do
    if [ "$arg" = "-r" ] || [ "$arg" = "-Wl,-r" ]; then
        add_rpath=false
        break
    fi
done

if [ $linking != true ]; then
    exec $MPIF_FC $MPIF_FCFLAGS -I/workspace/destdir/include "$@"
elif [ $add_rpath != true ]; then
    exec $MPIF_FC $MPIF_FCFLAGS -I/workspace/destdir/include -Wl,-commons,use_dylibs_dylibs -L/workspace/destdir/lib "$@" $MPIF_FCLIBS
else
    exec $MPIF_FC $MPIF_FCFLAGS -I/workspace/destdir/include -Wl,-commons,use_dylibs -L/workspace/destdir/lib -Wl,-rpath,/workspace/destdir/lib "$@" $MPIF_FCLIBS
fi
