/[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.22 by edhill, Thu Oct 23 04:41:41 2003 UTC revision 1.29 by edhill, Tue Nov 11 20:38:27 2003 UTC
# Line 72  find_possible_configs()  { Line 72  find_possible_configs()  {
72    
73      tmp1=`uname`"_"`uname -m`      tmp1=`uname`"_"`uname -m`
74      tmp2=`echo $tmp1 | sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`      tmp2=`echo $tmp1 | sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
75      PLATFORM=`echo $tmp2 | sed -e 's/i[3-6]86/ia32/' | sed -e 's/athlon/ia32/'`      tmp3=`echo $tmp2 | sed -e 's/power macintosh/ppc/'`
76        PLATFORM=`echo $tmp3 | sed -e 's/i[3-6]86/ia32/' | sed -e 's/athlon/ia32/'`
77      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`
78      echo "  The platform appears to be:  $PLATFORM"      echo "  The platform appears to be:  $PLATFORM"
79  #     if test "x$OFLIST" = x ; then  #     if test "x$OFLIST" = x ; then
# Line 104  find_possible_configs()  { Line 105  find_possible_configs()  {
105      fi      fi
106    
107      # look for possible fortran compilers      # look for possible fortran compilers
108      tmp="$MITGCM_FC $FC g77 f77 pgf77 pgf95 ifc f90 f95 mpif77 mpf77 mpxlf95"      tmp="$MITGCM_FC $FC efc g77 f77 pgf77 pgf95 ifc f90 f95 mpif77 mpf77 mpxlf95"
109      p_FC=      p_FC=
110      for c in $tmp ; do      for c in $tmp ; do
111          rm -f ./hello.f ./hello          rm -f ./hello.f ./hello
# Line 312  KPPFILES= Line 313  KPPFILES=
313  NOOPTFILES=  NOOPTFILES=
314  NOOPTFLAGS=  NOOPTFLAGS=
315    
316    # DEFINES checked by test compilation
317    HAVE_SYSTEM=
318    HAVE_FDATE=
319    FC_NAMEMANGLE=
320    
321  MODS=  MODS=
322  TOOLSDIR=  TOOLSDIR=
323  SOURCEDIRS=  SOURCEDIRS=
# Line 357  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPE Line 363  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPE
363  gm_s4="CFLAGS KFLAGS1 KFLAGS2 LIBS KPPFILES NOOPTFILES NOOPTFLAGS"  gm_s4="CFLAGS KFLAGS1 KFLAGS2 LIBS KPPFILES NOOPTFILES NOOPTFLAGS"
364  gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD MAKE THISHOSTNAME THISDATE MACHINE"  gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD MAKE THISHOSTNAME THISDATE MACHINE"
365  gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF"  gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF"
366    gm_s7="HAVE_SYSTEM HAVE_FDATE FC_NAMEMANGLE"
367    
368  #  The following are all related to adjoint/tangent-linear stuff  #  The following are all related to adjoint/tangent-linear stuff
369  gm_s7="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"
370  gm_s8="FTL_TAMC_FLAGS FTL_TAF_FLAGS SVD_TAMC_FLAGS SVD_TAF_FLAGS"  gm_s11="FTL_TAMC_FLAGS FTL_TAF_FLAGS SVD_TAMC_FLAGS SVD_TAF_FLAGS"
371  gm_s9="TAF_EXTRA TAMC_EXTRA"  gm_s12="TAF_EXTRA TAMC_EXTRA"
372    
373  gm_state="COMMANDL $gm_s1 $gm_s2 $gm_s3 $gm_s4 $gm_s5 $gm_s6 $gm_s7 $gm_s8 $gm_s9"  gm_state="COMMANDL $gm_s1 $gm_s2 $gm_s3 $gm_s4 $gm_s5 $gm_s6 $gm_s7"
374    gm_state="$gm_state $gm_s10 $gm_s11 $gm_s12"
375    
376    
377  echo  echo
# Line 662  if test "x$MAKEDEPEND" = x ; then Line 670  if test "x$MAKEDEPEND" = x ; then
670      MAKEDEPEND=makedepend      MAKEDEPEND=makedepend
671  fi  fi
672    
673    
674    printf "\n===  Checking system libraries  ===\n"
675    echo -n "  Do we have the system() command using $FC...  "
676    cat > genmake_tcomp.f <<EOF
677          program hello
678          call system('echo hi')
679          end
680    EOF
681    $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1
682    RETVAL=$?
683    if test "x$RETVAL" = x0 ; then
684        HAVE_SYSTEM=t
685        DEFINES="$DEFINES -DHAVE_SYSTEM"
686        echo "yes"
687    else
688        HAVE_SYSTEM=
689        echo "no"
690    fi
691    rm -f genmake_tcomp*
692    
693    echo -n "  Do we have the fdate() command using $FC...  "
694    cat > genmake_tcomp.f <<EOF
695          program hello
696          CHARACTER(128) string
697          string = ' '
698          call fdate( string )
699          print *, string
700          end
701    EOF
702    $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1
703    RETVAL=$?
704    if test "x$RETVAL" = x0 ; then
705        HAVE_FDATE=t
706        DEFINES="$DEFINES -DHAVE_FDATE"
707        echo "yes"
708    else
709        HAVE_FDATE=
710        echo "no"
711    fi
712    rm -f genmake_tcomp*
713    
714    echo -n "  The name mangling convention for $FC is...  "
715    if test "x$FC_NAMEMANGLE" = x ; then
716        FC_NAMEMANGLE="#define FC_NAMEMANGLE(X) X ## _"
717    fi
718    cat > genmake_tcomp.f <<EOF
719          subroutine tcall( string )
720          character*(*) string
721          call tsub( string )
722          end
723    EOF
724    $FC $FFLAGS $DEFINES -c genmake_tcomp.f > genmake_tcomp.log 2>&1
725    RETVAL=$?
726    if test "x$RETVAL" != x0 ; then
727        cat genmake_tcomp.log >> genmake_errors
728        echo
729        echo "WARNING: test compile fails -- please see \"genmake_errors\""
730        echo "WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'"
731        echo "WARNING: Please contact <MITgcm-support@mitgcm.org> if you need help here."
732    else
733        tcall=`nm genmake_tcomp.o | grep tcall | cut -d ' ' -f 3`
734        RETVAL=$?
735        if test "x$RETVAL" != x0 ; then
736            echo
737            echo "WARNING: The \"nm\" command failed."
738            echo "WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'"
739            echo "WARNING: Please contact <MITgcm-support@mitgcm.org> if you need help here."
740        else
741            t0=`echo $tcall | sed -e 's|_tcall|_ ## X|g'`
742            nmres=`echo $t0 | sed -e 's|tcall_|X ## _|g'`
743            FC_NAMEMANGLE="#define FC_NAMEMANGLE(X)  $nmres"
744            echo "'$FC_NAMEMANGLE'"
745        fi
746    fi
747    echo "$FC_NAMEMANGLE" > FC_NAMEMANGLE.h.template
748    cmp FC_NAMEMANGLE.h FC_NAMEMANGLE.h.template > /dev/null 2>&1
749    RETVAL=$?
750    if test "x$RETVAL" != x0 ; then
751        mv -f FC_NAMEMANGLE.h.template FC_NAMEMANGLE.h
752    fi
753    rm -f genmake_tcomp*
754    
755    
756  printf "\n===  Setting defaults  ===\n"  printf "\n===  Setting defaults  ===\n"
757  echo -n "  Adding MODS directories:  "  echo -n "  Adding MODS directories:  "
758  for d in $MODS ; do  for d in $MODS ; do
# Line 909  for i in $PACKAGES ; do Line 1000  for i in $PACKAGES ; do
1000      fi      fi
1001  done  done
1002    
 #  This is compatible with the old genmake.  The "DISABLE_*" flags  
 #  need to be replaced by the "ALLOW_*" flags set below.  
 #  
 # echo -n "  Setting package-specific CPP flags:  "  
 # pkrm=( mom_fluxform mom_vecinv generic_advdiff )  
 # pkrmdef=( -DDISABLE_MOM_FLUXFORM -DDISABLE_MOM_VECINV -DDISABLE_GENERIC_ADVDIFF -DDISABLE_DEBUGMODE )  
 # echo -n "  "  
 # i=0  
 # while test $i -lt "${#pkrm[@]}" ; do  
 #     echo "$PACKAGES" | grep "${pk[$i]}" > /dev/null 2>&1  
 #     RETVAL=$?  
 #     if test "x$RETVAL" = x1 ; then  
 #       DEFINES="$DEFINES ${pkdef[$i]}"  
 #       echo -n " ${pkdef[$i]}"  
 #     fi  
 #     i=$(( $i + 1 ))  
 # done  
 # echo  
1003    
1004  # Create a list of #define and #undef to enable/disable packages  # Create a list of #define and #undef to enable/disable packages
1005  PACKAGES_DOT_H=PACKAGES_CONFIG.h  PACKAGES_DOT_H=PACKAGES_CONFIG.h
# Line 960  for n in $names ; do Line 1033  for n in $names ; do
1033          if test "x$has_pack" = xf ; then          if test "x$has_pack" = xf ; then
1034              undef=`echo "ALLOW_$n" | $AWK '{print toupper($0)}'`              undef=`echo "ALLOW_$n" | $AWK '{print toupper($0)}'`
1035              echo "#undef $undef" >> $PACKAGES_DOT_H".tmp"              echo "#undef $undef" >> $PACKAGES_DOT_H".tmp"
 #           DEFINES="$DEFINES -U$undef"  
   
 #EH3  WARNING :  This is an UGLY HACK that needs to be removed!!!  
             case $n in  
                 mom_fluxform)  
                     DEFINES="$DEFINES -DDISABLE_MOM_FLUXFORM"  
                     ;;  
                 mom_vecinv)  
                     DEFINES="$DEFINES -DDISABLE_MOM_VECINV"  
                     ;;  
                 debug)  
                     DEFINES="$DEFINES -DDISABLE_DEBUGMODE"  
                     ;;  
             esac  
 #EH3  WARNING :  This is an UGLY HACK that needs to be removed!!!  
   
1036          fi          fi
1037      fi      fi
1038  done  done
# Line 1364  rm -f ad_files Line 1421  rm -f ad_files
1421    
1422  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
1423    
 AD_CONFIG.h:  
         cat AD_CONFIG.template > AD_CONFIG.h  
   
1424  # ... AD ...  # ... AD ...
1425  ad: ad_taf  adall: ad_taf
1426  ad_taf_f: ad_taf_output.f  adtaf: ad_taf_output.f
1427  ad_tamc_f: ad_tamc_output.f  adtamc: ad_tamc_output.f
1428    
1429  ad_input_code.f: \$(SRCFILES)  ad_input_code.f: \$(AD_FILES) \$(HEADERFILES)
1430          cat ad_config.template > AD_CONFIG.h          cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
1431          @make \$(F77FILES)          @make \$(F77FILES)
1432          @make \$(AD_FLOW_FILES)          @make \$(AD_FLOW_FILES)
1433          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ad_input_code.f          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ad_input_code.f
# Line 1394  ad_tamc: ad_tamc_output.o \$(OBJFILES) Line 1448  ad_tamc: ad_tamc_output.o \$(OBJFILES)
1448    
1449    
1450  # ... FTL ...  # ... FTL ...
1451  ftl: ftl_taf  ftlall: ftl_taf
1452  ftl_taf_f: ftl_taf_output.f  ftltaf: ftl_taf_output.f
1453  ftl_tamc_f: ftl_tamc_output.f  ftltamc: ftl_tamc_output.f
1454    
1455  ftl_input_code.f: \$(SRCFILES)  ftl_input_code.f: \$(AD_FILES) \$(HEADERFILES)
1456          cat ftl_config.template > AD_CONFIG.h          cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h
1457            @make \$(F77FILES)
1458          @make \$(AD_FLOW_FILES)          @make \$(AD_FLOW_FILES)
1459          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.f          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.f
1460    
# Line 1423  svd: svd_taf Line 1478  svd: svd_taf
1478  svd_taf_f: svd_taf_output.f  svd_taf_f: svd_taf_output.f
1479    
1480  svd_input_code.f: \$(SRCFILES)  svd_input_code.f: \$(SRCFILES)
1481          cat svd_config.template > AD_CONFIG.h          cmp svd_config.template AD_CONFIG.h || cat svd_config.template > AD_CONFIG.h
1482            @make \$(F77FILES)
1483          @make \$(AD_FLOW_FILES)          @make \$(AD_FLOW_FILES)
1484          cat \$(AD_FLOW_FILES) \$(AD_FILES) > svd_input_code.f          cat \$(AD_FLOW_FILES) \$(AD_FILES) > svd_input_code.f
1485    
# Line 1474  printf "\n\n# DO NOT DELETE\n" >> $MAKEF Line 1530  printf "\n\n# DO NOT DELETE\n" >> $MAKEF
1530  printf "\n===  Done  ===\n"  printf "\n===  Done  ===\n"
1531    
1532  #  Write the "template" files for the adjoint builds  #  Write the "template" files for the adjoint builds
1533  cat >>AD_CONFIG.template <<EOF  cat >AD_CONFIG.template <<EOF
1534  C  WARNING: This file is automatically generated by genmake2 and  C  WARNING: This file is automatically generated by genmake2 and
1535  C    used by the Makefile rules.  Please DO NOT EDIT this file  C    used by the Makefile rules.  Please DO NOT EDIT this file
1536  C    unless you are CERTAIN that you know what you're doing.  C    unless you are CERTAIN that you know what you are doing.
1537    
1538  #undef ALLOW_ADJOINT_RUN  #undef ALLOW_ADJOINT_RUN
1539  #undef ALLOW_TANGENTLINEAR_RUN  #undef ALLOW_TANGENTLINEAR_RUN
1540  #undef ALLOW_ECCO_OPTIMIZATION  #undef ALLOW_ECCO_OPTIMIZATION
1541  EOF  EOF
1542  cat >>ad_config.template <<EOF  cat >ad_config.template <<EOF
1543  C  WARNING: This file is automatically generated by genmake2 and  C  WARNING: This file is automatically generated by genmake2 and
1544  C    used by the Makefile rules.  Please DO NOT EDIT this file  C    used by the Makefile rules.  Please DO NOT EDIT this file
1545  C    unless you are CERTAIN that you know what you're doing.  C    unless you are CERTAIN that you know what you are doing.
1546    
1547  #undef ALLOW_ADJOINT_RUN  #define ALLOW_ADJOINT_RUN
1548  #undef ALLOW_TANGENTLINEAR_RUN  #undef ALLOW_TANGENTLINEAR_RUN
1549  #undef ALLOW_ECCO_OPTIMIZATION  #undef ALLOW_ECCO_OPTIMIZATION
1550  EOF  EOF
1551  cat >>ftl_config.template <<EOF  cat >ftl_config.template <<EOF
1552  C  WARNING: This file is automatically generated by genmake2 and  C  WARNING: This file is automatically generated by genmake2 and
1553  C    used by the Makefile rules.  Please DO NOT EDIT this file  C    used by the Makefile rules.  Please DO NOT EDIT this file
1554  C    unless you are CERTAIN that you know what you're doing.  C    unless you are CERTAIN that you know what you are doing.
1555    
1556  #undef ALLOW_ADJOINT_RUN  #undef ALLOW_ADJOINT_RUN
1557  #undef ALLOW_TANGENTLINEAR_RUN  #define ALLOW_TANGENTLINEAR_RUN
1558  #undef ALLOW_ECCO_OPTIMIZATION  #undef ALLOW_ECCO_OPTIMIZATION
1559  EOF  EOF
1560  cat >>svd_config.template <<EOF  cat >svd_config.template <<EOF
1561  C  WARNING: This file is automatically generated by genmake2 and  C  WARNING: This file is automatically generated by genmake2 and
1562  C    used by the Makefile rules.  Please DO NOT EDIT this file  C    used by the Makefile rules.  Please DO NOT EDIT this file
1563  C    unless you are CERTAIN that you know what you're doing.  C    unless you are CERTAIN that you know what you are doing.
1564    
1565  #undef ALLOW_ADJOINT_RUN  #undef ALLOW_ADJOINT_RUN
1566  #undef ALLOW_TANGENTLINEAR_RUN  #undef ALLOW_TANGENTLINEAR_RUN

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.29

  ViewVC Help
Powered by ViewVC 1.1.22