/[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.139 by ce107, Thu Dec 22 01:22:27 2005 UTC revision 1.146 by edhill, Fri Apr 7 02:53:55 2006 UTC
# Line 13  Line 13 
13  test_for_package_in_cpp_options() {  test_for_package_in_cpp_options() {
14      cpp_options=$1      cpp_options=$1
15      pkg=$2      pkg=$2
16      test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_$pkg" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_$pkg[ ]"
17      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_$pkg" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_$pkg[ ]"
18      test_for_string_in_file $cpp_options "^[ ]*#define.*DISABLE_$pkg" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#define.*DISABLE_$pkg[ ]"
19      test_for_string_in_file $cpp_options "^[ ]*#undef.*DISABLE_$pkg" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#undef.*DISABLE_$pkg[ ]"
20        test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_$pkg$"
21        test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_$pkg$"
22        test_for_string_in_file $cpp_options "^[ ]*#define.*DISABLE_$pkg$"
23        test_for_string_in_file $cpp_options "^[ ]*#undef.*DISABLE_$pkg$"
24  }  }
25    
26  # Search for particular CPP #cmds associated with MPI  # Search for particular CPP #cmds associated with MPI
27  # usage: test_for_mpi_in_cpp_eeoptions CPP_file  # usage: test_for_mpi_in_cpp_eeoptions CPP_file
28  test_for_mpi_in_cpp_eeoptions() {  test_for_mpi_in_cpp_eeoptions() {
29      cpp_options=$1      cpp_options=$1
30      test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_USE_MPI" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_USE_MPI[ ]"
31      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_USE_MPI" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_USE_MPI[ ]"
32      test_for_string_in_file $cpp_options "^[ ]*#define.*ALWAYS_USE_MPI" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#define.*ALWAYS_USE_MPI[ ]"
33      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALWAYS_USE_MPI" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALWAYS_USE_MPI[ ]"
34        test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_USE_MPI$"
35        test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_USE_MPI$"
36        test_for_string_in_file $cpp_options "^[ ]*#define.*ALWAYS_USE_MPI$"
37        test_for_string_in_file $cpp_options "^[ ]*#undef.*ALWAYS_USE_MPI$"
38  }  }
39    
40  # Search for particular string in a file. Return 1 if detected, 0 if not  # Search for particular string in a file. Return 1 if detected, 0 if not
# Line 39  test_for_string_in_file() { Line 47  test_for_string_in_file() {
47      if test "x${RETVAL}" = x0 ; then      if test "x${RETVAL}" = x0 ; then
48          printf "Error: In $file there is an illegal line: "          printf "Error: In $file there is an illegal line: "
49          grep -i "$strng" $file          grep -i "$strng" $file
50          return 1          exit 99
51      fi      fi
52      return 0      return 0
53  }  }
# Line 248  build_cyrus_makedepend()  { Line 256  build_cyrus_makedepend()  {
256      fi      fi
257  }  }
258    
259    
260    build_embed_encode()
261    {
262        printf "  building the embed-encode utility...  "
263        if test ! -e "$ROOTDIR/tools/embed_encode/encode_files" ; then
264            if test ! -d "$ROOTDIR/tools/embed_encode" ; then
265                echo
266                echo "    Error: can't locate \"$ROOTDIR/tools/embed_encode\""
267                echo
268                EMBED_SRC=f
269                return 1
270            fi
271            clist="cc gcc c89 $CC"
272            for ic in $clist ; do
273                comm="$ic -o encode_files encode_files.c"
274                ( cd $ROOTDIR/tools/embed_encode && $comm ) > /dev/null 2>&1
275                RETVAL=$?
276                if test "x$RETVAL" = x0 ; then
277                    echo "OK"
278                    DEFINES="$DEFINES -DHAVE_EMBED_SRC"
279                    return 0
280                fi
281            done
282            echo
283            echo "    Error: unable to build $ROOTDIR/embed_encode/encode_files"
284            echo "      so it has been disabled"
285            echo
286            EMBED_SRC=f
287            return 1
288        fi
289        echo "OK"
290        DEFINES="$DEFINES -DHAVE_EMBED_SRC"
291    }
292    
293    
294  # Guess possible config options for this host  # Guess possible config options for this host
295  find_possible_configs()  {  find_possible_configs()  {
296    
# Line 535  Usage: "$0" [OPTIONS] Line 578  Usage: "$0" [OPTIONS]
578            *only* works if it is supported by the OPTFILE that            *only* works if it is supported by the OPTFILE that
579            is being used.            is being used.
580    
581        -ignoretime | -ignore_time | --ignoretime | --ignore_time
582              Ignore all the "wall clock" routines entirely.  This will
583              not in any way hurt the model results -- it simply means
584              that the code that checks how long the model spends in
585              various routines will give junk values.
586    
587      -ts | --ts      -ts | --ts
588            Produce timing information per timestep            Produce timing information per timestep
589      -papis | --papis      -papis | --papis
# Line 556  Usage: "$0" [OPTIONS] Line 605  Usage: "$0" [OPTIONS]
605            set to PATH. i.e. Include files from \$PATH/include, link to libraries            set to PATH. i.e. Include files from \$PATH/include, link to libraries
606            from \$PATH/lib and use binaries from \$PATH/bin.            from \$PATH/lib and use binaries from \$PATH/bin.
607    
608        -es | --es | -embed-source | --embed-source
609              Embed a tarball containing the full source code
610              (including the Makefile, etc.) used to build the
611              executable [off by default]
612    
613      -bash NAME      -bash NAME
614            Explicitly specify the Bourne or BASH shell to use            Explicitly specify the Bourne or BASH shell to use
615    
# Line 990  BASH= Line 1044  BASH=
1044  PWD=`pwd`  PWD=`pwd`
1045  test "x$MAKE" = x  &&  MAKE=make  test "x$MAKE" = x  &&  MAKE=make
1046  test "x$AWK" = x   &&  AWK=awk  test "x$AWK" = x   &&  AWK=awk
1047    EMBED_SRC=
1048  THISHOST=`hostname`  THISHOST=`hostname`
1049  THISCWD=`pwd`  THISCWD=`pwd`
1050  THISDATE=`date`  THISDATE=`date`
# Line 1244  for ac_option in "$@" ; do Line 1299  for ac_option in "$@" ; do
1299          -ignoretime | -ignore_time | --ignoretime | --ignore_time)          -ignoretime | -ignore_time | --ignoretime | --ignore_time)
1300              IGNORE_TIME="-DIGNORE_TIME" ;;              IGNORE_TIME="-DIGNORE_TIME" ;;
1301    
1302            -es | --es | -embed-source | --embed-source)
1303                EMBED_SRC=t ;;
1304    
1305          -*)          -*)
1306              echo "Error: unrecognized option: "$ac_option              echo "Error: unrecognized option: "$ac_option
1307              usage              usage
# Line 1576  if test "x$HAVE_CLOC" != x ; then Line 1634  if test "x$HAVE_CLOC" != x ; then
1634      echo "yes"      echo "yes"
1635  else  else
1636      echo "no"      echo "no"
1637        if test "x$EMBED_SRC" = xt ; then
1638            echo "    WARNING: you requested file embedding but it has"
1639            echo "      been disabled since C code cannot be called"
1640            EMBED_SRC=
1641        fi
1642  fi  fi
1643  rm -f genmake_t*  rm -f genmake_t*
1644    
# Line 1615  else Line 1678  else
1678  fi  fi
1679  DEFINES="$DEFINES $IGNORE_TIME"  DEFINES="$DEFINES $IGNORE_TIME"
1680    
1681    if test "x$EMBED_SRC" = xt ; then
1682        build_embed_encode
1683    fi
1684    if test "x$EMBED_SRC" = xt ; then
1685        ENABLE="$ENABLE embed_files"
1686    fi
1687    
1688    
1689  printf "\n===  Setting defaults  ===\n"  printf "\n===  Setting defaults  ===\n"
1690  printf "  Adding MODS directories:  "  printf "  Adding MODS directories:  "
1691  for d in $MODS ; do  for d in $MODS ; do
# Line 2066  for i in $INCLUDEDIRS ; do Line 2137  for i in $INCLUDEDIRS ; do
2137      fi      fi
2138  done  done
2139    
 echo "  Creating the pseudo-MPI include directory"  
2140  if test ! "x$DIVA" = x ; then  if test ! "x$DIVA" = x ; then
2141        echo "  Creating the pseudo-MPI include directory"
2142      INCLUDES="-I./mpi_headers $INCLUDES"      INCLUDES="-I./mpi_headers $INCLUDES"
2143      rm -rf ./mpi_headers      rm -rf ./mpi_headers
2144      mkdir -p ./mpi_headers      mkdir -p ./mpi_headers
# Line 2094  fi Line 2165  fi
2165  echo "  Determining the list of source and include files"  echo "  Determining the list of source and include files"
2166  rm -rf .links.tmp  rm -rf .links.tmp
2167  mkdir .links.tmp  mkdir .links.tmp
2168    touch .links.tmp/foo
2169    if test ! -r ".links.tmp/foo" ; then
2170        echo
2171        echo "ERROR : something is wrong with your directory permissions or"
2172        echo "   your user file-creation mask (\"umask\") since creating a"
2173        echo "   sub-dir, touch-ing a file within it, and then reading it is"
2174        echo "   not working.  Please try setting your umask to something"
2175        echo "   sane such as:"
2176        echo
2177        echo "      umask 0002"
2178        echo
2179        echo "   and please verify that you have the proper permissions for"
2180        echo "   creating sub-directories and then reading files created"
2181        echo "   within them."
2182        echo
2183        exit 1
2184    fi
2185    rm -f .links.tmp/foo
2186  echo "# This section creates symbolic links" > srclinks.tmp  echo "# This section creates symbolic links" > srclinks.tmp
2187  echo "" >> srclinks.tmp  echo "" >> srclinks.tmp
2188  printf 'SRCFILES = '    > srclist.inc  printf 'SRCFILES = '    > srclist.inc
# Line 2112  for d in $alldirs ; do Line 2201  for d in $alldirs ; do
2201                  ignore_f=f                  ignore_f=f
2202                  case $d/$sf in                  case $d/$sf in
2203                    ./$PACKAGES_DOT_H)                    ./$PACKAGES_DOT_H)
2204                            ignore_f=t
2205                          ;;                          ;;
2206                    ./AD_CONFIG.h)                    ./AD_CONFIG.h)
2207                            ignore_f=t
2208                          ;;                          ;;
2209                    ./FC_NAMEMANGLE.h)                    ./FC_NAMEMANGLE.h)
2210                            ignore_f=t
2211                          ;;                          ;;
2212                    ./BUILD_INFO.h)                    ./BUILD_INFO.h)
2213                            ignore_f=t
2214                            ;;
2215                      ./EMBEDDED_FILES.h)
2216                            ignore_f=t
2217                          ;;                          ;;
2218                    *)                    *)
2219                          #  For the local directory *ONLY*,                          #  For the local directory *ONLY*,
# Line 2230  DISABLED_PACKAGES = ${DISABLED_PACKAGES} Line 2326  DISABLED_PACKAGES = ${DISABLED_PACKAGES}
2326    
2327  # These files are created by Makefile  # These files are created by Makefile
2328  SPECIAL_FILES = ${PACKAGES_DOT_H} AD_CONFIG.h FC_NAMEMANGLE.h BUILD_INFO.h  SPECIAL_FILES = ${PACKAGES_DOT_H} AD_CONFIG.h FC_NAMEMANGLE.h BUILD_INFO.h
   
2329  EOF  EOF
2330    
2331  #  Note: figure out some way to add Hyades JAM libraries here  if test "x$EMBED_SRC" = xt ; then
2332        echo "EMBEDDED_FILES = EMBEDDED_FILES.h" >>$MAKEFILE
2333    else
2334        echo "EMBEDDED_FILES = " >>$MAKEFILE
2335    fi
2336    
2337    #  Note: figure out some way to add Hyades JAM libraries here
2338  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2339  # Unix ln (link)  # Unix ln (link)
2340  LN = ${LN}  LN = ${LN}
# Line 2296  rm -f ad_flow_files.inc Line 2396  rm -f ad_flow_files.inc
2396  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2397    
2398  all: \$(EXECUTABLE)  all: \$(EXECUTABLE)
2399  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(OBJFILES)  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(OBJFILES) \$(EMBEDDED_FILES)
2400          @echo Creating \$@ ...          @echo Creating \$@ ...
2401          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)
2402  depend:  depend:
# Line 2330  CLEAN: Line 2430  CLEAN:
2430          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;
2431          -find \$(EXEDIR) -name "*.data" -exec rm {} \;          -find \$(EXEDIR) -name "*.data" -exec rm {} \;
2432          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;
2433          -rm -f \$(EXECUTABLE) output.txt STD*          -rm -f \$(EXECUTABLE) *.txt STD* *diagnostics.log datetime
2434            -rm -rf mnc_test_*
2435    
2436  #eh3 Makefile: makefile  #eh3 Makefile: makefile
2437  makefile:  makefile:
# Line 2358  test ! "x$THISUSER" = x && echo "      -echo Line 2459  test ! "x$THISUSER" = x && echo "      -echo
2459  test ! "x$THISDATE" = x && echo "       -echo \"#define THISDATE '$THISDATE'\" >> \$@" >> $MAKEFILE  test ! "x$THISDATE" = x && echo "       -echo \"#define THISDATE '$THISDATE'\" >> \$@" >> $MAKEFILE
2460  test ! "x$THISHOST" = x && echo "       -echo \"#define THISHOST '$THISHOST'\" >> \$@" >> $MAKEFILE  test ! "x$THISHOST" = x && echo "       -echo \"#define THISHOST '$THISHOST'\" >> \$@" >> $MAKEFILE
2461    
2462    if test "x$EMBED_SRC" = xt ; then
2463        cat >>$MAKEFILE <<EOF
2464    
2465    decode_files.o : EMBEDDED_FILES.h
2466    
2467    ##  \$(F77FILES)
2468    all_fF.tar.gz : \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(F77FILES) Makefile
2469            @echo Creating \$@ ...
2470            -tar -hcf all_fF.tar \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(F77FILES) Makefile
2471            -rm -f all_fF.tar.gz
2472            -gzip all_fF.tar
2473    
2474    EMBEDDED_FILES.h : all_fF.tar.gz
2475            @echo Creating \$@ ...
2476            -\${ROOTDIR}/tools/embed_encode/encode_files EMBEDDED_FILES.h all_fF.tar.gz
2477    
2478    EOF
2479    fi
2480    
2481  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2482    
2483  # The normal chain of rules is (  .F - .$FS - .o  )  # The normal chain of rules is (  .F - .$FS - .o  )

Legend:
Removed from v.1.139  
changed lines
  Added in v.1.146

  ViewVC Help
Powered by ViewVC 1.1.22