/[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.210 by jmc, Tue Nov 2 00:51:11 2010 UTC revision 1.211 by jmc, Tue Nov 2 22:45:07 2010 UTC
# Line 656  get_fortran_c_namemangling()  { Line 656  get_fortran_c_namemangling()  {
656      if test ! "x$FC_NAMEMANGLE" = x ; then      if test ! "x$FC_NAMEMANGLE" = x ; then
657          return 0          return 0
658      fi      fi
659      echo "running: get_fortran_c_namemangling()" >> genmake_warnings      echo "running: get_fortran_c_namemangling()" >> $LOGFILE
660    
661      default_nm="#define FC_NAMEMANGLE(X) X ## _"      default_nm="#define FC_NAMEMANGLE(X) X ## _"
662    
663      cat > genmake_test.c <<EOF      cat > genmake_test.c <<EOF
664  void tcall( char * string ) { tsub( string ); }  void tcall( char * string ) { tsub( string ); }
665  EOF  EOF
666      $MAKE genmake_test.o >> genmake_warnings 2>&1      $MAKE genmake_test.o >> $LOGFILE 2>&1
667      RETVAL=$?      RETVAL=$?
668      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
669          FC_NAMEMANGLE=$default_nm          FC_NAMEMANGLE=$default_nm
670          cat <<EOF>> genmake_errors          cat <<EOF>> $LOGFILE
671    
672  WARNING: C test compile fails  WARNING: C test compile fails
673  WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'  WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'
# Line 679  EOF Line 679  EOF
679      RETVAL=$?      RETVAL=$?
680      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
681          FC_NAMEMANGLE=$default_nm          FC_NAMEMANGLE=$default_nm
682          cat <<EOF>> genmake_warnings          cat <<EOF>> $LOGFILE
683    
684  WARNING: The "nm" command failed.  WARNING: The "nm" command failed.
685  WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'  WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'
# Line 693  EOF Line 693  EOF
693        call tsub( string )        call tsub( string )
694        end        end
695  EOF  EOF
696      $FC $FFLAGS -c genmake_tcomp.$FS >> genmake_warnings 2>&1      $FC $FFLAGS -c genmake_tcomp.$FS >> $LOGFILE 2>&1
697      RETVAL=$?      RETVAL=$?
698      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
699          FC_NAMEMANGLE=$default_nm          FC_NAMEMANGLE=$default_nm
700          cat <<EOF>> genmake_warnings          cat <<EOF>> $LOGFILE
701    
702  WARNING: FORTRAN test compile fails -- please see "genmake_errors"  WARNING: FORTRAN test compile fails -- please see '$LOGFILE'
703  WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'  WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'
704  WARNING: Please contact <MITgcm-support@mitgcm.org> if you need help here.  WARNING: Please contact <MITgcm-support@mitgcm.org> if you need help here.
705  EOF  EOF
# Line 709  EOF Line 709  EOF
709      RETVAL=$?      RETVAL=$?
710      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
711          FC_NAMEMANGLE=$default_nm          FC_NAMEMANGLE=$default_nm
712          cat <<EOF>> genmake_warnings          cat <<EOF>> $LOGFILE
713    
714  WARNING: The "nm" command failed.  WARNING: The "nm" command failed.
715  WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'  WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'
# Line 743  EOF Line 743  EOF
743    
744    
745  check_HAVE_CLOC()  {  check_HAVE_CLOC()  {
746      echo >> genmake_warnings      echo >> $LOGFILE
747      echo "running: check_HAVE_CLOC()" >> genmake_warnings      echo "running: check_HAVE_CLOC()" >> $LOGFILE
748      get_fortran_c_namemangling      get_fortran_c_namemangling
749      cat <<EOF > genmake_tc_1.c      cat <<EOF > genmake_tc_1.c
750  $FC_NAMEMANGLE  $FC_NAMEMANGLE
# Line 762  void FC_NAMEMANGLE(cloc) ( double *curti Line 762  void FC_NAMEMANGLE(cloc) ( double *curti
762  }  }
763  EOF  EOF
764      COMM="$CC $CFLAGS -c genmake_tc_1.c"      COMM="$CC $CFLAGS -c genmake_tc_1.c"
765      echo $COMM >> genmake_warnings      echo $COMM >> $LOGFILE
766      $COMM >> genmake_warnings 2>&1      $COMM >> $LOGFILE 2>&1
767      RET_C=$?      RET_C=$?
768      cat <<EOF > genmake_tc_2.$FS      cat <<EOF > genmake_tc_2.$FS
769        program hello        program hello
# Line 774  EOF Line 774  EOF
774        end        end
775  EOF  EOF
776      COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"      COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
777      echo $COMM >> genmake_warnings      echo $COMM >> $LOGFILE
778      $COMM >> genmake_warnings 2>&1      $COMM >> $LOGFILE 2>&1
779      RET_F=$?      RET_F=$?
780      test -x ./genmake_tc  &&  ./genmake_tc >> genmake_warnings 2>&1      test -x ./genmake_tc  &&  ./genmake_tc >> $LOGFILE 2>&1
781      RETVAL=$?      RETVAL=$?
782      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
783          HAVE_CLOC=t          HAVE_CLOC=t
# Line 791  check_HAVE_SIGREG()  { Line 791  check_HAVE_SIGREG()  {
791      if test ! "x$HAVE_SIGREG" = x ; then      if test ! "x$HAVE_SIGREG" = x ; then
792          return          return
793      fi      fi
794      echo >> genmake_warnings      echo >> $LOGFILE
795      echo "running: check_HAVE_SIGREG()" >> genmake_warnings      echo "running: check_HAVE_SIGREG()" >> $LOGFILE
796      get_fortran_c_namemangling      get_fortran_c_namemangling
797      cat <<EOF > genmake_tc_1.c      cat <<EOF > genmake_tc_1.c
798  $FC_NAMEMANGLE  $FC_NAMEMANGLE
# Line 825  void FC_NAMEMANGLE(sigreg) (int * aip) Line 825  void FC_NAMEMANGLE(sigreg) (int * aip)
825  }  }
826  EOF  EOF
827      COMM="$CC $CFLAGS -c genmake_tc_1.c"      COMM="$CC $CFLAGS -c genmake_tc_1.c"
828      echo $COMM >> genmake_warnings      echo $COMM >> $LOGFILE
829      $COMM >> genmake_warnings 2>&1      $COMM >> $LOGFILE 2>&1
830      RET_C=$?      RET_C=$?
831      cat <<EOF > genmake_tc_2.$FS      cat <<EOF > genmake_tc_2.$FS
832        program hello        program hello
# Line 836  EOF Line 836  EOF
836        call sigreg(anint)        call sigreg(anint)
837        end        end
838  EOF  EOF
839      cat genmake_tc_2.$FS >> genmake_warnings      cat genmake_tc_2.$FS >> $LOGFILE
840      COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"      COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
841      echo $COMM >> genmake_warnings      echo $COMM >> $LOGFILE
842      $COMM >> genmake_warnings 2>&1      $COMM >> $LOGFILE 2>&1
843      RETVAL=$?      RETVAL=$?
844      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
845          HAVE_SIGREG=t          HAVE_SIGREG=t
# Line 857  check_HAVE_SETRLSTK()  { Line 857  check_HAVE_SETRLSTK()  {
857      if test ! "x$HAVE_SETRLSTK" = x ; then      if test ! "x$HAVE_SETRLSTK" = x ; then
858          return          return
859      fi      fi
860      echo >> genmake_warnings      echo >> $LOGFILE
861      echo "running: check_HAVE_SETRLSTK()" >> genmake_warnings      echo "running: check_HAVE_SETRLSTK()" >> $LOGFILE
862      get_fortran_c_namemangling      get_fortran_c_namemangling
863      cat <<EOF > genmake_tc_1.c      cat <<EOF > genmake_tc_1.c
864  $FC_NAMEMANGLE  $FC_NAMEMANGLE
# Line 875  void FC_NAMEMANGLE(setrlstk) () Line 875  void FC_NAMEMANGLE(setrlstk) ()
875  }  }
876  EOF  EOF
877      COMM="$CC $CFLAGS -c genmake_tc_1.c"      COMM="$CC $CFLAGS -c genmake_tc_1.c"
878      echo $COMM >> genmake_warnings      echo $COMM >> $LOGFILE
879      $COMM >> genmake_warnings 2>&1      $COMM >> $LOGFILE 2>&1
880      RET_C=$?      RET_C=$?
881      cat <<EOF > genmake_tc_2.$FS      cat <<EOF > genmake_tc_2.$FS
882        program hello        program hello
# Line 884  EOF Line 884  EOF
884        call setrlstk()        call setrlstk()
885        end        end
886  EOF  EOF
887      cat genmake_tc_2.$FS >> genmake_warnings      cat genmake_tc_2.$FS >> $LOGFILE
888      COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"      COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
889      echo $COMM >> genmake_warnings      echo $COMM >> $LOGFILE
890      $COMM >> genmake_warnings 2>&1      $COMM >> $LOGFILE 2>&1
891      RETVAL=$?      RETVAL=$?
892      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
893          HAVE_SETRLSTK=t          HAVE_SETRLSTK=t
# Line 898  EOF Line 898  EOF
898    
899    
900  check_HAVE_STAT()  {  check_HAVE_STAT()  {
901      echo >> genmake_warnings      echo >> $LOGFILE
902      echo "running: check_HAVE_STAT()" >> genmake_warnings      echo "running: check_HAVE_STAT()" >> $LOGFILE
903      get_fortran_c_namemangling      get_fortran_c_namemangling
904      cat <<EOF > genmake_tc_1.c      cat <<EOF > genmake_tc_1.c
905  $FC_NAMEMANGLE  $FC_NAMEMANGLE
# Line 921  void FC_NAMEMANGLE(tfsize) ( int *nbyte Line 921  void FC_NAMEMANGLE(tfsize) ( int *nbyte
921  }  }
922  EOF  EOF
923      COMM="$CC $CFLAGS -c genmake_tc_1.c"      COMM="$CC $CFLAGS -c genmake_tc_1.c"
924      echo $COMM >> genmake_warnings      echo $COMM >> $LOGFILE
925      $COMM >> genmake_tc.log 2>&1      $COMM >> genmake_tc.log 2>&1
926      RET_C=$?      RET_C=$?
927      cat <<EOF > genmake_tc_2.$FS      cat <<EOF > genmake_tc_2.$FS
# Line 931  EOF Line 931  EOF
931        print *," HELLO WORLD", nbyte        print *," HELLO WORLD", nbyte
932        end        end
933  EOF  EOF
934      cat genmake_tc_2.$FS >> genmake_warnings      cat genmake_tc_2.$FS >> $LOGFILE
935      COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"      COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
936      echo $COMM >> genmake_warnings      echo $COMM >> $LOGFILE
937      $COMM >> genmake_tc.log 2>&1      $COMM >> genmake_tc.log 2>&1
938      RETVAL=$?      RETVAL=$?
939      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
# Line 948  check_netcdf_libs()  { Line 948  check_netcdf_libs()  {
948      if test ! "x$SKIP_NETCDF_CHECK" = x ; then      if test ! "x$SKIP_NETCDF_CHECK" = x ; then
949          return          return
950      fi      fi
951      echo >> genmake_warnings      echo >> $LOGFILE
952      echo "running: check_netcdf_libs()" >> genmake_warnings      echo "running: check_netcdf_libs()" >> $LOGFILE
953      cat <<EOF > genmake_tnc.F      cat <<EOF > genmake_tnc.F
954        program fgennc        program fgennc
955  #include "netcdf.inc"  #include "netcdf.inc"
# Line 985  EOF Line 985  EOF
985      $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \      $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
986          &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS >> genmake_tnc.log 2>&1          &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS >> genmake_tnc.log 2>&1
987      RET_COMPILE=$?      RET_COMPILE=$?
988      cat genmake_tnc.log >> genmake_warnings      cat genmake_tnc.log >> $LOGFILE
989    
990      #EH3  Remove test program execution for machines that either disallow      #EH3  Remove test program execution for machines that either disallow
991      #EH3  execution or cannot support it (eg. cross-compilers)      #EH3  execution or cannot support it (eg. cross-compilers)
# Line 996  EOF Line 996  EOF
996    
997      if test "x$RET_COMPILE" = x0 ; then      if test "x$RET_COMPILE" = x0 ; then
998          HAVE_NETCDF=t          HAVE_NETCDF=t
999          echo "check_netcdf: successful" >> genmake_warnings          echo "check_netcdf: successful" >> $LOGFILE
1000      else      else
1001          # try again with "-lnetcdf" added to the libs          # try again with "-lnetcdf" added to the libs
1002          echo "==> try again with added '-lnetcdf'" > genmake_tnc.log          echo "==> try again with added '-lnetcdf'" > genmake_tnc.log
# Line 1007  EOF Line 1007  EOF
1007              &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \              &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
1008              &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf >> genmake_tnc.log 2>&1              &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf >> genmake_tnc.log 2>&1
1009          RET_COMPILE=$?          RET_COMPILE=$?
1010          echo >> genmake_warnings          echo >> $LOGFILE
1011          cat genmake_tnc.log >> genmake_warnings          cat genmake_tnc.log >> $LOGFILE
1012          if test "x$RET_COMPILE" = x0 ; then          if test "x$RET_COMPILE" = x0 ; then
1013              LIBS="$LIBS -lnetcdf"              LIBS="$LIBS -lnetcdf"
1014              HAVE_NETCDF=t              HAVE_NETCDF=t
1015              echo "check_netcdf: successful" >> genmake_warnings              echo "check_netcdf: successful" >> $LOGFILE
1016          else          else
1017          # try again with "-lnetcdff" added to the libs          # try again with "-lnetcdff" added to the libs
1018              echo "==> try again with added '-lnetcdff -lnetcdf'" > genmake_tnc.log              echo "==> try again with added '-lnetcdff -lnetcdf'" > genmake_tnc.log
# Line 1023  EOF Line 1023  EOF
1023                  &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \                  &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
1024                  &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdff -lnetcdf >> genmake_tnc.log 2>&1                  &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdff -lnetcdf >> genmake_tnc.log 2>&1
1025              RET_COMPILE=$?              RET_COMPILE=$?
1026              echo >> genmake_warnings              echo >> $LOGFILE
1027              cat genmake_tnc.log >> genmake_warnings              cat genmake_tnc.log >> $LOGFILE
1028              if test "x$RET_COMPILE" = x0 ; then              if test "x$RET_COMPILE" = x0 ; then
1029                  LIBS="$LIBS -lnetcdff -lnetcdf"                  LIBS="$LIBS -lnetcdff -lnetcdf"
1030                  HAVE_NETCDF=t                  HAVE_NETCDF=t
1031                  echo "check_netcdf: successful" >> genmake_warnings                  echo "check_netcdf: successful" >> $LOGFILE
1032              fi              fi
1033          fi          fi
1034      fi      fi
# Line 1060  DISABLE= Line 1060  DISABLE=
1060  # MAKEDEPEND=  # MAKEDEPEND=
1061  PKG_DEPEND=  PKG_DEPEND=
1062  PKG_GROUPS=  PKG_GROUPS=
1063  DUMPSTATE=t  DUMPSTATE=f
1064  OPTFILE=  OPTFILE=
1065  INCLUDES="-I. $INCLUDES"  INCLUDES="-I. $INCLUDES"
1066  FFLAGS=  FFLAGS=
# Line 1168  cat <<EOF Line 1168  cat <<EOF
1168    
1169  GENMAKE :  GENMAKE :
1170    
1171  A program for GENerating MAKEfiles for the MITgcm project.  For a  A program for GENerating MAKEfiles for the MITgcm project.
1172  quick list of options, use "genmake -h" or for more detail see:     For a quick list of options, use "genmake2 -h"
1173    or for more detail see the Developer's HOWTO manual at:
1174    http://mitgcm.org/devel_HOWTO/     http://mitgcm.org/public/docs.html
1175    
1176  EOF  EOF
1177    
1178    LOGFILE="genmake.log"
1179  #- clean-up previous genmake logfiles:  #- clean-up previous genmake logfiles:
1180  rm -f genmake_state genmake_*optfile genmake_warnings genmake_errors  rm -f genmake_state genmake_*optfile $LOGFILE
1181    
1182  echo "===  Processing options files and arguments  ==="  echo "===  Processing options files and arguments  ==="
1183  gm_local="genmake_local"  gm_local="genmake_local"
# Line 1458  if test "x$OPTFILE" != xNONE ; then Line 1459  if test "x$OPTFILE" != xNONE ; then
1459              echo "--please check that variable syntax is bash-compatible"              echo "--please check that variable syntax is bash-compatible"
1460              exit 1              exit 1
1461          fi          fi
1462          if test "x$DUMPSTATE" != xf ; then          if test "x$DUMPSTATE" = xt ; then
1463              cp -f $OPTFILE "genmake_optfile"              cp -f $OPTFILE "genmake_optfile"
1464          fi          fi
1465      else      else
# Line 1485  if test "x${AD_OPTFILE}" != xNONE ; then Line 1486  if test "x${AD_OPTFILE}" != xNONE ; then
1486              echo "--please check that variable syntax is bash-compatible"              echo "--please check that variable syntax is bash-compatible"
1487              exit 1              exit 1
1488          fi          fi
1489          if test "x$DUMPSTATE" != xf ; then          if test "x$DUMPSTATE" = xt ; then
1490              cp -f $AD_OPTFILE "genmake_ad_optfile"              cp -f $AD_OPTFILE "genmake_ad_optfile"
1491          fi          fi
1492      else      else
# Line 2710  Clean: Line 2711  Clean:
2711          @make cleanlinks          @make cleanlinks
2712          -rm -f \$(SPECIAL_FILES) f90mkdepend.log          -rm -f \$(SPECIAL_FILES) f90mkdepend.log
2713          -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
2714            -rm -f genmake_warnings genmake_errors make.log
2715    
2716  # remove also the executable, files that "genmake2" generates (except Makefile)  # remove also the executable, files that "genmake2" generates (except Makefile)
2717  #         and output from a run (plus output and log files from testreport)  #         and output from a run (plus log files from testreport)
2718  CLEAN:  CLEAN:
2719          @make Clean          @make Clean
2720          -rm -f \$(EXECUTABLE) \$(EXE_AD) *.bak "$MAKEFILE.old"          -rm -f \$(EXECUTABLE) \$(EXE_AD) *.bak $MAKEFILE.old
2721          -rm -f genmake_state genmake_*optfile genmake_warnings genmake_errors          -rm -f $LOGFILE genmake_state genmake_*optfile genmake.tr_log make.tr_log
         -rm -f genmake.log make.log run.log  
2722          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;
2723          -find \$(EXEDIR) -name "*.data" -exec rm {} \;          -find \$(EXEDIR) -name "*.data" -exec rm {} \;
2724          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;
# Line 2725  CLEAN: Line 2726  CLEAN:
2726          -rm -f *_MIT_CE_000.opt0000 costfunction*0000          -rm -f *_MIT_CE_000.opt0000 costfunction*0000
2727          -rm -rf mnc_test_*          -rm -rf mnc_test_*
2728    
 #eh3 Makefile: makefile  
2729  makefile:  makefile:
2730          $THIS_SCRIPT $G2ARGS          $THIS_SCRIPT $G2ARGS
2731  cleanlinks:  cleanlinks:
# Line 3241  fi Line 3241  fi
3241    
3242    
3243  #  Write the "state" for future records  #  Write the "state" for future records
3244  if test "x$DUMPSTATE" != xf ; then  if test "x$DUMPSTATE" = xt ; then
3245      printf "" > genmake_state      printf "" > genmake_state
3246      for i in $gm_state ; do      for i in $gm_state ; do
3247          t1="t2=\$$i"          t1="t2=\$$i"

Legend:
Removed from v.1.210  
changed lines
  Added in v.1.211

  ViewVC Help
Powered by ViewVC 1.1.22