/[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.205 by jmc, Sun May 23 03:45:58 2010 UTC revision 1.206 by jmc, Sun May 23 18:34:43 2010 UTC
# Line 110  EOF Line 110  EOF
110              check_for_broken_Ff              check_for_broken_Ff
111          else          else
112              cat <<EOF 2>&1              cat <<EOF 2>&1
113  ERROR: Your file system cannot distinguish between *.F and *.f files  ERROR: Your file system cannot distinguish between *.F and *.f files
114    (fails the "cp" test) and this program cannot find a suitable    (fails the "cp" test) and this program cannot find a suitable
115    replacement extension.  Please try a different build environment or    replacement extension.  Please try a different build environment or
116    contact the <MITgcm-support@mitgcm.org> list for help.    contact the <MITgcm-support@mitgcm.org> list for help.
117    
118  EOF  EOF
# Line 146  EOF Line 146  EOF
146              check_for_broken_Ff              check_for_broken_Ff
147          else          else
148              cat <<EOF 2>&1              cat <<EOF 2>&1
149  ERROR: Your file system cannot distinguish between *.F and *.f files  ERROR: Your file system cannot distinguish between *.F and *.f files
150    (fails the "make/ln" test) and this program cannot find a suitable    (fails the "make/ln" test) and this program cannot find a suitable
151    replacement extension.  Please try a different build environment or    replacement extension.  Please try a different build environment or
152    contact the <MITgcm-support@mitgcm.org> list for help.    contact the <MITgcm-support@mitgcm.org> list for help.
153    
154  EOF  EOF
# Line 194  look_for_makedepend()  { Line 194  look_for_makedepend()  {
194          cat <<EOF >> $MAKEFILE          cat <<EOF >> $MAKEFILE
195  #   THIS IS A TEST MAKEFILE GENERATED BY "genmake2"  #   THIS IS A TEST MAKEFILE GENERATED BY "genmake2"
196  #  #
197  #   Some "makedepend" implementations will die if they cannot  #   Some "makedepend" implementations will die if they cannot
198  #   find a Makefile -- so this file is here to gives them an  #   find a Makefile -- so this file is here to gives them an
199  #   empty one to find and parse.  #   empty one to find and parse.
200  EOF  EOF
201          cat <<EOF >> genmake_tc.f          cat <<EOF >> genmake_tc.f
# Line 212  EOF Line 212  EOF
212              MAKEDEPEND=makedepend              MAKEDEPEND=makedepend
213          else          else
214              echo "    a system-default makedepend was not found."              echo "    a system-default makedepend was not found."
215                
216              #  Try to build the cyrus implementation              #  Try to build the cyrus implementation
217              build_cyrus_makedepend              build_cyrus_makedepend
218              RETVAL=$?              RETVAL=$?
# Line 269  build_embed_encode() Line 269  build_embed_encode()
269              return 1              return 1
270          fi          fi
271          clist="cc gcc c89 $CC"          clist="cc gcc c89 $CC"
272          for ic in $clist ; do          for ic in $clist ; do
273              comm="$ic -o encode_files encode_files.c"              comm="$ic -o encode_files encode_files.c"
274              ( cd $ROOTDIR/tools/embed_encode && $comm ) > /dev/null 2>&1              ( cd $ROOTDIR/tools/embed_encode && $comm ) > /dev/null 2>&1
275              RETVAL=$?              RETVAL=$?
# Line 304  find_possible_configs()  { Line 304  find_possible_configs()  {
304      echo $PLATFORM | grep cygwin > /dev/null 2>&1  &&  PLATFORM=cygwin_ia32      echo $PLATFORM | grep cygwin > /dev/null 2>&1  &&  PLATFORM=cygwin_ia32
305      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`
306      echo "  The platform appears to be:  $PLATFORM"      echo "  The platform appears to be:  $PLATFORM"
307        
308      echo "test" > test      echo "test" > test
309      ln -s ./test link      ln -s ./test link
310      RETVAL=$?      RETVAL=$?
# Line 442  Error: No options file was found in:  $R Line 442  Error: No options file was found in:  $R
442  EOF  EOF
443          exit 1          exit 1
444      fi      fi
445        
446  #     # look for possible MPI libraries  #     # look for possible MPI libraries
447  #     mpi_libs=  #     mpi_libs=
448  #     mpi_fort=`which mpif77 2>/dev/null`  #     mpi_fort=`which mpif77 2>/dev/null`
# Line 461  EOF Line 461  EOF
461  #       if test "x${RETVAL}" = x0 ; then  #       if test "x${RETVAL}" = x0 ; then
462  #           a=`cat out`  #           a=`cat out`
463  #           for i in $a ; do  #           for i in $a ; do
464  #               case $i in  #               case $i in
465  #                   -*)  #                   -*)
466  #                       mpi_libs="$mpi_libs $i" ;;  #                       mpi_libs="$mpi_libs $i" ;;
467  #               esac  #               esac
# Line 512  Usage: "$0" [OPTIONS] Line 512  Usage: "$0" [OPTIONS]
512        -optfile NAME | --optfile NAME | -of NAME | --of NAME        -optfile NAME | --optfile NAME | -of NAME | --of NAME
513        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME
514            Use "NAME" as the optfile.  By default, an attempt will be            Use "NAME" as the optfile.  By default, an attempt will be
515            made to find an appropriate "standard" optfile in the            made to find an appropriate "standard" optfile in the
516            tools/build_options/ directory.            tools/build_options/ directory.
517    
518      -pdepend NAME | --pdepend NAME      -pdepend NAME | --pdepend NAME
# Line 528  Usage: "$0" [OPTIONS] Line 528  Usage: "$0" [OPTIONS]
528    
529      -make NAME | -m NAME      -make NAME | -m NAME
530        --make=NAME | -m=NAME        --make=NAME | -m=NAME
531            Use "NAME" for the MAKE program. The default is "make" but            Use "NAME" for the MAKE program. The default is "make" but
532            many platforms, "gmake" is the preferred choice.            many platforms, "gmake" is the preferred choice.
533    
534      -makefile NAME | -mf NAME      -makefile NAME | -mf NAME
# Line 542  Usage: "$0" [OPTIONS] Line 542  Usage: "$0" [OPTIONS]
542      -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME      -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME
543        -rootdir=NAME | --rootdir=NAME | -rd=NAME | --rd=NAME        -rootdir=NAME | --rootdir=NAME | -rd=NAME | --rd=NAME
544            Specify the location of the MITgcm ROOTDIR as "NAME".            Specify the location of the MITgcm ROOTDIR as "NAME".
545            By default, genamke will try to find the location by            By default, genamke will try to find the location by
546            looking in parent directories (up to the 5th parent).            looking in parent directories (up to the 5th parent).
547    
548      -mods NAME | --mods NAME | -mo NAME | --mo NAME      -mods NAME | --mods NAME | -mo NAME | --mo NAME
549        -mods=NAME | --mods=NAME | -mo=NAME | --mo=NAME        -mods=NAME | --mods=NAME | -mo=NAME | --mo=NAME
550            Here, "NAME" specifies a list of directories that are            Here, "NAME" specifies a list of directories that are
551            used for additional source code.  Files found in the            used for additional source code.  Files found in the
552            "mods list" are given preference over files of the same            "mods list" are given preference over files of the same
553            name found elsewhere.            name found elsewhere.
554    
555      -disable NAME | --disable NAME      -disable NAME | --disable NAME
556        -disable=NAME | --disable=NAME        -disable=NAME | --disable=NAME
557            Here "NAME" specifies a list of packages that we don't            Here "NAME" specifies a list of packages that we don't
558            want to use.  If this violates package dependencies,            want to use.  If this violates package dependencies,
559            genamke will exit with an error message.            genamke will exit with an error message.
560    
561      -enable NAME | --enable NAME      -enable NAME | --enable NAME
562        -enable=NAME | --enable=NAME        -enable=NAME | --enable=NAME
563            Here "NAME" specifies a list of packages that we wish            Here "NAME" specifies a list of packages that we wish
564            to specifically enable.  If this violates package            to specifically enable.  If this violates package
565            dependencies, genamke will exit with an error message.            dependencies, genamke will exit with an error message.
566    
567      -standarddirs NAME | --standarddirs NAME      -standarddirs NAME | --standarddirs NAME
568        -standarddirs=NAME | --standarddirs=NAME        -standarddirs=NAME | --standarddirs=NAME
569            Here, "NAME" specifies a list of directories to be            Here, "NAME" specifies a list of directories to be
570            used as the "standard" code.            used as the "standard" code.
571    
572      -fortran NAME | --fortran NAME | -fc NAME | --fc NAME      -fortran NAME | --fortran NAME | -fc NAME | --fc NAME
573        -fc=NAME | --fc=NAME        -fc=NAME | --fc=NAME
574            Use "NAME" as the fortran compiler.  By default, genmake            Use "NAME" as the fortran compiler.  By default, genmake
575            will search for a working compiler by trying a list of            will search for a working compiler by trying a list of
576            "usual suspects" such as g77, f77, etc.            "usual suspects" such as g77, f77, etc.
577    
578      -cc NAME | --cc NAME | -cc=NAME | --cc=NAME      -cc NAME | --cc NAME | -cc=NAME | --cc=NAME
579            Use "NAME" as the C compiler.  By default, genmake            Use "NAME" as the C compiler.  By default, genmake
580            will search for a working compiler by trying a list of            will search for a working compiler by trying a list of
581            "usual suspects" such as gcc, c89, cc, etc.            "usual suspects" such as gcc, c89, cc, etc.
582    
583      -[no]ieee | --[no]ieee      -[no]ieee | --[no]ieee
584            Do or don't use IEEE numerics.  Note that this option            Do or don't use IEEE numerics.  Note that this option
585            *only* works if it is supported by the OPTFILE that            *only* works if it is supported by the OPTFILE that
586            is being used.            is being used.
587    
588      -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4      -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4
# Line 591  Usage: "$0" [OPTIONS] Line 591  Usage: "$0" [OPTIONS]
591    
592      -ignoretime | -ignore_time | --ignoretime | --ignore_time      -ignoretime | -ignore_time | --ignoretime | --ignore_time
593            Ignore all the "wall clock" routines entirely.  This will            Ignore all the "wall clock" routines entirely.  This will
594            not in any way hurt the model results -- it simply means            not in any way hurt the model results -- it simply means
595            that the code that checks how long the model spends in            that the code that checks how long the model spends in
596            various routines will give junk values.            various routines will give junk values.
597    
598      -ts | --ts      -ts | --ts
# Line 628  Usage: "$0" [OPTIONS] Line 628  Usage: "$0" [OPTIONS]
628            Activate OpenMP code + use Compiler option OMPFLAG            Activate OpenMP code + use Compiler option OMPFLAG
629    
630      -es | --es | -embed-source | --embed-source      -es | --es | -embed-source | --embed-source
631            Embed a tarball containing the full source code            Embed a tarball containing the full source code
632            (including the Makefile, etc.) used to build the            (including the Makefile, etc.) used to build the
633            executable [off by default]            executable [off by default]
634    
635    While it is most often a single word, the "NAME" variables specified    While it is most often a single word, the "NAME" variables specified
636    above can in many cases be a space-delimited string such as:    above can in many cases be a space-delimited string such as:
637    
638      --enable pkg1   --enable 'pkg1 pkg2'   --enable 'pkg1 pkg2 pkg3'      --enable pkg1   --enable 'pkg1 pkg2'   --enable 'pkg1 pkg2 pkg3'
# Line 659  get_fortran_c_namemangling()  { Line 659  get_fortran_c_namemangling()  {
659      fi      fi
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
# Line 1194  for ac_option in "$@" ; do Line 1194  for ac_option in "$@" ; do
1194          ac_prev=          ac_prev=
1195          continue          continue
1196      fi      fi
1197        
1198      ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`      ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
1199        
1200      case $ac_option in      case $ac_option in
1201                    
1202          -help | --help | -h | --h)          -help | --help | -h | --h)
# Line 1372  for ac_option in "$@" ; do Line 1372  for ac_option in "$@" ; do
1372              ;;              ;;
1373                    
1374      esac      esac
1375        
1376  done  done
1377    
1378    
# Line 1384  if test -f ./.genmakerc ; then Line 1384  if test -f ./.genmakerc ; then
1384      echo "    http://mitgcm.org/devel_HOWTO/"      echo "    http://mitgcm.org/devel_HOWTO/"
1385      echo "  and send an email to MITgcm-support@mitgcm.org if you need help."      echo "  and send an email to MITgcm-support@mitgcm.org if you need help."
1386      echo "WARNING: ignore \"./.genmakerc\" and continue."      echo "WARNING: ignore \"./.genmakerc\" and continue."
1387      echo      echo
1388  fi  fi
1389    
1390  #  Find the MITgcm ${ROOTDIR}  #  Find the MITgcm ${ROOTDIR}
# Line 1853  ERROR: neither of the two default script Line 1853  ERROR: neither of the two default script
1853      ${TOOLSDIR}/set64bitConst.sh      ${TOOLSDIR}/set64bitConst.sh
1854      ${TOOLSDIR}/set64bitConst.csh      ${TOOLSDIR}/set64bitConst.csh
1855    
1856    are working so please check paths or specify (with \$S64) a    are working so please check paths or specify (with \$S64) a
1857    working version of this script.    working version of this script.
1858    
1859  EOF  EOF
# Line 1874  echo " $STANDARDDIRS " | grep ' model ' Line 1874  echo " $STANDARDDIRS " | grep ' model '
1874  ckM=$?  ckM=$?
1875  echo " $STANDARDDIRS " | grep ' eesupp ' > /dev/null 2>&1  echo " $STANDARDDIRS " | grep ' eesupp ' > /dev/null 2>&1
1876  ckE=$?  ckE=$?
1877  if test $ckM = 0 -a $ckE = 1 ; then  if test $ckM = 0 -a $ckE = 1 ; then
1878      STANDARDDIRS="$STANDARDDIRS eesupp"      STANDARDDIRS="$STANDARDDIRS eesupp"
1879  fi  fi
1880    
# Line 1931  echo "  getting package dependency info Line 1931  echo "  getting package dependency info
1931  get_pdepend_list $PDEPEND  get_pdepend_list $PDEPEND
1932    
1933  #  Search for default packages.  Note that a "$ROOTDIR/pkg/pkg_groups"  #  Search for default packages.  Note that a "$ROOTDIR/pkg/pkg_groups"
1934  #  file has been added so that, for convenience, one can specify  #  file has been added so that, for convenience, one can specify
1935  #  groups of packages using names like "ocean" and "atmosphere".  #  groups of packages using names like "ocean" and "atmosphere".
1936  echo "  checking default package list:  "  echo "  checking default package list:  "
1937  if test "x${PDEFAULT}" = x ; then  if test "x${PDEFAULT}" = x ; then
# Line 2011  done Line 2011  done
2011  rm -f ./.tmp_pack  rm -f ./.tmp_pack
2012  echo "    packages are: $PACKAGES"  echo "    packages are: $PACKAGES"
2013    
2014  #  Check for package MNC: if NetCDF is available, then build the MNC  #  Check for package MNC: if NetCDF is available, then build the MNC
2015  #  template files ; otherwise, delete mnc from the list of packages.  #  template files ; otherwise, delete mnc from the list of packages.
2016  echo " $PACKAGES " | grep ' mnc ' > /dev/null 2>&1  echo " $PACKAGES " | grep ' mnc ' > /dev/null 2>&1
2017  RETVAL=$?  mnc_in=$?
2018  if test "x$RETVAL" = x0 ; then  if test "x$HAVE_NETCDF" != xt ; then
2019      if test "x$HAVE_NETCDF" != xt ; then      if test "x$mnc_in" = x0 ; then
2020          cat <<EOF          cat <<EOF
2021    
2022  *********************************************************************  *********************************************************************
# Line 2024  WARNING: the "mnc" package was enabled b Line 2024  WARNING: the "mnc" package was enabled b
2024    NetCDF applications.  Please check that:    NetCDF applications.  Please check that:
2025    
2026    1) NetCDF is correctly installed for this compiler and    1) NetCDF is correctly installed for this compiler and
2027    2) the LIBS variable (within the "optfile") specifies the correct    2) the LIBS variable (within the "optfile") specifies the correct
2028         NetCDF library to link against.         NetCDF library to link against.
2029    
2030    Due to this failure, the "mnc" package is now DISABLED.    Due to this failure, the "mnc" package is now DISABLED.
# Line 2034  EOF Line 2034  EOF
2034          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`
2035          DISABLE="$DISABLE mnc"          DISABLE="$DISABLE mnc"
2036      else      else
2037          ( cd $ROOTDIR"/pkg/mnc" && $MAKE testclean && $MAKE templates ) > make_mnc.errors 2>&1      #  this prevent to add mnc (due to pdepend rules) if not available
2038          RETVAL=$?          DISABLE="$DISABLE mnc"
2039          if test "x${RETVAL}" = x0 ; then      fi
2040              rm -f make_mnc.errors  else
2041        # we have NetCDF, we try to build MNC template files
2042        ( cd $ROOTDIR"/pkg/mnc" && $MAKE testclean && $MAKE templates ) > make_mnc.errors 2>&1
2043        RETVAL=$?
2044        if test "x${RETVAL}" = x0 ; then
2045            rm -f make_mnc.errors
2046        else
2047            echo "Error: problem encountered while building source files in pkg/mnc:"
2048            cat make_mnc.errors 1>&2
2049            if test "x$mnc_in" = x0 ; then
2050                exit 1
2051          else          else
2052              echo "Error: problem encountered while building source files in pkg/mnc:"              DISABLE="$DISABLE mnc"
             cat make_mnc.errors 1>&2  
             exit 1  
2053          fi          fi
2054      fi      fi
2055  fi  fi
2056    
2057  #  Check for package PROFILES: if NetCDF is not available,  #  Check for package PROFILES: if NetCDF is not available,
2058  #  then delete profiles from the list of available packages.  #  then delete profiles from the list of available packages.
2059  echo " $PACKAGES " | grep ' profiles ' > /dev/null 2>&1  if test "x$HAVE_NETCDF" != xt ; then
2060  RETVAL=$?      echo " $PACKAGES " | grep ' profiles ' > /dev/null 2>&1
2061  if test "x$RETVAL" = x0 ; then      RETVAL=$?
2062      if test "x$HAVE_NETCDF" != xt ; then      if test "x$RETVAL" = x0 ; then
2063          cat <<EOF          cat <<EOF
2064    
2065  *********************************************************************  *********************************************************************
# Line 2059  WARNING: the "profiles" package was enab Line 2067  WARNING: the "profiles" package was enab
2067    compile NetCDF applications.  Please check that:    compile NetCDF applications.  Please check that:
2068    
2069    1) NetCDF is correctly installed for this compiler and    1) NetCDF is correctly installed for this compiler and
2070    2) the LIBS variable (within the "optfile") specifies the correct    2) the LIBS variable (within the "optfile") specifies the correct
2071         NetCDF library to link against.         NetCDF library to link against.
2072    
2073    Due to this failure, the "profiles" package is now DISABLED.    Due to this failure, the "profiles" package is now DISABLED.
# Line 2068  WARNING: the "profiles" package was enab Line 2076  WARNING: the "profiles" package was enab
2076  EOF  EOF
2077          PACKAGES=`echo $PACKAGES | sed -e 's/profiles//g'`          PACKAGES=`echo $PACKAGES | sed -e 's/profiles//g'`
2078          DISABLE="$DISABLE profiles"          DISABLE="$DISABLE profiles"
2079        else
2080        #  this prevent to add profiles (due to pdepend rules) if not available
2081            DISABLE="$DISABLE profiles"
2082      fi      fi
2083  fi  fi
2084    
# Line 2136  while test "x$ck" != xtt ; do Line 2147  while test "x$ck" != xtt ; do
2147          #  Do we need to get rid of $dname according to the dependency rules?          #  Do we need to get rid of $dname according to the dependency rules?
2148          if test "x$pin" = xt -a "x$plus" = "x-" -a "x$din" = xt; then          if test "x$pin" = xt -a "x$plus" = "x-" -a "x$din" = xt; then
2149              echo "Error: can't satisfy package dependencies:"              echo "Error: can't satisfy package dependencies:"
2150              echo "  \"$pname\" was requested but is disallowed by"              echo "  \"$pname\" was requested but is disallowed by"
2151              echo "  the dependency rules for \"$dname\""              echo "  the dependency rules for \"$dname\""
2152              exit 1              exit 1
2153          fi          fi
# Line 2162  done Line 2173  done
2173    
2174  # Create a list of #define and #undef to enable/disable packages  # Create a list of #define and #undef to enable/disable packages
2175  PACKAGES_DOT_H=PACKAGES_CONFIG.h  PACKAGES_DOT_H=PACKAGES_CONFIG.h
2176  #  The following UGLY HACK sets multiple "#undef"s and it needs to go  #  The following UGLY HACK sets multiple "#undef"s and it needs to go
2177  #  away.  On 2003-08-12, CNH, JMC, and EH3 agreed that the CPP_OPTIONS.h  #  away.  On 2003-08-12, CNH, JMC, and EH3 agreed that the CPP_OPTIONS.h
2178  #  file would eventually be split up so that all package-related #define  #  file would eventually be split up so that all package-related #define
2179  #  statements could be separated and handled only by genmake.  #  statements could be separated and handled only by genmake.
2180  names=`ls -1 "$ROOTDIR/pkg"`  names=`ls -1 "$ROOTDIR/pkg"`
# Line 2191  for i in $PACKAGES ; do Line 2202  for i in $PACKAGES ; do
2202  #eh3 DEFINES="$DEFINES -D$def"  #eh3 DEFINES="$DEFINES -D$def"
2203    
2204  #EH3  WARNING :  This is an UGLY HACK that needs to be removed!!!  #EH3  WARNING :  This is an UGLY HACK that needs to be removed!!!
2205      case $i in      case $i in
2206          aim_v23)          aim_v23)
2207              ENABLED_PACKAGES="$ENABLED_PACKAGES -DALLOW_AIM"              ENABLED_PACKAGES="$ENABLED_PACKAGES -DALLOW_AIM"
2208              echo "Warning: ALLOW_AIM is set to enable aim_v23."              echo "Warning: ALLOW_AIM is set to enable aim_v23."
# Line 2293  if test ! "x$DIVA" = x ; then Line 2304  if test ! "x$DIVA" = x ; then
2304          fi          fi
2305          MPIINCLUDEDIR='$MPIHOME/include'          MPIINCLUDEDIR='$MPIHOME/include'
2306      fi      fi
2307        
2308      if test -r $MPIINCLUDEDIR/mpif.h ; then      if test -r $MPIINCLUDEDIR/mpif.h ; then
2309          for i in $MPI_HEADER_FILES; do          for i in $MPI_HEADER_FILES; do
2310              cp -p $MPIINCLUDEDIR/$i ./mpi_headers              cp -p $MPIINCLUDEDIR/$i ./mpi_headers
# Line 2328  if test ! -r ".links.tmp/foo" ; then Line 2339  if test ! -r ".links.tmp/foo" ; then
2339  fi  fi
2340  rm -f .links.tmp/foo  rm -f .links.tmp/foo
2341    
2342  if test "x$OPENAD" != x ; then  if test "x$OPENAD" != x ; then
2343      OAD_DONT_COMPILE="/dev/null"      OAD_DONT_COMPILE="/dev/null"
2344      OAD_DONT_TRANSFORM="/dev/null"      OAD_DONT_TRANSFORM="/dev/null"
2345      OAD_KEEP_ORIGINAL="/dev/null"      OAD_KEEP_ORIGINAL="/dev/null"
# Line 2381  for d in $alldirs ; do Line 2392  for d in $alldirs ; do
2392      deplist=      deplist=
2393      sfiles=`( cd $d; echo *.[h,c,F] *.flow )`      sfiles=`( cd $d; echo *.[h,c,F] *.flow )`
2394      sfiles=`( echo $sfiles; cd $d; echo *.F90 )`      sfiles=`( echo $sfiles; cd $d; echo *.F90 )`
2395      if test "x$OPENAD" != x ; then      if test "x$OPENAD" != x ; then
2396          sfiles=`( echo $sfiles | grep -v _cb2m\. )`          sfiles=`( echo $sfiles | grep -v _cb2m\. )`
2397      fi      fi
2398      for sf in $sfiles ; do      for sf in $sfiles ; do
# Line 2421  for d in $alldirs ; do Line 2432  for d in $alldirs ; do
2432                        F)                        F)
2433                          echo    " \\"  >> F77srclist.tmp                          echo    " \\"  >> F77srclist.tmp
2434                          printf " $sf" >> F77srclist.tmp                          printf " $sf" >> F77srclist.tmp
2435                          if test "x$OPENAD" != x ; then                          if test "x$OPENAD" != x ; then
2436                              basename=${sf%%.F}                              basename=${sf%%.F}
2437                              isAD=`egrep ^$basename.f'[  ]*' adSrcFiles.tmp`                              isAD=`egrep ^$basename.f'[  ]*' adSrcFiles.tmp`
2438                              if test -z "$isAD" ; then                              if test -z "$isAD" ; then
2439                                  toBeIgnored=`egrep ^$basename'[      ]*' ${OAD_DONT_COMPILE}`                                  toBeIgnored=`egrep ^$basename'[      ]*' ${OAD_DONT_COMPILE}`
2440                                  if test -z "$toBeIgnored" ; then                                  if test -z "$toBeIgnored" ; then
2441                                      echo    " \\"  >> nonADF77srclist.tmp                                      echo    " \\"  >> nonADF77srclist.tmp
2442                                      printf " $sf" >> nonADF77srclist.tmp                                      printf " $sf" >> nonADF77srclist.tmp
2443                                  else                                  else
2444                                      echo "    not to be compiled   :  $sf"                                      echo "    not to be compiled   :  $sf"
2445                                  fi                                  fi
2446                              else # file is initially listed as an AD file we want to exclude it                              else # file is initially listed as an AD file we want to exclude it
2447                                   # or we want to retain the untransformed version                                   # or we want to retain the untransformed version
2448                                  notToBeTransformed=`egrep ^$basename'[      ]*' ${OAD_DONT_TRANSFORM}`                                  notToBeTransformed=`egrep ^$basename'[      ]*' ${OAD_DONT_TRANSFORM}`
2449                                  untransformedVersionToBeKept=`egrep ^$basename'[      ]*' ${OAD_KEEP_ORIGINAL}`                                  untransformedVersionToBeKept=`egrep ^$basename'[      ]*' ${OAD_KEEP_ORIGINAL}`
2450                                  if test -n "$notToBeTransformed"; then                                  if test -n "$notToBeTransformed"; then
2451                                      echo "    not to be transformed:  $sf"                                      echo "    not to be transformed:  $sf"
2452                                  fi                                  fi
2453                                  if test -n "$untransformedVersionToBeKept" ; then                                  if test -n "$untransformedVersionToBeKept" ; then
2454                                      echo "    original to be kept  :  $sf"                                      echo "    original to be kept  :  $sf"
2455                                  fi                                      fi
2456                                  if test -n "$notToBeTransformed" -o -n "$untransformedVersionToBeKept" ; then                                  if test -n "$notToBeTransformed" -o -n "$untransformedVersionToBeKept" ; then
2457                                      echo    " \\"  >> nonADF77srclist.tmp                                      echo    " \\"  >> nonADF77srclist.tmp
2458                                      printf " $sf" >> nonADF77srclist.tmp                                      printf " $sf" >> nonADF77srclist.tmp
# Line 2760  EOF Line 2771  EOF
2771  #===  Automatic Differentiation Rules  ===  #===  Automatic Differentiation Rules  ===
2772  #===  for TAMC/TAF  ======================  #===  for TAMC/TAF  ======================
2773    
2774  if test "x$OPENAD" = x ; then  if test "x$OPENAD" = x ; then
2775    
2776  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2777    
# Line 2820  adtafonly: Line 2831  adtafonly:
2831          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
2832    
2833  \${EXE_AD}: ad_taf_output.o \$(OBJFILES)  \${EXE_AD}: ad_taf_output.o \$(OBJFILES)
2834          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)
2835    
2836  ad_tamc_output.$FS: ad_input_code.$FS  ad_tamc_output.$FS: ad_input_code.$FS
2837          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS
2838          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_tamc_output.$FS          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_tamc_output.$FS
2839    
2840  ad_tamc: ad_tamc_output.o \$(OBJFILES)  ad_tamc: ad_tamc_output.o \$(OBJFILES)
2841          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)
2842    
2843  adonlyfwd:  adonlyfwd:
2844          patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff          patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff
2845    
2846  adtrick:  adtrick:
2847          patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff          patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff
2848    
# Line 2859  ftltafonly: Line 2870  ftltafonly:
2870          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS
2871    
2872  ftl_taf: ftl_taf_output.o \$(OBJFILES)  ftl_taf: ftl_taf_output.o \$(OBJFILES)
2873          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)
2874    
2875  ftl_tamc_output.$FS: ftl_input_code.$FS  ftl_tamc_output.$FS: ftl_input_code.$FS
2876          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS
2877          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_tamc_output.$FS          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_tamc_output.$FS
2878    
2879  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)
2880          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS)          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS)
2881    
2882    
2883  # ... SVD ...  # ... SVD ...
# Line 2895  svd_touch: Line 2906  svd_touch:
2906    
2907  EOF  EOF
2908    
2909  fi  fi
2910    
2911  #===  for OpenAD  ========================  #===  for OpenAD  ========================
2912    
2913  if test "x$OPENAD" != x ; then  if test "x$OPENAD" != x ; then
2914    
2915  # ============ begin OpenAD specific section ==============  # ============ begin OpenAD specific section ==============
2916    
2917  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2918    
2919  # all the source files linked from the various locations:  # all the source files linked from the various locations:
2920  ALL_LINKED_FILES= \  ALL_LINKED_FILES= \
2921  \$(F77_SRC_FILES) \  \$(F77_SRC_FILES) \
2922  \$(C_SRC_FILES) \  \$(C_SRC_FILES) \
# Line 2957  rm -f adSrcFiles.tmp Line 2968  rm -f adSrcFiles.tmp
2968    
2969  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2970    
2971  adAll: \$(EXE_AD)  adAll: \$(EXE_AD)
2972  .PHONY: adAll  .PHONY: adAll
2973    
2974  CB2M_F90_PP_SRC_FILES=\$(addsuffix _mod.f$FS90, \$(CB2M_F90_SRC_NAMES))  CB2M_F90_PP_SRC_FILES=\$(addsuffix _mod.f$FS90, \$(CB2M_F90_SRC_NAMES))
# Line 2975  w2f__types.F90 \ Line 2986  w2f__types.F90 \
2986  OAD_active.F90 \  OAD_active.F90 \
2987  OAD_cp.F90 \  OAD_cp.F90 \
2988  OAD_rev.F90 \  OAD_rev.F90 \
2989  OAD_tape.F90          OAD_tape.F90
2990    
2991  OPENAD_SUPPORT_C_SRC_FILES = \  OPENAD_SUPPORT_C_SRC_FILES = \
2992  iaddr.c \  iaddr.c \
# Line 2984  timeRatio.c Line 2995  timeRatio.c
2995  f95_test_mods.f90: \$(OPENAD_SUPPORT_F90_SRC_FILES:F90=$FS90)  f95_test_mods.f90: \$(OPENAD_SUPPORT_F90_SRC_FILES:F90=$FS90)
2996          cat \$^ > \$@          cat \$^ > \$@
2997    
2998  f95_test.f90: all_mods.xb.x2w.w2f.pp.f$FS90 \$(NON_AD_F77_SRC_FILES:.F=_cb2m.f$FS90) ad_input_code.w2f.pre.xb.x2w.w2f.td.pp.f$FS90  f95_test.f90: all_mods.xb.x2w.w2f.pp.f$FS90 \$(NON_AD_F77_SRC_FILES:.F=_cb2m.f$FS90) ad_input_code.w2f.pre.xb.x2w.w2f.td.pp.f$FS90
2999          cat \$^ > \$@          cat \$^ > \$@
3000    
3001  f95_test.out: f95_test_mods.f90 f95_test.f90  f95_test.out: f95_test_mods.f90 f95_test.f90
3002          f95 -fixed -w=unused -maxcontin=132 -c f95_test_mods.f90 > \$@ 2>&1          f95 -fixed -w=unused -maxcontin=132 -c f95_test_mods.f90 > \$@ 2>&1
3003          f95 -fixed -w=unused -maxcontin=132 -c -fixed f95_test.f90 >> \$@ 2>&1          f95 -fixed -w=unused -maxcontin=132 -c -fixed f95_test.f90 >> \$@ 2>&1
3004    
3005  # the file included below is created by the  # the file included below is created by the
3006  # postProcessor and its inclusion sets the  # postProcessor and its inclusion sets the
3007  # variable POSTPROCESSEDFILES  # variable POSTPROCESSEDFILES
3008  # used below. Because the file is made during  # used below. Because the file is made during
3009  # make it won't be read until the second (recursive)  # make it won't be read until the second (recursive)
3010  # invocation in the rule below  # invocation in the rule below
3011  -include postProcess.make  -include postProcess.make
3012    
# Line 3021  endif Line 3032  endif
3032  openad: ad_input_code.w2f.pre.xb.x2w.w2f.td.pp.f$FS90  openad: ad_input_code.w2f.pre.xb.x2w.w2f.td.pp.f$FS90
3033  .PHONY: openad  .PHONY: openad
3034    
3035  # create the module files  # create the module files
3036  %_mod.FF90 : %.h ../OAD_support/cb2mGetModules.csh ../OAD_support/cb2mGetModules.awk  %_mod.FF90 : %.h ../OAD_support/cb2mGetModules.csh ../OAD_support/cb2mGetModules.awk
3037          ../OAD_support/cb2mGetModules.csh $< ../OAD_support/cb2mGetModules.awk          ../OAD_support/cb2mGetModules.csh $< ../OAD_support/cb2mGetModules.awk
3038    
3039  # create the header files  # create the header files
3040  %_mod.h : %.h ../OAD_support/cb2mGetHeaders.csh ../OAD_support/cb2mGetHeaders.awk  %_mod.h : %.h ../OAD_support/cb2mGetHeaders.csh ../OAD_support/cb2mGetHeaders.awk
3041          ../OAD_support/cb2mGetHeaders.csh $< ../OAD_support/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)          ../OAD_support/cb2mGetHeaders.csh $< ../OAD_support/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)
3042    
3043  # change everybody else to use the new module files:  # change everybody else to use the new module files:
# Line 3048  CB2M_AD_FILES=\$(AD_FILES:.f=_cb2m.f$FS9 Line 3059  CB2M_AD_FILES=\$(AD_FILES:.f=_cb2m.f$FS9
3059  ad_input_code.f$FS90:  \$(CB2M_AD_FILES)  ad_input_code.f$FS90:  \$(CB2M_AD_FILES)
3060          cat \$^ > \$@          cat \$^ > \$@
3061    
3062  # strip all comments and blanks to reduce  # strip all comments and blanks to reduce
3063  # the file size in order to reduce perl's memory requirements  # the file size in order to reduce perl's memory requirements
3064  ad_input_code_sf.f$FS90 : ad_input_code.f$FS90  ad_input_code_sf.f$FS90 : ad_input_code.f$FS90
3065          cat \$^ | sed -f ../OAD_support/strip.sed | sed -f ../OAD_support/stop2print.sed > \$@          cat \$^ | sed -f ../OAD_support/strip.sed | sed -f ../OAD_support/stop2print.sed > \$@
3066    
3067  # mfef90 preprocessing  # mfef90 preprocessing
3068  # expand statement functions  # expand statement functions
3069  # expose mfef90 specific substring handling  # expose mfef90 specific substring handling
3070  # add the w2f__types module  # add the w2f__types module
3071  ad_input_code_sf.w2f.f$FS90: ad_input_code_sf.f$FS90 mfef90 whirl2f whirl2f_be w2f__types.f90  ad_input_code_sf.w2f.f$FS90: ad_input_code_sf.f$FS90 mfef90 whirl2f whirl2f_be w2f__types.f90
3072          ./mfef90 -r8 -z -F -N132 \$<          ./mfef90 -r8 -z -F -N132 \$<
3073          mv \$<.B \$(basename \$<).B          mv \$<.B \$(basename \$<).B
3074          ./whirl2f -openad \$(basename \$<).B          ./whirl2f -openad \$(basename \$<).B
3075          cat w2f__types.f90 \$(basename \$<).w2f.f > \$@          cat w2f__types.f90 \$(basename \$<).w2f.f > \$@
3076    
# Line 3068  ad_input_code_sf.w2f.pre.f$FS90: ad_inpu Line 3079  ad_input_code_sf.w2f.pre.f$FS90: ad_inpu
3079          ./preProcess.py --timing --r8 -H -S \$< -o \$@          ./preProcess.py --timing --r8 -H -S \$< -o \$@
3080    
3081  # F -> WHIRL  # F -> WHIRL
3082  # note that the canonicalized version cuts off at col 72  # note that the canonicalized version cuts off at col 72
3083  # doing this also for string constants which is ok as long  # doing this also for string constants which is ok as long
3084  # as we are in fixed mode and cut of exactly there.  # as we are in fixed mode and cut of exactly there.
3085  # Otherwise mfef90 patches in spaces to fill up to 72 (or 132)  # Otherwise mfef90 patches in spaces to fill up to 72 (or 132)
3086  # characters respectively.  # characters respectively.
3087  ad_input_code_sf.w2f.pre.B: ad_input_code_sf.w2f.pre.f$FS90 mfef90  ad_input_code_sf.w2f.pre.B: ad_input_code_sf.w2f.pre.f$FS90 mfef90
3088          ./mfef90 -r8 -z -F \$<          ./mfef90 -r8 -z -F \$<
# Line 3091  ad_input_code_sf.w2f.pre.xb.x2w.B : ad_i Line 3102  ad_input_code_sf.w2f.pre.xb.x2w.B : ad_i
3102    
3103  # WHIRL' -> F'  # WHIRL' -> F'
3104  ad_input_code_sf.w2f.pre.xb.x2w.w2f.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.B whirl2f whirl2f_be  ad_input_code_sf.w2f.pre.xb.x2w.w2f.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.B whirl2f whirl2f_be
3105          ./whirl2f -FLIST:ftn_file=\$@ -openad \$<          ./whirl2f -FLIST:ftn_file=\$@ -openad \$<
3106    
3107  # insert template directives  # insert template directives
3108  ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.w2f.f$FS90 ../OAD_support/insertTemplateDir.bash  ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.w2f.f$FS90 ../OAD_support/insertTemplateDir.bash
# Line 3100  ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f Line 3111  ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f
3111  PPEXTRAS=\$(wildcard ../OAD_support/ad_template.*.F) ../OAD_support/ad_inline.F  PPEXTRAS=\$(wildcard ../OAD_support/ad_template.*.F) ../OAD_support/ad_inline.F
3112  # postprocess F'  # postprocess F'
3113  postProcess.tag: ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f$FS90 postProcess.py \$(PPEXTRAS:.F=.f)  postProcess.tag: ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f$FS90 postProcess.py \$(PPEXTRAS:.F=.f)
3114          # the target is a placeholder to signal execution of the rule          # the target is a placeholder to signal execution of the rule
3115          touch \$@          touch \$@
3116          # this step also creates the file postProcess.make but we cannot          # this step also creates the file postProcess.make but we cannot
3117          # name it as the target or else make will try to remake it for          # name it as the target or else make will try to remake it for
3118          # the include directive above for any rule, e.g. make clean          # the include directive above for any rule, e.g. make clean
3119          ./postProcess.py --progress --timing --outputFormat=fixed -m r -i ../OAD_support/ad_inline.f --width 4 \$<          ./postProcess.py --progress --timing --outputFormat=fixed -m r -i ../OAD_support/ad_inline.f --width 4 \$<
3120    
# Line 3111  postProcess.tag: ad_input_code_sf.w2f.pr Line 3122  postProcess.tag: ad_input_code_sf.w2f.pr
3122  %.xsd:  %.xsd:
3123          \$(LN) \${XAIFSCHEMAROOT}/schema/\$@ .          \$(LN) \${XAIFSCHEMAROOT}/schema/\$@ .
3124    
3125  mfef90:  mfef90:
3126          \$(LN) \${OPEN64ROOT}/crayf90/sgi/mfef90 .          \$(LN) \${OPEN64ROOT}/crayf90/sgi/mfef90 .
3127    
3128  # link the support files:  # link the support files:
3129  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):
3130          \$(LN) ../OAD_support/\$@ .          \$(LN) ../OAD_support/\$@ .
3131    
3132  whirl2xaif xaif2whirl:  whirl2xaif xaif2whirl:
3133          \$(LN) \${OPENADFORTTK}/bin/\$@ .          \$(LN) \${OPENADFORTTK}/bin/\$@ .
3134    
3135  preProcess.py postProcess.py:  preProcess.py postProcess.py:
3136          \$(LN) \${OPENADFORTTK_BASE}/tools/SourceProcessing/\$@ .          \$(LN) \${OPENADFORTTK_BASE}/tools/SourceProcessing/\$@ .
3137    
3138  whirl2f whirl2f_be:  whirl2f whirl2f_be:
# Line 3175  printf "\n\n# DO NOT DELETE\n" >> $MAKEF Line 3186  printf "\n\n# DO NOT DELETE\n" >> $MAKEF
3186  printf "\n===  Done  ===\n"  printf "\n===  Done  ===\n"
3187    
3188  # Create special header files  # Create special header files
3189  $BASH $TOOLSDIR/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" $DISABLED_PACKAGES " " "Enabled packages:" $ENABLED_PACKAGES > $PACKAGES_DOT_H".tmp"  $BASH $TOOLSDIR/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" $DISABLED_PACKAGES " " "Enabled packages:" $ENABLED_PACKAGES > $PACKAGES_DOT_H".tmp"
3190  if test ! -f $PACKAGES_DOT_H ; then  if test ! -f $PACKAGES_DOT_H ; then
3191      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H
3192  else  else

Legend:
Removed from v.1.205  
changed lines
  Added in v.1.206

  ViewVC Help
Powered by ViewVC 1.1.22