/[MITgcm]/MITgcm/tools/genmake2
ViewVC logotype

Diff of /MITgcm/tools/genmake2

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.167 by jmc, Mon Nov 26 21:39:58 2007 UTC revision 1.191 by jmc, Wed Apr 22 19:21:18 2009 UTC
# Line 611  Usage: "$0" [OPTIONS] Line 611  Usage: "$0" [OPTIONS]
611            set to PATH. i.e. Include files from \$PATH/include, link to libraries            set to PATH. i.e. Include files from \$PATH/include, link to libraries
612            from \$PATH/lib and use binaries from \$PATH/bin.            from \$PATH/lib and use binaries from \$PATH/bin.
613    
614        -omp | --omp
615              Activate OpenMP code + use Compiler option OMPFLAG
616        -omp=OMPFLAG | --omp=OMPFLAG
617              Activate OpenMP code + use Compiler option OMPFLAG
618    
619      -es | --es | -embed-source | --embed-source      -es | --es | -embed-source | --embed-source
620            Embed a tarball containing the full source code            Embed a tarball containing the full source code
621            (including the Makefile, etc.) used to build the            (including the Makefile, etc.) used to build the
# Line 746  void FC_NAMEMANGLE(cloc) ( double *curti Line 751  void FC_NAMEMANGLE(cloc) ( double *curti
751   *curtim = *curtim/1.E6;   *curtim = *curtim/1.E6;
752  }  }
753  EOF  EOF
754      make genmake_tc_1.o >> genmake_warnings 2>&1      COMM="$CC $CFLAGS -c genmake_tc_1.c"
755        echo $COMM >> genmake_warnings
756        $COMM >> genmake_warnings 2>&1
757      RET_C=$?      RET_C=$?
758      cat <<EOF > genmake_tc_2.$FS      cat <<EOF > genmake_tc_2.$FS
759        program hello        program hello
# Line 805  void FC_NAMEMANGLE(sigreg) (int * aip) Line 812  void FC_NAMEMANGLE(sigreg) (int * aip)
812      return;      return;
813  }  }
814  EOF  EOF
815      make genmake_tc_1.o >> genmake_warnings 2>&1      COMM="$CC $CFLAGS -c genmake_tc_1.c"
816        echo $COMM >> genmake_warnings
817        $COMM >> genmake_warnings 2>&1
818      RET_C=$?      RET_C=$?
819      cat <<EOF > genmake_tc_2.$FS      cat <<EOF > genmake_tc_2.$FS
820        program hello        program hello
# Line 853  void FC_NAMEMANGLE(setrlstk) () Line 862  void FC_NAMEMANGLE(setrlstk) ()
862      return;      return;
863  }  }
864  EOF  EOF
865      make genmake_tc_1.o >> genmake_warnings 2>&1      COMM="$CC $CFLAGS -c genmake_tc_1.c"
866        echo $COMM >> genmake_warnings
867        $COMM >> genmake_warnings 2>&1
868      RET_C=$?      RET_C=$?
869      cat <<EOF > genmake_tc_2.$FS      cat <<EOF > genmake_tc_2.$FS
870        program hello        program hello
# Line 897  void FC_NAMEMANGLE(tfsize) ( int *nbyte Line 908  void FC_NAMEMANGLE(tfsize) ( int *nbyte
908          *nbyte = -1;          *nbyte = -1;
909  }  }
910  EOF  EOF
911      make genmake_tc_1.o >> genmake_tc.log 2>&1      COMM="$CC $CFLAGS -c genmake_tc_1.c"
912        echo $COMM >> genmake_warnings
913        $COMM >> genmake_tc.log 2>&1
914      RET_C=$?      RET_C=$?
915      cat <<EOF > genmake_tc_2.$FS      cat <<EOF > genmake_tc_2.$FS
916        program hello        program hello
# Line 1038  INCLUDES="-I. $INCLUDES" Line 1051  INCLUDES="-I. $INCLUDES"
1051  FFLAGS=  FFLAGS=
1052  FOPTIM=  FOPTIM=
1053  FEXTRAFLAGS=  FEXTRAFLAGS=
1054    USE_EXTENDED_SRC=
1055    EXTENDED_SRC_FLAG=
1056  CFLAGS=  CFLAGS=
1057  KFLAGS1=  KFLAGS1=
1058  KFLAGS2=  KFLAGS2=
# Line 1048  NOOPTFILES= Line 1063  NOOPTFILES=
1063  NOOPTFLAGS=  NOOPTFLAGS=
1064  MPI=  MPI=
1065  MPIPATH=  MPIPATH=
1066    OMP=
1067    OMPFLAG=
1068  TS=  TS=
1069  PAPIS=  PAPIS=
1070  PCLS=  PCLS=
# Line 1115  TAMC_EXTRA= Line 1132  TAMC_EXTRA=
1132    
1133  #  The following state can be set directly by command-line switches  #  The following state can be set directly by command-line switches
1134  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"
1135  gm_s2="FC CPP IEEE TS PAPIS PCLS PAPI PCL HPMT GSL DEVEL MPI JAM DUMPSTATE STANDARDDIRS"  gm_s2="FC CPP IEEE TS PAPIS PCLS PAPI PCL HPMT GSL DEVEL MPI OMP DUMPSTATE STANDARDDIRS"
1136    
1137  #  The following state is not directly set by command-line switches  #  The following state is not directly set by command-line switches
1138  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPEND PDEPEND PDEFAULT INCLUDES FFLAGS FOPTIM FEXTRAFLAGS"  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPEND PDEPEND PDEFAULT INCLUDES FFLAGS FOPTIM FEXTRAFLAGS"
# Line 1316  for ac_option in "$@" ; do Line 1333  for ac_option in "$@" ; do
1333              MPIPATH=$ac_optarg              MPIPATH=$ac_optarg
1334              MPI=true ;;              MPI=true ;;
1335                    
1336  #       -jam | --jam)          -omp | --omp)
1337  #           JAM=1 ;;              OMP=true ;;
1338  #       -nojam | --nojam)          -omp=* | --omp=*)
1339  #           JAM=0 ;;              OMPFLAG=$ac_optarg
1340                OMP=true ;;
1341                    
1342          -ds | --ds)          -ds | --ds)
1343              DUMPSTATE=t ;;              DUMPSTATE=t ;;
# Line 1394  if test ! -d ${ROOTDIR} ; then Line 1412  if test ! -d ${ROOTDIR} ; then
1412  fi  fi
1413    
1414  #  Find the MITgcm ${THISVER}  #  Find the MITgcm ${THISVER}
1415  if test -f "${ROOTDIR}/doc/tag-index" ; then  version_file="${ROOTDIR}/doc/tag-index"
1416      THISVER=`grep '^checkpoint' ${ROOTDIR}/doc/tag-index | head -1`  if test -f $version_file ; then
1417        THISVER=`grep '^checkpoint' $version_file | head -1`
1418    #-  remove ./BUILD_INFO.h file if older than version_file
1419        if test -f ./BUILD_INFO.h -a ./BUILD_INFO.h -ot $version_file ; then
1420            echo "  remove ./BUILD_INFO.h (older than ${version_file})"
1421            rm -f ./BUILD_INFO.h
1422        fi
1423  fi  fi
1424    
1425  if test "x$MAKEFILE" = x ; then  if test "x$MAKEFILE" = x ; then
# Line 1551  if test ! "x$MPI" = x ; then Line 1575  if test ! "x$MPI" = x ; then
1575        echo "  Turning on MPI cpp macros"        echo "  Turning on MPI cpp macros"
1576        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"
1577  fi  fi
1578    if test ! "x$OMP" = x ; then
1579          echo "  Add OMPFLAG and turn on OpenMP cpp macros"
1580          FFLAGS="$FFLAGS $OMPFLAG"
1581          F90FLAGS="$F90FLAGS $OMPFLAG"
1582          DEFINES="$DEFINES -DUSE_OMP_THREADING"
1583    fi
1584    
1585  if test ! "x$TS" = x ; then  if test ! "x$TS" = x ; then
1586        echo "  Turning on timing per timestep"        echo "  Turning on timing per timestep"
# Line 1632  if test ! "x$GSL" = x ; then Line 1662  if test ! "x$GSL" = x ; then
1662        INCLUDES="$INCLUDES $GSLINC"        INCLUDES="$INCLUDES $GSLINC"
1663        LIBS="$LIBS $GSLLIB"        LIBS="$LIBS $GSLLIB"
1664  fi  fi
1665    #- if USE_EXTENDED_SRC is set, add EXTENDED_SRC_FLAG to FFLAGS :
1666    if test ! "x$USE_EXTENDED_SRC" = x ; then
1667          FFLAGS="$FFLAGS $EXTENDED_SRC_FLAG"
1668          F90FIXEDFORMAT="$F90FIXEDFORMAT $EXTENDED_SRC_FLAG"
1669    fi
1670    
1671  printf "\n===  Checking system libraries  ===\n"  printf "\n===  Checking system libraries  ===\n"
1672  printf "  Do we have the system() command using $FC...  "  printf "  Do we have the system() command using $FC...  "
# Line 1754  fi Line 1789  fi
1789    
1790    
1791  printf "\n===  Setting defaults  ===\n"  printf "\n===  Setting defaults  ===\n"
1792  printf "  Adding MODS directories:  "  printf "  Adding MODS directories: "
1793  for d in $MODS ; do  for d in $MODS ; do
1794      if test ! -d $d ; then      if test ! -d $d ; then
1795          echo          echo
1796          echo "Error: MODS directory \"$d\" not found!"          echo "Error: MODS directory \"$d\" not found!"
1797          exit 1          exit 1
1798      else      else
1799          printf " $d"          printf "$d "
1800          SOURCEDIRS="$SOURCEDIRS $d"          SOURCEDIRS="$SOURCEDIRS $d"
1801          INCLUDEDIRS="$INCLUDEDIRS $d"          INCLUDEDIRS="$INCLUDEDIRS $d"
1802      fi      fi
# Line 2208  fi Line 2243  fi
2243    
2244  #  Here, we build the list of files to be "run through" the adjoint  #  Here, we build the list of files to be "run through" the adjoint
2245  #  compiler.  #  compiler.
2246  if test -f ./ad_files ; then  if test -f ./adSrcFiles.tmp ; then
2247      rm -f ./ad_files      rm -f ./adSrcFiles.tmp
2248  fi  fi
2249  echo "  Creating the list of files for the adjoint compiler."  echo "  Creating the list of files for the adjoint compiler."
2250  for i in $SOURCEDIRS ; do  for i in $SOURCEDIRS ; do
2251      list_files=`( cd $i && ls -1 *.list 2>/dev/null )`      list_files=`( cd $i && ls -1 *.list 2>/dev/null )`
2252      for j in $list_files ; do      for j in $list_files ; do
2253          cat $i/$j >> ad_files          cat $i/$j >> adSrcFiles.tmp
2254      done      done
2255  done  done
2256  if test ! "x"$FS = "x.f" ; then  if test ! "x"$FS = "x.f" ; then
2257      cat ad_files | sed -e "s/\.f/.$FS/g" > ad_files_f      cat adSrcFiles.tmp | sed -e "s/\.f/.$FS/g" > adSrcFiles.tmp_f
2258      mv -f ad_files_f ad_files      mv -f adSrcFiles.tmp_f adSrcFiles.tmp
2259  fi  fi
2260    
2261  echo  echo
# Line 2278  if test ! -r ".links.tmp/foo" ; then Line 2313  if test ! -r ".links.tmp/foo" ; then
2313      exit 1      exit 1
2314  fi  fi
2315  rm -f .links.tmp/foo  rm -f .links.tmp/foo
2316    
2317    if test "x$OPENAD" != x ; then
2318        OAD_DONT_COMPILE="/dev/null"
2319        OAD_DONT_TRANSFORM="/dev/null"
2320        OAD_KEEP_ORIGINAL="/dev/null"
2321        OAD_CB2M_FILES="/dev/null"
2322        echo "  looking for dontCompile file:  "
2323        for i in "." $MODS ; do
2324            if test -r $i"/dontCompile" ; then
2325                OAD_DONT_COMPILE=$i"/dontCompile"
2326                echo "     found $OAD_DONT_COMPILE"
2327                break
2328            fi
2329        done
2330        echo "  looking for dontTransform file:  "
2331        for i in "." $MODS ; do
2332            if test -r $i"/dontTransform" ; then
2333                OAD_DONT_TRANSFORM=$i"/dontTransform"
2334                echo "     found $OAD_DONT_TRANSFORM"
2335                break
2336            fi
2337        done
2338        echo "  looking for keepOriginal file:  "
2339        for i in "." $MODS ; do
2340            if test -r $i"/keepOriginal" ; then
2341                OAD_KEEP_ORIGINAL=$i"/keepOriginal"
2342                echo "     found $OAD_KEEP_ORIGINAL"
2343                break
2344            fi
2345        done
2346        echo "  looking for cb2mFiles:  "
2347        for i in "." $MODS ; do
2348            if test -r $i"/cb2mFiles" ; then
2349                OAD_CB2M_FILES=$i"/cb2mFiles"
2350                echo "     found $OAD_CB2M_FILES"
2351                break
2352            fi
2353        done
2354        echo "   OpenAD exceptions:  "
2355    fi
2356    
2357  echo "# This section creates symbolic links" > srclinks.tmp  echo "# This section creates symbolic links" > srclinks.tmp
2358  echo "" >> srclinks.tmp  echo "" >> srclinks.tmp
2359  printf 'SRCFILES = '    > srclist.inc  printf 'F77_SRC_FILES = ' > F77srclist.tmp
2360  printf 'CSRCFILES = '   > csrclist.inc  printf 'NON_AD_F77_SRC_FILES = ' > nonADF77srclist.tmp
2361  printf 'F90SRCFILES = ' > f90srclist.inc  printf 'C_SRC_FILES = '   > csrclist.tmp
2362  printf 'HEADERFILES = ' > hlist.inc  printf 'F90_SRC_FILES = ' > F90srclist.tmp
2363  printf 'AD_FLOW_FILES = ' > ad_flow_files.inc  printf 'H_SRC_FILES = '   > hsrclist.tmp
2364    printf 'AD_FLOW_FILES = ' > ad_flow_files.tmp
2365  alldirs="$SOURCEDIRS $INCLUDEDIRS ."  alldirs="$SOURCEDIRS $INCLUDEDIRS ."
2366  for d in $alldirs ; do  for d in $alldirs ; do
2367      deplist=      deplist=
2368      sfiles=`( cd $d; echo *.[h,c,F] *.flow )`      sfiles=`( cd $d; echo *.[h,c,F] *.flow )`
2369      sfiles=`( echo $sfiles; cd $d; echo *.F90 )`      sfiles=`( echo $sfiles; cd $d; echo *.F90 )`
2370        if test "x$OPENAD" != x ; then
2371            sfiles=`( echo $sfiles | grep -v _cb2m\. )`
2372        fi
2373      for sf in $sfiles ; do      for sf in $sfiles ; do
2374          if test ! -r ".links.tmp/$sf" ; then          if test ! -r ".links.tmp/$sf" ; then
2375              if test -f "$d/$sf" ; then              if test -f "$d/$sf" ; then
# Line 2324  for d in $alldirs ; do Line 2404  for d in $alldirs ; do
2404                  if test "x$ignore_f" = xf ; then                  if test "x$ignore_f" = xf ; then
2405                      extn=`echo $sf | $AWK -F. '{print $NF}'`                      extn=`echo $sf | $AWK -F. '{print $NF}'`
2406                      case $extn in                      case $extn in
2407                          F)                        F)
2408                              echo    " \\"  >> srclist.inc                          echo    " \\"  >> F77srclist.tmp
2409                              printf " $sf" >> srclist.inc                          printf " $sf" >> F77srclist.tmp
2410                              ;;                          if test "x$OPENAD" != x ; then
2411                          F90)                              basename=${sf%%.F}
2412                              echo    " \\"  >> f90srclist.inc                              isAD=`egrep ^$basename.f'[  ]*' adSrcFiles.tmp`
2413                              printf " $sf" >> f90srclist.inc                              if test -z "$isAD" ; then
2414                              ;;                                  toBeIgnored=`egrep ^$basename'[      ]*' ${OAD_DONT_COMPILE}`
2415                          c)                                  if test -z "$toBeIgnored" ; then
2416                              echo    " \\"  >> csrclist.inc                                      echo    " \\"  >> nonADF77srclist.tmp
2417                              printf " $sf" >> csrclist.inc                                      printf " $sf" >> nonADF77srclist.tmp
2418                              ;;                                  else
2419                          h)                                      echo "    not to be compiled   :  $sf"
2420                              echo    " \\"  >> hlist.inc                                  fi
2421                              printf " $sf" >> hlist.inc                              else # file is initially listed as an AD file we want to exclude it
2422                              ;;                                   # or we want to retain the untransformed version
2423                          flow)                                  notToBeTransformed=`egrep ^$basename'[      ]*' ${OAD_DONT_TRANSFORM}`
2424                              echo    " \\"  >> ad_flow_files.inc                                  untransformedVersionToBeKept=`egrep ^$basename'[      ]*' ${OAD_KEEP_ORIGINAL}`
2425                              printf " $sf" >> ad_flow_files.inc                                  if test -n "$notToBeTransformed"; then
2426                              ;;                                      echo "    not to be transformed:  $sf"
2427                      esac                                  fi
2428                  fi                                  if test -n "$untransformedVersionToBeKept" ; then
2429                                        echo "    original to be kept  :  $sf"
2430                                    fi    
2431                                    if test -n "$notToBeTransformed" -o -n "$untransformedVersionToBeKept" ; then
2432                                        echo    " \\"  >> nonADF77srclist.tmp
2433                                        printf " $sf" >> nonADF77srclist.tmp
2434                                    fi
2435                                fi
2436                            fi
2437                            ;;
2438                        F90)
2439                            echo    " \\"  >> F90srclist.tmp
2440                            printf " $sf" >> F90srclist.tmp
2441                            ;;
2442                        c)
2443                            echo    " \\"  >> csrclist.tmp
2444                            printf " $sf" >> csrclist.tmp
2445                            ;;
2446                        h)
2447                            echo    " \\"  >> hsrclist.tmp
2448                            printf " $sf" >> hsrclist.tmp
2449                            ;;
2450                        flow)
2451                            echo    " \\"  >> ad_flow_files.tmp
2452                            printf " $sf" >> ad_flow_files.tmp
2453                            ;;
2454                       esac
2455                    fi
2456              fi              fi
2457          fi          fi
2458      done      done
2459      if test "x$deplist" != x ; then      if test "x$deplist" != x ; then
2460          echo "" >> srclinks.tmp        if test "$d" != "." ; then
2461            echo "" >> srclinks.tmp
2462          echo "#  These files are linked from $d" >> srclinks.tmp          echo "#  These files are linked from $d" >> srclinks.tmp
2463          echo "$deplist :" >> srclinks.tmp          echo "$deplist :" >> srclinks.tmp
2464          printf "\t\$(LN) %s/\$@ \$@\n" $d >> srclinks.tmp  # We need to make sure that the link isn't already there.
2465    # This may happen when make thinks that a header file has to be "remade"
2466    # because a module it depends on has changed.  In this case we do nothing.
2467            printf "\tif [ ! -L \$@ ]; then \$(LN) %s/\$@ \$@; fi\n" $d >> srclinks.tmp
2468          fi
2469      fi      fi
2470  done  done
2471  rm -rf .links.tmp  rm -rf .links.tmp
2472  echo "" >> srclist.inc  echo "" >> F77srclist.tmp
2473  echo "" >> csrclist.inc  echo "" >> nonADF77srclist.tmp
2474  echo "" >> f90srclist.inc  echo "" >> csrclist.tmp
2475  echo "" >> hlist.inc  echo "" >> F90srclist.tmp
2476  echo "" >> ad_flow_files.inc  echo "" >> hsrclist.tmp
2477    echo "" >> ad_flow_files.tmp
2478    
2479  if test -f $MAKEFILE ; then  if test -f $MAKEFILE ; then
2480      mv -f $MAKEFILE "$MAKEFILE.bak"      mv -f $MAKEFILE "$MAKEFILE.bak"
# Line 2429  else Line 2542  else
2542      echo "EMBEDDED_FILES = " >>$MAKEFILE      echo "EMBEDDED_FILES = " >>$MAKEFILE
2543  fi  fi
2544    
 #  Note: figure out some way to add Hyades JAM libraries here  
2545  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2546  # Unix ln (link)  # Unix ln (link)
2547  LN = ${LN}  LN = ${LN}
# Line 2461  FOPTIM = ${FOPTIM} Line 2573  FOPTIM = ${FOPTIM}
2573  # Optim./debug for FC  # Optim./debug for FC
2574  F90FLAGS = ${F90FLAGS}  F90FLAGS = ${F90FLAGS}
2575  F90OPTIM = ${F90OPTIM}  F90OPTIM = ${F90OPTIM}
2576    F90FIXEDFORMAT = ${F90FIXEDFORMAT}
2577  # Flags for CC  # Flags for CC
2578  CFLAGS = ${CFLAGS}  CFLAGS = ${CFLAGS}
2579  # Files that should not be optimized  # Files that should not be optimized
# Line 2473  MAKEFILE=${MAKEFILE} Line 2586  MAKEFILE=${MAKEFILE}
2586    
2587  EOF  EOF
2588    
2589  cat srclist.inc       >> $MAKEFILE  cat F77srclist.tmp      >> $MAKEFILE
2590  cat csrclist.inc      >> $MAKEFILE  cat nonADF77srclist.tmp >> $MAKEFILE
2591  cat f90srclist.inc    >> $MAKEFILE  cat csrclist.tmp        >> $MAKEFILE
2592  cat hlist.inc         >> $MAKEFILE  cat F90srclist.tmp      >> $MAKEFILE
2593  cat ad_flow_files.inc >> $MAKEFILE  cat hsrclist.tmp        >> $MAKEFILE
2594    cat ad_flow_files.tmp   >> $MAKEFILE
2595    
2596    rm -f F77srclist.tmp nonADF77srclist.tmp csrclist.tmp F90srclist.tmp hsrclist.tmp ad_flow_files.tmp
2597    
2598  echo >> $MAKEFILE  echo >> $MAKEFILE
2599  echo 'F77FILES =  $(SRCFILES:.F=.'$FS')'      >> $MAKEFILE  
2600  echo 'F90FILES =  $(F90SRCFILES:.F90=.'$FS90')' >> $MAKEFILE  # add definitions for preprocessed sources
2601  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE  # and note that not all systems allow case sensitive extensions
2602    # hence the $FS and $FS90 here.
2603    # for fixed format f90 files we use ff90 or FF90 resp
2604    # but these are not expected to be the original source files
2605    
2606    echo 'F77_PP_SRC_FILES = $(F77_SRC_FILES:.F=.'$FS')'      >> $MAKEFILE
2607    echo 'F90_PP_SRC_FILES = $(F90_SRC_FILES:.F90=.'$FS90')' >> $MAKEFILE
2608    echo 'OBJFILES= $(F77_SRC_FILES:.F=.o) $(C_SRC_FILES:.c=.o) $(F90_SRC_FILES:.F90=.o)' >> $MAKEFILE
2609    echo 'FLOFILES =  $(AD_FLOW_FILES:.flow=.flowdir)' >> $MAKEFILE
2610  echo >> $MAKEFILE  echo >> $MAKEFILE
2611  echo '.SUFFIXES:' >> $MAKEFILE  echo '.SUFFIXES:' >> $MAKEFILE
2612  echo '.SUFFIXES: .o .'$FS' .p .F .c .'$FS90' .F90' >> $MAKEFILE  echo '.SUFFIXES: .o .'$FS' .p .F .c .f'$FS90' .'$FS90' .FF90 .F90 .flowdir .flow' >> $MAKEFILE
 rm -f srclist.inc csrclist.inc hlist.inc flist.tmp clist.tmp f90srclist.inc  
 rm -f ad_flow_files.inc  
2613    
2614  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2615    
2616  all: \$(EXECUTABLE)  all: \$(EXECUTABLE)
2617  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(OBJFILES) \$(EMBEDDED_FILES)  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(OBJFILES) \$(EMBEDDED_FILES)
2618          @echo Creating \$@ ...          @echo Creating \$@ ...
2619          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)
2620  depend:  depend:
2621          @make links          @make links
2622          \$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(SRCFILES)          \$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(F77_SRC_FILES)
2623          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)
2624          -rm -f makedepend.out          -rm -f makedepend.out
2625    
# Line 2506  libmitgcmuv.a: \$(OBJFILES) Line 2629  libmitgcmuv.a: \$(OBJFILES)
2629          ar rcv libmitgcmuv.a \$(OBJFILES)          ar rcv libmitgcmuv.a \$(OBJFILES)
2630          ar d   libmitgcmuv.a main.o          ar d   libmitgcmuv.a main.o
2631    
2632  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES)  links: \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(SPECIAL_FILES)
2633    
2634  small_f: \$(F77FILES) \$(F90FILES)  small_f: \$(F77_PP_SRC_FILES) \$(F90_PP_SRC_FILES)
2635    
2636  output.txt: \$(EXECUTABLE)  output.txt: \$(EXECUTABLE)
2637          @printf 'running ... '          @printf 'running ... '
# Line 2517  output.txt: \$(EXECUTABLE) Line 2640  output.txt: \$(EXECUTABLE)
2640  clean:  clean:
2641          -rm -rf *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template          -rm -rf *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template
2642          -rm -rf *.o          -rm -rf *.o
2643          -rm -rf *.$FS          -rm -rf *.$FS *.flowdir
2644            -rm -rf *.f$FS90 *_mod.h *_mod.F90 *.FF90 *.mod-whirl ad_input*
2645            -rm -rf temp.sed
2646  Clean:  Clean:
2647          @make clean          @make clean
2648          @make cleanlinks          @make cleanlinks
2649          -rm -f \$(SPECIAL_FILES)          -rm -f \$(SPECIAL_FILES)
2650          -rm -f genmake_state genmake_*optfile genmake_warnings make.log run.log *.bak          -rm -f genmake_state genmake_*optfile genmake_warnings make.log run.log f90mkdepend.log *.bak
2651          -rm -f taf_command taf_output taf_ad.log taf_ad_flow.log          -rm -f taf_command taf_output taf_ad.log taf_ad_flow.log
2652  CLEAN:  CLEAN:
2653          @make Clean          @make Clean
# Line 2539  makefile: Line 2664  makefile:
2664  cleanlinks:  cleanlinks:
2665          -find . -type l -exec rm {} \;          -find . -type l -exec rm {} \;
2666    
2667  # Special targets (SPECIAL_FILES) which are create by make  # Special targets (SPECIAL_FILES) which are created by make
2668  ${PACKAGES_DOT_H}:  ${PACKAGES_DOT_H}:
2669          @echo Creating \$@ ...          @echo Creating \$@ ...
2670          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" \$(DISABLED_PACKAGES) " " "Enabled packages:" \$(ENABLED_PACKAGES) > \$@          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" \$(DISABLED_PACKAGES) " " "Enabled packages:" \$(ENABLED_PACKAGES) > \$@
# Line 2564  if test "x$EMBED_SRC" = xt ; then Line 2689  if test "x$EMBED_SRC" = xt ; then
2689    
2690  decode_files.o : EMBEDDED_FILES.h  decode_files.o : EMBEDDED_FILES.h
2691    
2692  ##  \$(F77FILES)  ##  \$(F77_PP_SRC_FILES)
2693  all_fF.tar.gz : \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(F77FILES) Makefile  all_fF.tar.gz : \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(F77_PP_SRC_FILES) Makefile
2694          @echo Creating \$@ ...          @echo Creating \$@ ...
2695          -tar -hcf all_fF.tar \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(F77FILES) Makefile          -tar -hcf all_fF.tar \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(F77_PP_SRC_FILES) Makefile
2696          -rm -f all_fF.tar.gz          -rm -f all_fF.tar.gz
2697          -gzip all_fF.tar          -gzip all_fF.tar
2698    
# Line 2589  cat >>$MAKEFILE <<EOF Line 2714  cat >>$MAKEFILE <<EOF
2714          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
2715  .$FS.o:  .$FS.o:
2716          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
2717  .F90.o:    .F90.$FS90:
2718            \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
2719    .FF90.f$FS90:
2720            \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
2721    .$FS90.o:
2722          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<
2723    .f$FS90.o:
2724            cp \$< \$(basename  \$<).f90
2725            \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$(F90FIXEDFORMAT) \$(basename  \$<).f90
2726  .c.o:  .c.o:
2727          \$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$<          \$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$<
2728    .flow.flowdir:
2729            \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
2730    
2731  # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain  # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain
2732  .F.p:  .F.p:
# Line 2600  cat >>$MAKEFILE <<EOF Line 2734  cat >>$MAKEFILE <<EOF
2734  .p.$FS:  .p.$FS:
2735          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<
2736    
2737    EOF
2738    
2739  #=========================================  #=========================================
2740  #===  Automatic Differentiation Rules  ===  #===  Automatic Differentiation Rules  ===
2741    #===  for TAMC/TAF  ======================
2742    
2743    if test "x$OPENAD" = x ; then
2744    
2745    cat >>$MAKEFILE <<EOF
2746    
2747  TAMC           = ${TAMC}  TAMC           = ${TAMC}
2748  TAF            = ${TAF}  TAF            = ${TAF}
# Line 2625  done Line 2766  done
2766  echo "  Add the source list for AD code generation"  echo "  Add the source list for AD code generation"
2767  echo >> $MAKEFILE  echo >> $MAKEFILE
2768  printf "AD_FILES = " >> $MAKEFILE  printf "AD_FILES = " >> $MAKEFILE
2769  AD_FILES=`cat ad_files`  AD_FILES=`cat adSrcFiles.tmp`
2770  for i in $AD_FILES ; do  for i in $AD_FILES ; do
2771      echo    " \\" >> $MAKEFILE      echo    " \\" >> $MAKEFILE
2772      printf " $i" >> $MAKEFILE      printf " $i" >> $MAKEFILE
2773  done  done
2774  echo >> $MAKEFILE  echo >> $MAKEFILE
2775  rm -f ad_files  rm -f adSrcFiles.tmp
2776    
2777  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2778    
# Line 2640  adall: \$(EXE_AD) Line 2781  adall: \$(EXE_AD)
2781  adtaf: ad_taf_output.$FS  adtaf: ad_taf_output.$FS
2782  adtamc: ad_tamc_output.$FS  adtamc: ad_tamc_output.$FS
2783    
2784  ad_input_code.$FS: \$(AD_FILES) \$(HEADERFILES)  ad_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES) \$(AD_FLOW_FILES)
2785          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ad_config.template          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ad_config.template
2786          cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h          cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
2787          -rm -f ad_config.template          -rm -f ad_config.template
2788          @make \$(F77FILES)          @make \$(F77_PP_SRC_FILES)
2789          @make \$(AD_FLOW_FILES)          @make \$(FLOFILES)
2790          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ad_input_code.$FS          cat \$(FLOFILES) \$(AD_FILES) > ad_input_code.$FS
2791    
2792  ad_taf_output.$FS: ad_input_code.$FS  ad_taf_output.$FS: ad_input_code.$FS
2793          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
2794            ls -l ad_input_code_ad.$FS
2795          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS
2796    
2797  adtafonly:  adtafonly:
2798          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
2799            ls -l ad_input_code_ad.$FS
2800          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS
2801    
2802  \${EXE_AD}: ad_taf_output.o \$(OBJFILES)  \${EXE_AD}: ad_taf_output.o \$(OBJFILES)
# Line 2677  ftlall: ftl_taf Line 2820  ftlall: ftl_taf
2820  ftltaf: ftl_taf_output.$FS  ftltaf: ftl_taf_output.$FS
2821  ftltamc: ftl_tamc_output.$FS  ftltamc: ftl_tamc_output.$FS
2822    
2823  ftl_input_code.$FS: \$(AD_FILES) \$(HEADERFILES)  ftl_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES)
2824          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ftl_config.template          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ftl_config.template
2825          cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h          cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h
2826          -rm -f ftl_config.template          -rm -f ftl_config.template
2827          @make \$(F77FILES)          @make \$(F77_PP_SRC_FILES)
2828          @make \$(AD_FLOW_FILES)          @make \$(AD_FLOW_FILES)
2829          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.$FS          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.$FS
2830    
2831  ftl_taf_output.$FS: ftl_input_code.$FS  ftl_taf_output.$FS: ftl_input_code.$FS
2832          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
2833            ls -l ftl_input_code_ftl.$FS
2834          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS
2835    
2836  ftltafonly:  ftltafonly:
2837          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
2838            ls -l ftl_input_code_ftl.$FS
2839          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS
2840    
2841  ftl_taf: ftl_taf_output.o \$(OBJFILES)  ftl_taf: ftl_taf_output.o \$(OBJFILES)
# Line 2728  svd_touch: Line 2873  svd_touch:
2873          cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h          cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h
2874          -rm -f ftl_config.template          -rm -f ftl_config.template
2875    
2876  #=========================================  EOF
2877    
2878    fi
2879    
2880    #===  for OpenAD  ========================
2881    
2882    if test "x$OPENAD" != x ; then
2883    
2884    # ============ begin OpenAD specific section ==============
2885    
2886    cat >>$MAKEFILE <<EOF
2887    
2888    # all the source files linked from the various locations:
2889    ALL_LINKED_FILES= \
2890    \$(F77_SRC_FILES) \
2891    \$(C_SRC_FILES) \
2892    \$(H_SRC_FILES) \
2893    \$(F90_SRC_FILES) \
2894    \$(SPECIAL_FILES)
2895    
2896    ifndef OPENADROOT
2897      \$(error "Error:  environment variable OPENADROOT not defined!")
2898    endif
2899    
2900    ifndef XAIFSCHEMAROOT
2901      \$(error "Error:  environment variable XAIFSCHEMAROOT not defined!")
2902    endif
2903    
2904    ifndef XAIFBOOSTERROOT
2905      \$(error "Error:  environment variable XAIFBOOSTERROOT not defined!")
2906    endif
2907    
2908  EOF  EOF
2909    
2910    echo "  Add the source list for common block to module conversion "
2911    echo >> $MAKEFILE
2912    printf "CB2M_F90_SRC_NAMES = " >> $MAKEFILE
2913    for i in `cat ${OAD_CB2M_FILES}` ; do
2914      echo    " \\" >> $MAKEFILE
2915      printf " $i" >> $MAKEFILE
2916    done
2917    echo >> $MAKEFILE
2918    
2919    echo "  Add the source list for AD code generation"
2920    echo >> $MAKEFILE
2921    printf "AD_FILES = " >> $MAKEFILE
2922    for i in `cat ${OAD_CB2M_FILES}` ; do
2923      echo    " \\" >> $MAKEFILE
2924      printf " ${i}_mod.f$FS90" >> $MAKEFILE
2925    done
2926    AD_FILES=`cat adSrcFiles.tmp`
2927    for i in $AD_FILES ; do
2928      basename=${i%%.f}
2929      toBeIgnored=`egrep ^$basename'[      ]*' ${OAD_DONT_COMPILE} ${OAD_DONT_TRANSFORM}`
2930      if test -z "$toBeIgnored" ; then
2931        echo    " \\" >> $MAKEFILE
2932        printf " $i" >> $MAKEFILE
2933      fi
2934    done
2935    echo >> $MAKEFILE
2936    rm -f adSrcFiles.tmp
2937    
2938    cat >>$MAKEFILE <<EOF
2939    
2940    adAll: \$(EXE_AD)
2941    .PHONY: adAll
2942    
2943    CB2M_F90_PP_SRC_FILES=\$(addsuffix _mod.f$FS90, \$(CB2M_F90_SRC_NAMES))
2944    
2945    .PRECIOUS: \$(CB2M_F90_PP_SRC_FILES) \$(NON_AD_F77_SRC_FILES:.F=_cb2m.f$FS90)
2946    
2947    .PHONY: adDepend
2948    adDepend: \$(ALL_LINKED_FILES) \$(addsuffix _mod.h, \$(CB2M_F90_SRC_NAMES)) \$(addsuffix _mod.FF90, \$(CB2M_F90_SRC_NAMES)) \$(F77_SRC_FILES:.F=_cb2m.FF90)
2949            \$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(F77_SRC_FILES)
2950            \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)
2951            -rm -f makedepend.out
2952    
2953    OPENAD_SUPPORT_F90_SRC_FILES = \
2954    w2f__types.F90 \
2955    OAD_active.F90 \
2956    OAD_cp.F90 \
2957    OAD_rev.F90 \
2958    OAD_tape.F90        
2959    
2960    OPENAD_SUPPORT_C_SRC_FILES = \
2961    iaddr.c \
2962    timeRatio.c
2963    
2964    f95_test_mods.f90: \$(OPENAD_SUPPORT_F90_SRC_FILES:F90=$FS90)
2965            cat \$^ > \$@
2966    
2967    f95_test.f90: all_mods.xb.x2w.w2f.pp.f$FS90 \$(NON_AD_F77_SRC_FILES:.F=_cb2m.f$FS90) ad_input_code.w2f.pre.xb.x2w.w2f.td.pp.f$FS90
2968            cat \$^ > \$@
2969    
2970    f95_test.out: f95_test_mods.f90 f95_test.f90
2971            f95 -fixed -w=unused -maxcontin=132 -c f95_test_mods.f90 > \$@ 2>&1
2972            f95 -fixed -w=unused -maxcontin=132 -c -fixed f95_test.f90 >> \$@ 2>&1
2973    
2974    AD_OBJ_FILES=\$(OPENAD_SUPPORT_F90_SRC_FILES:.F90=.o) \$(OPENAD_SUPPORT_C_SRC_FILES:.c=.o) all_mods.xb.x2w.w2f.pp.o  ad_input_code.w2f.pre.xb.x2w.w2f.td.pp.o \$(NON_AD_F77_SRC_FILES:.F=_cb2m.o) \$(C_SRC_FILES:.c=.o) \$(F90_SRC_FILES:.F90=.o)
2975    
2976    \$(EXE_AD): \$(ALL_LINKED_FILES) \$(addsuffix _mod.h, \$(CB2M_F90_SRC_NAMES)) \$(AD_OBJ_FILES)
2977            @echo Creating \$@ ...
2978            \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES) \$(LIBS)
2979    
2980    # makefile debug rule
2981    openad: ad_input_code.w2f.pre.xb.x2w.w2f.td.pp.f$FS90
2982    .PHONY: openad
2983    
2984    # create the module files
2985    %_mod.FF90 : %.h ../OAD_support/cb2mGetModules.csh ../OAD_support/cb2mGetModules.awk
2986            ../OAD_support/cb2mGetModules.csh $< ../OAD_support/cb2mGetModules.awk
2987    
2988    # create the header files
2989    %_mod.h : %.h ../OAD_support/cb2mGetHeaders.csh ../OAD_support/cb2mGetHeaders.awk
2990            ../OAD_support/cb2mGetHeaders.csh $< ../OAD_support/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)
2991    
2992    # change everybody else to use the new module files:
2993    %_cb2m.FF90 : %.F ../OAD_support/cb2mUseModules.bash
2994            ../OAD_support/cb2mUseModules.bash $< ${MPI}
2995    
2996    # makefile debug rule
2997    small_f: \$(CB2M_F90_PP_SRC_FILES)
2998    .PHONY: small_f
2999    
3000    ad_output.txt: \$(EXE_AD)
3001            @printf 'linking data files ... '
3002            \$(LN) -f ../input_ad/data* ../input_ad/eedata .
3003            \$(LN) -f ../../global_ocean.90x40x15/input/*.bin .
3004            @printf 'running ... '
3005            @./\$(EXE_AD) > \$@
3006    
3007    CB2M_AD_FILES=\$(AD_FILES:.f=_cb2m.f$FS90)
3008    ad_input_code.f$FS90: ../OAD_support/maxMinDefs.f \$(CB2M_AD_FILES)
3009            cat \$^ > \$@
3010    
3011    # strip all comments and blanks to reduce
3012    # the file size in order to reduce perl's memory requirements
3013    ad_input_code_sf.f$FS90 : ad_input_code.f$FS90
3014            cat \$^ | sed -f ../OAD_support/strip.sed | sed -f ../OAD_support/stop2print.sed > \$@
3015    
3016    # mfef90 preprocessing
3017    # expand statement functions
3018    # expose mfef90 specific substring handling
3019    # add the w2f__types module
3020    ad_input_code_sf.w2f.f$FS90: ad_input_code_sf.f$FS90 mfef90 whirl2f whirl2f_be w2f__types.f90
3021            ./mfef90 -r8 -z -F -N132 \$<
3022            mv \$<.B \$(basename \$<).B
3023            ./whirl2f -openad \$(basename \$<).B
3024            cat w2f__types.f90 \$(basename \$<).w2f.f > \$@
3025    
3026    # canonicalizer
3027    ad_input_code_sf.w2f.pre.f$FS90: ad_input_code_sf.w2f.f$FS90 preProcess.py
3028            ./preProcess.py -H -S \$< -o \$@
3029    
3030    # F -> WHIRL
3031    # note that the canonicalized version cuts off at col 72
3032    # doing this also for string constants which is ok as long
3033    # as we are in fixed mode and cut of exactly there.
3034    # Otherwise mfef90 patches in spaces to fill up to 72 (or 132)
3035    # characters respectively.
3036    ad_input_code_sf.w2f.pre.B: ad_input_code_sf.w2f.pre.f$FS90 mfef90
3037            ./mfef90 -r8 -z -F \$<
3038            mv \$<.B \$@
3039    
3040    # WHIRL -> XAIF
3041    ad_input_code_sf.w2f.pre.xaif : ad_input_code_sf.w2f.pre.B whirl2xaif
3042            ./whirl2xaif -s -n --debug 1 -o \$@ \$<
3043    
3044    # XAIF -> XAIF'
3045    ad_input_code_sf.w2f.pre.xb.xaif : ad_input_code_sf.w2f.pre.xaif xaif.xsd xaif_base.xsd xaif_inlinable_intrinsics.xsd xaif_derivative_propagator.xsd xaif_output.xsd oadDriver
3046            ./oadDriver -f -t forward_step -i \$< -c \${XAIFSCHEMAROOT}/schema/examples/inlinable_intrinsics.xaif -o \$@ -I -r
3047    
3048    # XAIF' -> WHIRL'
3049    ad_input_code_sf.w2f.pre.xb.x2w.B : ad_input_code_sf.w2f.pre.xb.xaif xaif2whirl
3050            ./xaif2whirl --debug 1 --structured ad_input_code_sf.w2f.pre.B \$<
3051    
3052    # WHIRL' -> F'
3053    ad_input_code_sf.w2f.pre.xb.x2w.w2f.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.B whirl2f whirl2f_be
3054            ./whirl2f -FLIST:ftn_file=\$@ -openad \$<
3055    
3056    # insert template directives
3057    ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.w2f.f$FS90 ../OAD_support/insertTemplateDir.bash
3058            ../OAD_support/insertTemplateDir.bash \$< \$@
3059    
3060    PPEXTRAS=\$(wildcard ../OAD_support/ad_template.*.F) ../OAD_support/ad_inline.F
3061    # postprocess F'
3062    ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.pp.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f$FS90 postProcess.py \$(PPEXTRAS:.F=.f)
3063            ./postProcess.py -m r -i ../OAD_support/ad_inline.f -o \$@ \$<
3064    
3065    # extract all transformed modules
3066    all_mods.xb.x2w.w2f.pp.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.pp.f$FS90
3067            cat \$< | sed -n '/MODULE /,/END MODULE/p' > \$@
3068    
3069    # remove the transformed globals module from the
3070    # transformed ad_input_code file
3071    # and remove for now the duplicate variables
3072    # and fix 2 data statements
3073    ad_input_code.w2f.pre.xb.x2w.w2f.td.pp.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.pp.f$FS90
3074            cat \$< | sed '/MODULE /,/END MODULE/d' | sed '/^      INTEGER(w2f__i4) DOLOOP_UB/d' > \$@
3075    
3076    # setup some links
3077    %.xsd:
3078            \$(LN) \${XAIFSCHEMAROOT}/schema/\$@ .
3079    
3080    mfef90:
3081            \$(LN) \${OPEN64ROOT}/crayf90/sgi/mfef90 .
3082    
3083    # link the support files:
3084    \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):
3085            \$(LN) ../OAD_support/\$@ .
3086    
3087    whirl2xaif xaif2whirl:
3088            \$(LN) \${OPENADFORTTK}/bin/\$@ .
3089    
3090    preProcess.py postProcess.py:
3091            \$(LN) \${OPENADFORTTK_BASE}/tools/SourceProcessing/\$@ .
3092    
3093    whirl2f whirl2f_be:
3094            \$(LN) \${OPEN64ROOT}/whirl2f/\$@ .
3095    
3096    oadDriver:
3097            \$(LN) \${XAIFBOOSTERROOT}/xaifBooster/algorithms/BasicBlockPreaccumulationReverse/driver/oadDriver \$@
3098    
3099    # ============ end OpenAD specific section ==============
3100    
3101    EOF
3102    
3103    fi
3104    
3105    #=========================================
3106    
3107  if test "x$EXEHOOK" != x ; then  if test "x$EXEHOOK" != x ; then
3108      printf "\nexehook:\n\t%s\n" $EXEHOOK >> $MAKEFILE      printf "\nexehook:\n\t%s\n" $EXEHOOK >> $MAKEFILE
3109  fi  fi

Legend:
Removed from v.1.167  
changed lines
  Added in v.1.191

  ViewVC Help
Powered by ViewVC 1.1.22