/[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.25 by edhill, Thu Oct 30 13:22:42 2003 UTC revision 1.30 by edhill, Tue Nov 11 21:11:06 2003 UTC
# Line 313  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 358  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 653  Error: C pre-processor "$CPP" failed the Line 660  Error: C pre-processor "$CPP" failed the
660    
661    1) within the options file ("CPP=...") as specified by "-of=OPTFILE"    1) within the options file ("CPP=...") as specified by "-of=OPTFILE"
662    2) the "./genmake_local" file    2) the "./genmake_local" file
663      3) with the CPP environment variable
664    
665  EOF  EOF
666      exit 1      exit 1
# Line 663  if test "x$MAKEDEPEND" = x ; then Line 671  if test "x$MAKEDEPEND" = x ; then
671      MAKEDEPEND=makedepend      MAKEDEPEND=makedepend
672  fi  fi
673    
674    
675    printf "\n===  Checking system libraries  ===\n"
676    echo -n "  Do we have the system() command using $FC...  "
677    cat > genmake_tcomp.f <<EOF
678          program hello
679          call system('echo hi')
680          end
681    EOF
682    $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1
683    RETVAL=$?
684    if test "x$RETVAL" = x0 ; then
685        HAVE_SYSTEM=t
686        DEFINES="$DEFINES -DHAVE_SYSTEM"
687        echo "yes"
688    else
689        HAVE_SYSTEM=
690        echo "no"
691    fi
692    rm -f genmake_tcomp*
693    
694    echo -n "  Do we have the fdate() command using $FC...  "
695    cat > genmake_tcomp.f <<EOF
696          program hello
697          CHARACTER(128) string
698          string = ' '
699          call fdate( string )
700          print *, string
701          end
702    EOF
703    $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1
704    RETVAL=$?
705    if test "x$RETVAL" = x0 ; then
706        HAVE_FDATE=t
707        DEFINES="$DEFINES -DHAVE_FDATE"
708        echo "yes"
709    else
710        HAVE_FDATE=
711        echo "no"
712    fi
713    rm -f genmake_tcomp*
714    
715    echo -n "  The name mangling convention for $FC is...  "
716    if test "x$FC_NAMEMANGLE" = x ; then
717        FC_NAMEMANGLE="#define FC_NAMEMANGLE(X) X ## _"
718    fi
719    cat > genmake_tcomp.f <<EOF
720          subroutine tcall( string )
721          character*(*) string
722          call tsub( string )
723          end
724    EOF
725    $FC $FFLAGS $DEFINES -c genmake_tcomp.f > genmake_tcomp.log 2>&1
726    RETVAL=$?
727    if test "x$RETVAL" != x0 ; then
728        cat genmake_tcomp.log >> genmake_errors
729        echo
730        echo "WARNING: test compile fails -- please see \"genmake_errors\""
731        echo "WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'"
732        echo "WARNING: Please contact <MITgcm-support@mitgcm.org> if you need help here."
733    else
734        tcall=`nm genmake_tcomp.o | grep tcall | cut -d ' ' -f 3`
735        RETVAL=$?
736        if test "x$RETVAL" != x0 ; then
737            echo
738            echo "WARNING: The \"nm\" command failed."
739            echo "WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'"
740            echo "WARNING: Please contact <MITgcm-support@mitgcm.org> if you need help here."
741        else
742            t0=`echo $tcall | sed -e 's|_tcall|_ ## X|g'`
743            nmres=`echo $t0 | sed -e 's|tcall_|X ## _|g'`
744            FC_NAMEMANGLE="#define FC_NAMEMANGLE(X)  $nmres"
745            echo "'$FC_NAMEMANGLE'"
746        fi
747    fi
748    echo "$FC_NAMEMANGLE" > FC_NAMEMANGLE.h.template
749    cmp FC_NAMEMANGLE.h FC_NAMEMANGLE.h.template > /dev/null 2>&1
750    RETVAL=$?
751    if test "x$RETVAL" != x0 ; then
752        mv -f FC_NAMEMANGLE.h.template FC_NAMEMANGLE.h
753    fi
754    rm -f genmake_tcomp*
755    
756    
757  printf "\n===  Setting defaults  ===\n"  printf "\n===  Setting defaults  ===\n"
758  echo -n "  Adding MODS directories:  "  echo -n "  Adding MODS directories:  "
759  for d in $MODS ; do  for d in $MODS ; do
# Line 910  for i in $PACKAGES ; do Line 1001  for i in $PACKAGES ; do
1001      fi      fi
1002  done  done
1003    
 #  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  
1004    
1005  # Create a list of #define and #undef to enable/disable packages  # Create a list of #define and #undef to enable/disable packages
1006  PACKAGES_DOT_H=PACKAGES_CONFIG.h  PACKAGES_DOT_H=PACKAGES_CONFIG.h
# Line 961  for n in $names ; do Line 1034  for n in $names ; do
1034          if test "x$has_pack" = xf ; then          if test "x$has_pack" = xf ; then
1035              undef=`echo "ALLOW_$n" | $AWK '{print toupper($0)}'`              undef=`echo "ALLOW_$n" | $AWK '{print toupper($0)}'`
1036              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!!!  
   
1037          fi          fi
1038      fi      fi
1039  done  done
# Line 1370  adall: ad_taf Line 1427  adall: ad_taf
1427  adtaf: ad_taf_output.f  adtaf: ad_taf_output.f
1428  adtamc: ad_tamc_output.f  adtamc: ad_tamc_output.f
1429    
1430  ad_input_code.f: \$(SRCFILES) \$(HEADERFILES)  ad_input_code.f: \$(AD_FILES) \$(HEADERFILES)
1431          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
1432          @make \$(F77FILES)          @make \$(F77FILES)
1433          @make \$(AD_FLOW_FILES)          @make \$(AD_FLOW_FILES)
# Line 1396  ftlall: ftl_taf Line 1453  ftlall: ftl_taf
1453  ftltaf: ftl_taf_output.f  ftltaf: ftl_taf_output.f
1454  ftltamc: ftl_tamc_output.f  ftltamc: ftl_tamc_output.f
1455    
1456  ftl_input_code.f: \$(SRCFILES)  ftl_input_code.f: \$(AD_FILES) \$(HEADERFILES)
1457          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
1458          @make \$(F77FILES)          @make \$(F77FILES)
1459          @make \$(AD_FLOW_FILES)          @make \$(AD_FLOW_FILES)

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.30

  ViewVC Help
Powered by ViewVC 1.1.22