Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Request should not be null here.
[simgrid.git] / src / smpi / smpif90.in
index e86bd38..5dd979e 100644 (file)
@@ -1,13 +1,16 @@
 #! /bin/bash
 
-CC=@CMAKE_REAL_Fortran_Compiler@
+F90=gfortran
 
 INCLUDEARGS="@includeflag@"
 CMAKE_LINKARGS="-L@libdir@"
 
-FFLAGS="-O2 -cpp -Dprogram=subroutine -Dmain=user_main -ff2c "
-LINKARGS="-lsimgrid -lsmpi -lm -lgfortran"
+FFLAGS="-ff2c  -fno-second-underscore"
+LINKARGS="-lsimgrid -lm -lgfortran"
+main_name=main
 
+declare -a TMPFILES
+trap 'rm -f "${TMPFILES[@]}"' EXIT
 
 CMDLINE=""
 while [ -n "$1" ]; do
@@ -20,10 +23,11 @@ while [ -n "$1" ]; do
       CMDLINE="${CMDLINE} -c "
       ;;
    *.f90|*.F90)
-      SRCFILE="$(readlink -f ${ARG} 2>/dev/null)"
-      if [ -z $SRCFILE ] ; then
-         SRCFILE="$ARG"
-      fi
+      TMPFILE=$(mktemp "${ARG}_XXXXXX.f90")
+      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} "
       ;;
    *)
@@ -32,7 +36,7 @@ while [ -n "$1" ]; do
   esac
 done
 
-CMDLINE="${CC} ${FFLAGS} ${CMDLINE} ${INCLUDEARGS} ${CMAKE_LINKARGS} ${LINKARGS}"
+CMDLINE="${F90} ${FFLAGS} ${CMDLINE} ${INCLUDEARGS} ${CMAKE_LINKARGS} ${LINKARGS}"
 
 #echo "${CMDLINE}"
 ${CMDLINE}