INCLUDEARGS="@includeflag@"
CMAKE_LINKARGS="-L@libdir@"
-FFLAGS="-ff2c -fno-second-underscore"
-LINKARGS="-lsimgrid -lm -lgfortran"
+@SMPITOOLS_SH@
+
+list_set FFLAGS "-ff2c" "-fno-second-underscore"
+list_set LINKARGS "-lsimgrid" "-lm" "-lgfortran"
+list_set TMPFILES
main_name=main
-trap 'rm -f ${TMPFILES}' EXIT
-
-# $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}"
+cleanup () {
+ eval $(list_get TMPFILES)
+ rm -f "$@"
}
-
-CMDLINE=""
-while [ -n "$1" ]; do
- ARG="$1"
- shift
- case "${ARG}" in
- -c)
- CMAKE_LINKARGS=""
- LINKARGS=""
- CMDLINE="${CMDLINE} -c "
- ;;
- *.f90|*.F90)
- TMPFILE=$(mymktemp "${ARG}" ".f90")
- TMPFILES="${TMPFILES} ${TMPFILE}"
+trap 'cleanup' EXIT
+
+list_set CMDLINE "${F90}"
+list_add_not_empty CMDLINE "${FFLAGS}"
+while [ $# -gt 0 ]; do
+ ARG="$1"
+ shift
+ case "${ARG}" in
+ -c)
+ CMAKE_LINKARGS=""
+ LINKARGS=""
+ list_add CMDLINE "-c"
+ ;;
+ *.f90|*.F90)
+ TMPFILE=$(mymktemp "${ARG}" ".f90")
+ list_add TMPFILES "${TMPFILE}"
#replace "program main_name by subroutine user\_main (and the end clause as well)"
- sed 's/[[:space:]]*program[[:space:]]*\([a-zA-Z0-9\-\_]*\)/subroutine user\_main /gI;s/[[:space:]]*use[[:space:]]*mpi/\include \"mpif\.h\" /gI' ${ARG} > ${TMPFILE}
- SRCFILE="${TMPFILE}"
- CMDLINE="${CMDLINE} ${SRCFILE} "
- ;;
- *)
- CMDLINE="${CMDLINE} ${ARG} "
- ;;
- esac
+ sed 's/[[:space:]]*program[[:space:]]*\([a-zA-Z0-9\-\_]*\)/subroutine user\_main /gI;s/[[:space:]]*use[[:space:]]*mpi/\include \"mpif\.h\" /gI' "${ARG}" > "${TMPFILE}"
+ SRCFILE="${TMPFILE}"
+ list_add CMDLINE "${SRCFILE}"
+ ;;
+ *)
+ list_add CMDLINE "${ARG}"
+ ;;
+ esac
done
-CMDLINE="${F90} ${FFLAGS} ${CMDLINE} ${INCLUDEARGS} ${CMAKE_LINKARGS} ${LINKARGS}"
+list_add_not_empty CMDLINE ${INCLUDEARGS}
+list_add_not_empty CMDLINE ${CMAKE_LINKARGS}
+list_add_not_empty CMDLINE "${LINKARGS}"
-#echo "${CMDLINE}"
-${CMDLINE}
+eval $(list_get CMDLINE)
+"$@"