#! /usr/bin/env bash prefix="@exec_prefix@" ARGS="-DMAIN__=user_main -Diargc_=smpi_process_argc -Dgetarg_=smpi_process_getarg" LINKARGS="-lf2c -lm" declare -a SRCFILES # $1: prefix, $2: suffix mymktemp () { tmp=$(mktemp --suffix="$2" "$1_XXXXXXXXXX" 2> /dev/null) if [ -z "$tmp" ]; then # mktemp failed (unsupported --suffix ?), try unsafe mode tmp=$(mktemp -u "$1_XXXXXXXXXX" 2> /dev/null) if [ -z "$tmp" ]; then # mktemp failed again (doesn't exist ?), try very unsafe mode tmp="$1_$$x$RANDOM" fi tmp="${tmp}$2" # create temp file, and exit if it existed before sh -C -c "true > \"${tmp}\"" || exit 1 fi echo "${tmp}" } while [ -n "$1" ]; do ARG="$1" shift case "${ARG}" in *.f) SRCFILE="$(readlink -f ${ARG} 2>/dev/null)" if [ -z "$SRCFILE" ] ; then SRCFILE="$ARG" fi SRCFILES+="${SRCFILE}" ;; *) if [ "${ARG}" = "-c" ]; then LINKARGS="" fi ARGS="${ARGS} ${ARG}" ;; esac done ARGS="${ARGS} ${LINKARGS}" if [ -n "${SRCFILES}" ] then for SRCFILE in "${SRCFILES[@]}" do TMPFILE=$(mymktemp "${SRCFILE}" ".f") cp ${SRCFILE} ${TMPFILE} CFILE="${TMPFILE%.f}.c" #echo "$prefix/bin/smpif2c ${TMPFILE} && $prefix/bin/smpicc ${ARGS} ${CFILE} && rm ${CFILE} && rm ${TMPFILE}" $prefix/bin/smpif2c ${TMPFILE} && $prefix/bin/smpicc ${ARGS} ${CFILE} && rm ${CFILE} && rm ${TMPFILE} || exit $? # When the file is compiled with "-c" and no output file is specified with # "-o", rename the output. FIXME: do it properly. if [ -f ${CFILE%.c}.o ]; then mv ${CFILE%.c}.o ${SRCFILE%.f}.o fi done else #echo "$prefix/bin/smpicc ${ARGS}" $prefix/bin/smpicc ${ARGS} fi