/[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.207 by jmc, Wed May 26 00:08:18 2010 UTC revision 1.211 by jmc, Tue Nov 2 22:45:07 2010 UTC
# Line 56  test_for_string_in_file() { Line 56  test_for_string_in_file() {
56  # the package list.  # the package list.
57  expand_pkg_groups() {  expand_pkg_groups() {
58      new_packages=      new_packages=
     PKG_GROUPS=$ROOTDIR"/pkg/pkg_groups"  
59      if test -r $PKG_GROUPS ; then      if test -r $PKG_GROUPS ; then
60          cat $PKG_GROUPS | sed -e 's/#.*$//g' | sed -e 's/:/ : /g' > ./p1.tmp          cat $PKG_GROUPS | sed -e 's/#.*$//g' | sed -e 's/:/ : /g' > ./p1.tmp
61          cat ./p1.tmp | $AWK '(NF>2 && $2==":"){ print $0 }' > ./p2.tmp          cat ./p1.tmp | $AWK '(NF>2 && $2==":"){ print $0 }' > ./p2.tmp
# Line 67  expand_pkg_groups() { Line 66  expand_pkg_groups() {
66              if test "x$RETVAL" = x0 ; then              if test "x$RETVAL" = x0 ; then
67                  matched=1                  matched=1
68                  replace=`echo $line | $AWK '{ $1=""; $2=""; print $0 }'`                  replace=`echo $line | $AWK '{ $1=""; $2=""; print $0 }'`
69                  echo "    replacing \"$i\" with: $replace"                  echo "    replacing \"$i\" with:$replace"
70                  new_packages="$new_packages $replace"                  new_packages="$new_packages $replace"
71              else              else
72                  new_packages="$new_packages $i"                  new_packages="$new_packages $i"
# Line 484  get_pdepend_list()  { Line 483  get_pdepend_list()  {
483          > ./.pd_tmp          > ./.pd_tmp
484      RETVAL=$?      RETVAL=$?
485      if test ! "x${RETVAL}" = x0 ; then      if test ! "x${RETVAL}" = x0 ; then
486        echo "Error: unable to parse package dependencies -- please check PDEPEND=\"$1\""        echo "Error: unable to parse package dependencies -- please check PKG_DEPEND=\"$1\""
487        exit 1        exit 1
488      fi      fi
489      . ./.pd_tmp      . ./.pd_tmp
# Line 519  Usage: "$0" [OPTIONS] Line 518  Usage: "$0" [OPTIONS]
518        -pdepend=NAME | --pdepend=NAME        -pdepend=NAME | --pdepend=NAME
519            Get package dependency information from "NAME".            Get package dependency information from "NAME".
520    
521      -pdefault NAME | --pdefault NAME      -pgroups NAME | --pgroups NAME
522        -pdefault=NAME | --pdefault=NAME        -pgroups=NAME | --pgroups=NAME
523            Get the default package list from "NAME".            Get the package groups information from "NAME".
524    
525      -bash NAME      -bash NAME
526            Explicitly specify the Bourne or BASH shell to use            Explicitly specify the Bourne or BASH shell to use
# Line 657  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()" >> $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 >> $LOGFILE
747        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 760  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 772  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 789  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 >> $LOGFILE
795        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 821  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 832  EOF Line 836  EOF
836        call sigreg(anint)        call sigreg(anint)
837        end        end
838  EOF  EOF
839      echo >> genmake_warnings      cat genmake_tc_2.$FS >> $LOGFILE
     echo "running: check_HAVE_SIGREG()" >> genmake_warnings  
     cat genmake_tc_2.$FS >> genmake_warnings  
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 855  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 >> $LOGFILE
861        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 871  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 880  EOF Line 884  EOF
884        call setrlstk()        call setrlstk()
885        end        end
886  EOF  EOF
887      echo >> genmake_warnings      cat genmake_tc_2.$FS >> $LOGFILE
     echo "running: check_HAVE_SETRLSTK()" >> genmake_warnings  
     cat genmake_tc_2.$FS >> genmake_warnings  
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 896  EOF Line 898  EOF
898    
899    
900  check_HAVE_STAT()  {  check_HAVE_STAT()  {
901        echo >> $LOGFILE
902        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 917  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 927  EOF Line 931  EOF
931        print *," HELLO WORLD", nbyte        print *," HELLO WORLD", nbyte
932        end        end
933  EOF  EOF
934      echo >> genmake_warnings      cat genmake_tc_2.$FS >> $LOGFILE
     echo "running: check_HAVE_STAT()" >> genmake_warnings  
     cat genmake_tc_2.$FS >> genmake_warnings  
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 946  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 965  EOF Line 967  EOF
967        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
968        end        end
969  EOF  EOF
970      echo "===  genmake_tnc.F  ===" > genmake_tnc.log      echo "===  genmake_tnc.F  >>>" > genmake_tnc.log
971      cat genmake_tnc.F >> genmake_tnc.log      cat genmake_tnc.F >> genmake_tnc.log
972      echo "===  genmake_tnc.F  ===" >> genmake_tnc.log      echo "<<<  genmake_tnc.F  ===" >> genmake_tnc.log
973      RET_CPP=f      RET_CPP=f
974      COMM="cat genmake_tnc.F | $CPP $DEFINES $INCLUDES"      COMM="cat genmake_tnc.F | $CPP $DEFINES $INCLUDES"
975      echo "$COMM" >> genmake_tnc.log      echo "$COMM" >> genmake_tnc.log
# Line 983  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 994  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" >> $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
1003          echo "cat genmake_tnc.F | $CPP $DEFINES $INCLUDES > genmake_tnc.$FS \ " >> genmake_tnc.log          echo "cat genmake_tnc.F | $CPP $DEFINES $INCLUDES > genmake_tnc.$FS \ " >> genmake_tnc.log
1004          echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log          echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log
1005          echo " &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf" >> genmake_tnc.log          echo " &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf" >> genmake_tnc.log
# Line 1004  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          cat genmake_tnc.log >> genmake_warnings          echo >> $LOGFILE
1011            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" >> $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
1019              echo "cat genmake_tnc.F | $CPP $DEFINES $INCLUDES > genmake_tnc.$FS \ " >> genmake_tnc.log              echo "cat genmake_tnc.F | $CPP $DEFINES $INCLUDES > genmake_tnc.$FS \ " >> genmake_tnc.log
1020              echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log              echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log
1021              echo " &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf" >> genmake_tnc.log              echo " &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf" >> genmake_tnc.log
# Line 1018  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              cat genmake_tnc.log >> genmake_warnings              echo >> $LOGFILE
1027                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" >> $LOGFILE
1032              fi              fi
1033          fi          fi
1034      fi      fi
# Line 1051  ENABLE= Line 1058  ENABLE=
1058  DISABLE=  DISABLE=
1059  # MAKEFILE=  # MAKEFILE=
1060  # MAKEDEPEND=  # MAKEDEPEND=
1061  PDEPEND=  PKG_DEPEND=
1062  DUMPSTATE=t  PKG_GROUPS=
1063  PDEFAULT=  DUMPSTATE=f
1064  OPTFILE=  OPTFILE=
1065  INCLUDES="-I. $INCLUDES"  INCLUDES="-I. $INCLUDES"
1066  FFLAGS=  FFLAGS=
# Line 1138  FTL_TAF_FLAGS= Line 1145  FTL_TAF_FLAGS=
1145  SVD_TAMC_FLAGS=  SVD_TAMC_FLAGS=
1146  TAMC_EXTRA=  TAMC_EXTRA=
1147    
   
1148  #  The following state can be set directly by command-line switches  #  The following state can be set directly by command-line switches
1149  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"  gm_s1="OPTFILE PKG_DEPEND PKG_GROUPS MAKEFILE MAKEDEPEND PLATFORM ROOTDIR MODS DISABLE ENABLE"
1150  gm_s2="FC IEEE USE_R4 TS PAPIS PCLS PAPI PCL HPMT GSL DEVEL MPI OMP DUMPSTATE STANDARDDIRS"  gm_s2="FC IEEE USE_R4 TS PAPIS PCLS PAPI PCL HPMT GSL DEVEL MPI OMP DUMPSTATE STANDARDDIRS"
1151    
1152  #  The following state is not directly set by command-line switches  #  The following state is not directly set by command-line switches
1153  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPEND PDEPEND PDEFAULT INCLUDES FFLAGS FOPTIM FEXTRAFLAGS"  gm_s3="LN S64 LINK MAKE PACKAGES INCLUDES FFLAGS FOPTIM FEXTRAFLAGS"
1154  gm_s4="CFLAGS KFLAGS1 KFLAGS2 LIBS KPPFILES NOOPTFILES NOOPTFLAGS"  gm_s4="CFLAGS LIBS KPP KFLAGS1 KFLAGS2 KPPFILES NOOPTFILES NOOPTFLAGS"
1155  gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD MAKE THISHOST THISUSER THISDATE THISVER MACHINE"  gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD THISHOST THISUSER THISDATE THISVER MACHINE"
1156  gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF"  gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF"
1157  gm_s7="HAVE_SYSTEM HAVE_FDATE FC_NAMEMANGLE HAVE_ETIME"  gm_s7="FC_NAMEMANGLE HAVE_NETCDF HAVE_SYSTEM HAVE_FDATE HAVE_ETIME"
1158    
1159  #  The following are all related to adjoint/tangent-linear stuff  #  The following are all related to adjoint/tangent-linear stuff
1160  gm_s10="AUTODIFF_PKG_USED AD_OPTFILE TAMC TAF AD_TAMC_FLAGS AD_TAF_FLAGS"  gm_s10="AUTODIFF_PKG_USED AD_OPTFILE TAMC TAF AD_TAMC_FLAGS AD_TAF_FLAGS"
# Line 1162  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:
1180    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"
1184  printf "  getting local config information:  "  printf "  getting local config information:  "
# Line 1215  for ac_option in "$@" ; do Line 1225  for ac_option in "$@" ; do
1225              AD_OPTFILE=$ac_optarg ;;              AD_OPTFILE=$ac_optarg ;;
1226                    
1227          -pdepend | --pdepend)          -pdepend | --pdepend)
1228              ac_prev=PDEPEND ;;              ac_prev=PKG_DEPEND ;;
1229          -pdepend=* | --pdepend=*)          -pdepend=* | --pdepend=*)
1230              PDEPEND=$ac_optarg ;;              PKG_DEPEND=$ac_optarg ;;
1231                    
1232          -pdefault | --pdefault)          -pgroups | --pgroups)
1233              ac_prev=PDEFAULT ;;              ac_prev=PKG_GROUPS ;;
1234          -pdefault=* | --pdefault=*)          -pgroups=* | --pgroups=*)
1235              PDEFAULT=$ac_optarg ;;              PKG_GROUPS=$ac_optarg ;;
1236                    
1237          -make | --make | -m | --m)          -make | --make | -m | --m)
1238              ac_prev=MAKE ;;              ac_prev=MAKE ;;
# Line 1449  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 1476  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 1913  for pdir in exch2 regrid ; do Line 1923  for pdir in exch2 regrid ; do
1923  done  done
1924    
1925  printf "\n===  Determining package settings  ===\n"  printf "\n===  Determining package settings  ===\n"
1926  if  test "x${PDEPEND}" = x ; then  if  test "x${PKG_DEPEND}" = x ; then
1927      tmp=$ROOTDIR"/pkg/pkg_depend"      tmp=$ROOTDIR"/pkg/pkg_depend"
1928      if test -r $tmp ; then      if test -r $tmp ; then PKG_DEPEND=$tmp ; fi
1929          PDEPEND=$tmp  fi
1930      else  if  test "x${PKG_DEPEND}" = x ; then
1931          echo "Warning:  No package dependency information was specified."          echo "Warning:  No package dependency information was specified."
1932          echo "  Please check that ROOTDIR/pkg/pkg_depend exists."          echo "  Please check that ROOTDIR/pkg/pkg_depend exists."
1933    else
1934        if test ! -r ${PKG_DEPEND} ; then
1935            echo "Error:  can't read package dependency info from PKG_DEPEND=\"$PKG_DEPEND\""
1936            exit 1
1937      fi      fi
1938        echo "  getting package dependency info from  $PKG_DEPEND"
1939    #  Strip the comments and then convert the dependency file into arrays: PNAME, DNAME
1940        get_pdepend_list $PKG_DEPEND
1941    fi
1942    
1943    # A default package groups file "$ROOTDIR/pkg/pkg_groups" is provided
1944    #  to define the "default_pkg_list" and package groups (for convenience, one
1945    #  can specify a group of packages using names like "ocean" and "atmosphere").
1946    if test "x${PKG_GROUPS}" = x ; then
1947        tmp=$ROOTDIR"/pkg/pkg_groups"
1948        if test -r $tmp ; then PKG_GROUPS=$tmp ; fi
1949    fi
1950    if test "x${PKG_GROUPS}" = x ; then
1951            echo "Warning:  No package groups information was specified."
1952            echo "  Please check that ROOTDIR/pkg/pkg_groups exists."
1953  else  else
1954      if test ! -r ${PDEPEND} ; then      if test ! -r ${PKG_GROUPS} ; then
1955          echo "Error:  can't read package dependency info from PDEPEND=\"$PDEPEND\""          echo "Error:  can't read package groups info from PKG_GROUPS=\"$PKG_GROUPS\""
1956          exit 1          exit 1
1957      fi      fi
1958        echo "  getting package groups info from      $PKG_GROUPS"
1959  fi  fi
1960  echo "  getting package dependency info from  $PDEPEND"  
1961  #  Strip the comments and then convert the dependency file into  #  Search for packages to compile.
1962  #  two arrays: PNAME, DNAME  echo "  checking list of packages to compile:"
1963  get_pdepend_list $PDEPEND  PKG_LIST=
1964    if test "x${PKG_LIST}" = x ; then
 #  Search for default packages.  Note that a "$ROOTDIR/pkg/pkg_groups"  
 #  file has been added so that, for convenience, one can specify  
 #  groups of packages using names like "ocean" and "atmosphere".  
 echo "  checking default package list:  "  
 if test "x${PDEFAULT}" = x ; then  
1965      for i in "." $MODS ; do      for i in "." $MODS ; do
1966          if test -r $i"/packages.conf" ; then          if test -r $i"/packages.conf" ; then
1967                  PDEFAULT=$i"/packages.conf"                  PKG_LIST=$i"/packages.conf"
1968                  break                  break
1969          fi          fi
1970      done      done
1971  fi  fi
1972  if test "x${PDEFAULT}" = x ; then  if test "x${PKG_LIST}" = x ; then
1973      PDEFAULT="$ROOTDIR/pkg/pkg_default"      pkg_list='default_pkg_list'
1974  fi      if test "x${PKG_GROUPS}" = x ; then
1975  if test "x${PDEFAULT}" = xNONE ; then          echo "Error:  need package groups info to expand pkg_list=\"$pkg_list\""
1976      echo "    default packages file disabled"          exit 1
1977        fi
1978  else  else
1979      if test ! -r $PDEFAULT ; then      if test ! -r $PKG_LIST ; then
1980          echo "Warning:  can't read default packages from PDEFAULT=\"$PDEFAULT\""          echo "Error:  can't read package list from PKG_LIST=\"$PKG_LIST\""
1981            exit 1
1982      else      else
1983          echo "    using PDEFAULT=\"$PDEFAULT\""          echo "    using PKG_LIST=\"$PKG_LIST\""
1984          #  Strip the comments and add all the names          #  Strip the comments and add all the names
1985          def=`cat $PDEFAULT | sed -e 's/#.*$//g' | $AWK '(NF>0){print $0}'`          pkg_list=`cat $PKG_LIST | sed -e 's/#.*$//g' | $AWK '(NF>0){print $0}'`
1986          RETVAL=$?          RETVAL=$?
1987          if test "x${RETVAL}" != x0 ; then          if test "x${RETVAL}" != x0 ; then
1988              printf "Error: can't parse default package list "              printf "Error: can't parse package list "
1989              echo "-- please check PDEFAULT=\"$PDEFAULT\""              echo "-- please check PKG_LIST=\"$PKG_LIST\""
1990              exit 1              exit 1
1991          fi          fi
         for i in $def ; do  
             PACKAGES="$PACKAGES $i"  
         done  
         echo "    before group expansion packages are:$PACKAGES"  
         RET=1  
         while test $RET = 1 ; do expand_pkg_groups; RET=$?; done  
         echo "    after group expansion packages are: $PACKAGES"  
1992      fi      fi
1993  fi  fi
1994    for i in $pkg_list ; do
1995        PACKAGES="$PACKAGES $i"
1996    done
1997    echo     "    before group expansion packages are:$PACKAGES"
1998    if test "x${PKG_GROUPS}" != x ; then
1999        RET=1
2000        while test $RET = 1 ; do expand_pkg_groups; RET=$?; done
2001        echo "    after group expansion packages are: $PACKAGES"
2002    fi
2003    
2004  echo "  applying DISABLE settings"  echo "  applying DISABLE settings"
2005  echo "" > ./.tmp_pack  echo "" > ./.tmp_pack
# Line 2001  PACKAGES="$PACKAGES $ENABLE" Line 2030  PACKAGES="$PACKAGES $ENABLE"
2030  for i in $PACKAGES ; do  for i in $PACKAGES ; do
2031      j=`echo $i | sed 's/[-+]//'`      j=`echo $i | sed 's/[-+]//'`
2032      if test ! -d "$ROOTDIR/pkg/$j" ; then      if test ! -d "$ROOTDIR/pkg/$j" ; then
2033          echo "Error: can't find package $i at \"$ROOTDIR/pkg/$i\""          echo "Error: dir '$ROOTDIR/pkg/$i' missing for package '$i'"
2034          exit 1          exit 1
2035      fi      fi
2036      echo $i >> ./.tmp_pack      echo $i >> ./.tmp_pack
# Line 2020  mnc_in=$? Line 2049  mnc_in=$?
2049  if test "x$HAVE_NETCDF" != xt ; then  if test "x$HAVE_NETCDF" != xt ; then
2050      if test "x$mnc_in" = x0 ; then      if test "x$mnc_in" = x0 ; then
2051          cat <<EOF          cat <<EOF
   
2052  *********************************************************************  *********************************************************************
2053  WARNING: the "mnc" package was enabled but tests failed to compile  WARNING: the "mnc" package was enabled but tests failed to compile
2054    NetCDF applications.  Please check that:    NetCDF applications.  Please check that:
# Line 2031  WARNING: the "mnc" package was enabled b Line 2059  WARNING: the "mnc" package was enabled b
2059    
2060    Due to this failure, the "mnc" package is now DISABLED.    Due to this failure, the "mnc" package is now DISABLED.
2061  *********************************************************************  *********************************************************************
   
2062  EOF  EOF
2063          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`
2064          DISABLE="$DISABLE mnc"          DISABLE="$DISABLE mnc"
# Line 2063  if test "x$HAVE_NETCDF" != xt ; then Line 2090  if test "x$HAVE_NETCDF" != xt ; then
2090      RETVAL=$?      RETVAL=$?
2091      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
2092          cat <<EOF          cat <<EOF
   
2093  *********************************************************************  *********************************************************************
2094  WARNING: the "profiles" package was enabled but tests failed to  WARNING: the "profiles" package was enabled but tests failed to
2095    compile NetCDF applications.  Please check that:    compile NetCDF applications.  Please check that:
# Line 2074  WARNING: the "profiles" package was enab Line 2100  WARNING: the "profiles" package was enab
2100    
2101    Due to this failure, the "profiles" package is now DISABLED.    Due to this failure, the "profiles" package is now DISABLED.
2102  *********************************************************************  *********************************************************************
   
2103  EOF  EOF
2104          PACKAGES=`echo $PACKAGES | sed -e 's/profiles//g'`          PACKAGES=`echo $PACKAGES | sed -e 's/profiles//g'`
2105          DISABLE="$DISABLE profiles"          DISABLE="$DISABLE profiles"
# Line 2084  EOF Line 2109  EOF
2109      fi      fi
2110  fi  fi
2111    
2112  echo "  applying package dependency rules"  if  test "x${PKG_DEPEND}" != x ; then
2113  ck=    echo "  applying package dependency rules"
2114  while test "x$ck" != xtt ; do    ck=
2115      while test "x$ck" != xtt ; do
2116      i=0      i=0
2117      # rtot=${#PNAME[@]}      # rtot=${#PNAME[@]}
2118      rtot=$nname      rtot=$nname
# Line 2157  while test "x$ck" != xtt ; do Line 2183  while test "x$ck" != xtt ; do
2183          #i=$(( $i + 1 ))          #i=$(( $i + 1 ))
2184      done      done
2185      ck=$ck"t"      ck=$ck"t"
2186  done    done
2187  echo "    packages are: $PACKAGES"    echo "    packages are: $PACKAGES"
2188    fi
2189  for i in $PACKAGES ; do  for i in $PACKAGES ; do
2190      adr="$ROOTDIR/pkg/$i"      adr="$ROOTDIR/pkg/$i"
2191      if test -d $adr ; then      if test -d $adr ; then
# Line 2671  output.txt: \$(EXECUTABLE) Line 2698  output.txt: \$(EXECUTABLE)
2698          @printf 'running ... '          @printf 'running ... '
2699          @\$(EXECUTABLE) > \$@          @\$(EXECUTABLE) > \$@
2700    
2701    # remove most of the files that "make" generates
2702  clean:  clean:
2703          -rm -rf *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template          -rm -rf *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template
2704          -rm -rf *.o          -rm -rf *.o
2705          -rm -rf *.$FS *.flowdir          -rm -rf *.$FS *.flowdir
2706          -rm -rf *.f$FS90 \$(AD_CLEAN) ad_input*          -rm -rf *.f$FS90 \$(AD_CLEAN) ad_input*
2707    
2708    # remove most of the files that "make" and "make depend" generate
2709  Clean:  Clean:
2710          @make clean          @make clean
2711          @make cleanlinks          @make cleanlinks
2712          -rm -f \$(SPECIAL_FILES)          -rm -f \$(SPECIAL_FILES) f90mkdepend.log
         -rm -f genmake_state genmake_*optfile genmake_warnings genmake_errors  
         -rm -f make.log run.log f90mkdepend.log *.bak "$MAKEFILE.old"  
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)
2717    #         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
2721            -rm -f $LOGFILE genmake_state genmake_*optfile genmake.tr_log make.tr_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 {} \;
2725          -rm -f \$(EXECUTABLE) \$(EXE_AD) *.txt STD* *diagnostics.log datetime          -rm -f *.txt STD* *diagnostics.log datetime
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 3208  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.207  
changed lines
  Added in v.1.211

  ViewVC Help
Powered by ViewVC 1.1.22