/[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.251 by jmc, Sun Jul 21 23:21:36 2013 UTC revision 1.254 by heimbach, Wed Aug 7 16:20:03 2013 UTC
# Line 607  EOF Line 607  EOF
607  mpi_headers_do_local_copy() {  mpi_headers_do_local_copy() {
608    
609      dBug=0      dBug=0
610      #----- check for additional headers (chain of included headers)      rm -rf ./mpi_headers
611      listIni=$MPI_HEADER_FILES      if test -d $MPIINCLUDEDIR ; then
612      echo $listIni | grep "\<mpif.h\>" > /dev/null 2>&1  
613      outp=$?          #----- check for additional headers (chain of included headers)
614      #- always check mpif.h (the only mpi-header included in standard MITgcm code)          echo -n '  Check MPI headers ... '
615      if test $outp != 0 ; then listIni="mpif.h $listIni" ; fi          listIni=$MPI_HEADER_FILES
616      if test $dBug = 1 ; then echo "listIni='$listIni'" ; fi          echo $listIni | grep "\<mpif.h\>" > /dev/null 2>&1
617      doCheck=1 ; list2copy='' ; list2check=$listIni          outp=$?
618      while test $doCheck = 1 ; do          #- always check mpif.h (the only mpi-header included in standard MITgcm code)
619          newList=''          if test $outp != 0 ; then listIni="mpif.h $listIni" ; fi
620          for i in $list2check ; do          if test $dBug = 1 ; then echo "listIni='$listIni'" ; fi
621           if test -f $MPIINCLUDEDIR/$i ; then  
622              newInc=`grep '^ *include ' $MPIINCLUDEDIR/$i | \          doCheck=1 ; list2copy='' ; list2check=$listIni
623            while test $doCheck = 1 ; do
624              newList=''
625              for i in $list2check ; do
626                if test -f $MPIINCLUDEDIR/$i ; then
627                  newInc=`grep '^ *include ' $MPIINCLUDEDIR/$i | \
628                  sed -e 's/^ *include //' -e 's/\!.*$//' -e "s/'//g"  -e 's/\"//g'`                  sed -e 's/^ *include //' -e 's/\!.*$//' -e "s/'//g"  -e 's/\"//g'`
629             if test $dBug = 1 ; then echo -n "checking $i : newInc='$newInc'" ; fi                if test $dBug = 1 ; then echo -n "checking $i : newInc='$newInc'" ; fi
630             for j in $newInc ; do                for j in $newInc ; do
631               echo $listIni $list2copy $newList | grep "\<$j\>" > /dev/null 2>&1                  echo $listIni $list2copy $newList | grep "\<$j\>" > /dev/null 2>&1
632               outp=$?                  outp=$?
633               if test $outp != 0 ; then                  if test $outp != 0 ; then
634                  if test $dBug = 1 ; then echo -n " ; adding $j" ; fi                    if test $dBug = 1 ; then echo -n " ; adding $j" ; fi
635                  newList="$newList $j"                    newList="$newList $j"
636               fi                  fi
637             done                done
638             if test $dBug = 1 ; then echo "" ; fi                if test $dBug = 1 ; then echo "" ; fi
639           fi              fi
640              done
641              if test "x$newList" = x ; then doCheck=0
642              else list2check=$newList ; list2copy="$list2copy $newList"
643              fi
644          done          done
645          if test "x$newList" = x ; then doCheck=0          list2copy="$MPI_HEADER_FILES $list2copy"
646          else list2check=$newList ; list2copy="$list2copy $newList"          if test $dBug = 1 ; then echo "list2copy='$list2copy'" ; fi
647          fi  
648      done          #----- create local mpi_headers dir if we have files to copy
649      list2copy="$MPI_HEADER_FILES $list2copy"          mkListInc=`echo $list2copy | wc -w`
650      if test $dBug = 1 ; then echo "list2copy='$list2copy'" ; fi          if test $mkListInc != 0 ; then
651      #----- make local copy and update LOCAL_MPI_HEADERS (if not already set)            echo 'create local "./mpi_headers" dir'
652      mkListInc=0            mkdir -p ./mpi_headers
653      for i in $list2copy ; do            INCLUDES="-I./mpi_headers $INCLUDES"
654          if test -f $MPIINCLUDEDIR/$i ; then            mkListInc=1
655            fi
656            if test "x$LOCAL_MPI_HEADERS" != x ; then mkListInc=0 ; fi
657    
658            #----- make local copy and update LOCAL_MPI_HEADERS (if not already set)
659            for i in $list2copy ; do
660              if test -f $MPIINCLUDEDIR/$i ; then
661              cp -p $MPIINCLUDEDIR/$i ./mpi_headers              cp -p $MPIINCLUDEDIR/$i ./mpi_headers
662              if test $i = 'mpif.h' ; then              if test $i = 'mpif.h' ; then
663                  perl -i -pe 's/MPI_DISPLACEMENT_CURRENT=-1_8/MPI_DISPLACEMENT_CURRENT=-1/g' mpi_headers/mpif.h                  perl -i -pe 's/MPI_DISPLACEMENT_CURRENT=-1_8/MPI_DISPLACEMENT_CURRENT=-1/g' mpi_headers/mpif.h
664              fi              fi
665              if test $mkListInc = 1 ; then              if test $mkListInc = 2 ; then
666                  LOCAL_MPI_HEADERS="$LOCAL_MPI_HEADERS ./mpi_headers/$i"                  LOCAL_MPI_HEADERS="$LOCAL_MPI_HEADERS ./mpi_headers/$i"
667              fi              fi
668              if test "x$LOCAL_MPI_HEADERS" = x ; then              if test $mkListInc = 1 ; then
669                  LOCAL_MPI_HEADERS="./mpi_headers/$i" ; mkListInc=1                  LOCAL_MPI_HEADERS="./mpi_headers/$i" ; mkListInc=2
670              fi              fi
671          fi            fi
672      done          done
673        else
674            echo "WARNING: MPIINCLUDEDIR='$MPIINCLUDEDIR' is not a directory"
675            echo "WARNING: => skip checking for MPI headers (no ./mpi_headers dir)"
676    #       exit -1
677        fi
678  }  }
679    
680  #  Parse the package dependency information  #  Parse the package dependency information
# Line 2559  for i in $INCLUDEDIRS ; do Line 2579  for i in $INCLUDEDIRS ; do
2579  done  done
2580    
2581  if test ! "x$DIVA" = x -a ! "x$MPI" = x ; then  if test ! "x$DIVA" = x -a ! "x$MPI" = x ; then
2582    if test ! "x$MPIINCLUDEDIR" = x ; then      if test ! "x$MPIINCLUDEDIR" = x ; then
     if test -d $MPIINCLUDEDIR ; then  
         echo "  Creating the pseudo-MPI include directory"  
         INCLUDES="-I./mpi_headers $INCLUDES"  
         rm -rf ./mpi_headers  
         mkdir -p ./mpi_headers  
2583          #  Do a local copy of MPI headers files (in local dir ./mpi_headers/) after          #  Do a local copy of MPI headers files (in local dir ./mpi_headers/) after
2584          #   checking for additional included headers (in case of chain of included          #   checking for additional included headers (in case of chain of included
2585          #   header); also set LOCAL_MPI_HEADERS (if not already set)          #   header); also set LOCAL_MPI_HEADERS (if not already set)
2586          mpi_headers_do_local_copy          mpi_headers_do_local_copy
     else  
         echo "WARNING: MPIINCLUDEDIR='$MPIINCLUDEDIR' is not a dir"  
         echo "WARNING: ==> cannot create pseudo-MPI include directory"  
 #       exit -1  
2587      fi      fi
   fi  
2588  fi  fi
2589    
2590  echo "  Determining the list of source and include files"  echo "  Determining the list of source and include files"
# Line 2605  if test "x$OPENAD" != x ; then Line 2615  if test "x$OPENAD" != x ; then
2615      OAD_KEEP_ORIGINAL="/dev/null"      OAD_KEEP_ORIGINAL="/dev/null"
2616      OAD_CB2M_FILES="/dev/null"      OAD_CB2M_FILES="/dev/null"
2617      OADTOOLS="$TOOLSDIR/OAD_support"      OADTOOLS="$TOOLSDIR/OAD_support"
     test -f "oadtempflile"  &&  \rm -f "oadtempflile"  
 cat >> "oadtempflile" <<EOF  
 $OADTOOLS  
 EOF  
2618      echo "  looking for dontCompile file:  "      echo "  looking for dontCompile file:  "
2619      for i in "." $MODS ; do      for i in "." $MODS ; do
2620          if test -r $i"/dontCompile" ; then          if test -r $i"/dontCompile" ; then
# Line 2972  CLEAN: Line 2978  CLEAN:
2978          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;
2979          -find \$(EXEDIR) -name "*.data" -exec rm {} \;          -find \$(EXEDIR) -name "*.data" -exec rm {} \;
2980          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;
2981          -rm -f *.txt STD* *diagnostics.log datetime          -rm -f *.txt STDOUT.* STDERR.* *diagnostics.log *.[0-9][0-9][0-9][0-9].log
2982          -rm -f *_MIT_CE_000.opt0000 costfunction*0000 costfinal          -rm -f datetime costfinal divided.ctrl snapshot* output_adm.txt.diva_*
2983          -rm -f divided.ctrl snapshot* oad_cp.000.[0-9][0-9][0-9][0-9][0-9]          -rm -f *_MIT_CE_000.opt0000 costfunction*0000
2984            -rm -f oad_cp.[0-9][0-9][0-9].?????
2985    
2986  makefile:  makefile:
2987          $THIS_SCRIPT $G2ARGS          $THIS_SCRIPT $G2ARGS
# Line 3111  ad_exe_target: Line 3118  ad_exe_target:
3118          @-rm -f ad_config.template          @-rm -f ad_config.template
3119          \$(MAKE) -f \$(MAKEFILE) \$(EXE_AD)          \$(MAKE) -f \$(MAKEFILE) \$(EXE_AD)
3120    
3121  ad_input_code.$FS: \$(AD_FILES) \$(AD_FLOW_FILES)  ad_input_code.$FS: \$(F77_SRC_FILES) \$(AD_FLOW_FILES)
3122          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Adjoint version" -bAD_CONFIG_H -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Adjoint version" -bAD_CONFIG_H -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template
3123          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
3124          @-rm -f ad_config.template          @-rm -f ad_config.template
3125          @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)          @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)
3126          @\$(MAKE) -f \$(MAKEFILE) \$(FLOWFILES)          @\$(MAKE) -f \$(MAKEFILE) \$(FLOWFILES)
3127          cat \$(FLOWFILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ad_input_code.$FS          cat \$(FLOWFILES) \$(F77_PP_SRC_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ad_input_code.$FS
3128    
3129  ad_taf_output.$FS: ad_input_code.$FS  ad_taf_output.$FS: ad_input_code.$FS
3130          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
# Line 3129  adtafonly: Line 3136  adtafonly:
3136          ls -l ad_input_code_ad.$FS          ls -l ad_input_code_ad.$FS
3137          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
3138    
3139  \$(EXE_AD): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) ad_taf_output.o \$(OBJFILES) \$(EMBEDDED_FILES)  \$(EXE_AD): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES:.c=.o) \$(H_SRC_FILES) \$(F90_SRC_FILES) ad_taf_output.o \$(EMBEDDED_FILES)
3140          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(C_SRC_FILES:.c=.o) ad_taf_output.o \$(LIBS)
3141    
3142  ad_tamc_output.$FS: ad_input_code.$FS  ad_tamc_output.$FS: ad_input_code.$FS
3143          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS
# Line 3159  ftl_exe_target: Line 3166  ftl_exe_target:
3166          @-rm -f ad_config.template          @-rm -f ad_config.template
3167          \$(MAKE) -f \$(MAKEFILE) \$(EXE_FTL)          \$(MAKE) -f \$(MAKEFILE) \$(EXE_FTL)
3168    
3169  ftl_input_code.$FS: \$(AD_FILES)  ftl_input_code.$FS: \$(F77_SRC_FILES)
3170          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "TangLin version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "TangLin version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template
3171          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
3172          @-rm -f ad_config.template          @-rm -f ad_config.template
3173          @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)          @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)
3174          @\$(MAKE) -f \$(MAKEFILE) \$(AD_FLOW_FILES)          @\$(MAKE) -f \$(MAKEFILE) \$(AD_FLOW_FILES)
3175          cat \$(AD_FLOW_FILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ftl_input_code.$FS          cat \$(AD_FLOW_FILES) \$(F77_PP_SRC_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ftl_input_code.$FS
3176    
3177  ftl_taf_output.$FS: ftl_input_code.$FS  ftl_taf_output.$FS: ftl_input_code.$FS
3178          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
3179          ls -l ftl_input_code_ftl.$FS          ls -l ftl_input_code_tl.$FS
3180          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS          cat ftl_input_code_tl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS
3181    
3182  ftltafonly:  ftltafonly:
3183          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
3184          ls -l ftl_input_code_ftl.$FS          ls -l ftl_input_code_tl.$FS
3185          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS          cat ftl_input_code_tl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS
3186    
3187  \$(EXE_FTL): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) ftl_taf_output.o \$(OBJFILES) \$(EMBEDDED_FILES)  \$(EXE_FTL): ftl_taf_output.o \$(C_SRC_FILES:.c=.o)
3188          \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)          \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(C_SRC_FILES:.c=.o) ftl_taf_output.o \$(LIBS)
3189    
3190  ftl_tamc_output.$FS: ftl_input_code.$FS  ftl_tamc_output.$FS: ftl_input_code.$FS
3191          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS

Legend:
Removed from v.1.251  
changed lines
  Added in v.1.254

  ViewVC Help
Powered by ViewVC 1.1.22