Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
64748ca4180302c6d7738c9524976e9a00354041
[simgrid.git] / src / smpi / smpif90.in
1 #! /bin/sh
2
3 F90=@GFORTRAN_EXE@
4
5 INCLUDEARGS="@includeflag@"
6 CMAKE_LINKARGS="-L@libdir@"
7
8 FFLAGS="-ff2c  -fno-second-underscore"
9 LINKARGS="-lsimgrid -lm -lgfortran"
10 main_name=main
11
12 trap 'rm -f ${TMPFILES}' EXIT
13
14 # $1: prefix, $2: suffix
15 mymktemp () {
16     tmp=$(mktemp --suffix="$2" "$1_XXXXXXXXXX" 2> /dev/null)
17     if [ -z "$tmp" ]; then
18         # mktemp failed (unsupported --suffix ?), try unsafe mode
19         tmp=$(mktemp -u "$1_XXXXXXXXXX" 2> /dev/null)
20         if [ -z "$tmp" ]; then
21             # mktemp failed again (doesn't exist ?), try very unsafe mode
22             tmp="$1_$$x$RANDOM"
23         fi
24         tmp="${tmp}$2"
25         # create temp file, and exit if it existed before
26         sh -C -c "true > \"${tmp}\"" || exit 1
27     fi
28     echo "${tmp}"
29 }
30
31 CMDLINE=""
32 while [ -n "$1" ]; do
33   ARG="$1"
34   shift
35   case "${ARG}" in
36    -c)
37       CMAKE_LINKARGS=""
38       LINKARGS=""
39       CMDLINE="${CMDLINE} -c "
40       ;;
41    *.f90|*.F90)
42       TMPFILE=$(mymktemp "${ARG}" ".f90")
43       TMPFILES="${TMPFILES} ${TMPFILE}"
44       #replace "program main_name by subroutine user\_main (and the end clause as well)"
45       sed 's/[[:space:]]*program[[:space:]]*\([a-zA-Z0-9\-\_]*\)/subroutine user\_main /gI;s/[[:space:]]*use[[:space:]]*mpi/\include \"mpif\.h\" /gI'  ${ARG} > ${TMPFILE}
46       SRCFILE="${TMPFILE}"
47       CMDLINE="${CMDLINE} ${SRCFILE} "
48       ;;
49    *)
50       CMDLINE="${CMDLINE} ${ARG} "
51       ;;
52   esac
53 done
54
55 CMDLINE="${F90} ${FFLAGS} ${CMDLINE} ${INCLUDEARGS} ${CMAKE_LINKARGS} ${LINKARGS}"
56
57 #echo "${CMDLINE}"
58 ${CMDLINE}