Parent Directory | Revision Log | Revision Graph | Patch
revision 1.146 by edhill, Fri Apr 7 02:53:55 2006 UTC | revision 1.210 by jmc, Tue Nov 2 00:51:11 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 110 EOF | Line 109 EOF |
109 | check_for_broken_Ff | check_for_broken_Ff |
110 | else | else |
111 | cat <<EOF 2>&1 | cat <<EOF 2>&1 |
112 | ERROR: Your file system cannot distinguish between *.F and *.f files | ERROR: Your file system cannot distinguish between *.F and *.f files |
113 | (fails the "cp" test) and this program cannot find a suitable | (fails the "cp" test) and this program cannot find a suitable |
114 | replacement extension. Please try a different build environment or | replacement extension. Please try a different build environment or |
115 | contact the <MITgcm-support@mitgcm.org> list for help. | contact the <MITgcm-support@mitgcm.org> list for help. |
116 | ||
117 | EOF | EOF |
# | Line 146 EOF | Line 145 EOF |
145 | check_for_broken_Ff | check_for_broken_Ff |
146 | else | else |
147 | cat <<EOF 2>&1 | cat <<EOF 2>&1 |
148 | ERROR: Your file system cannot distinguish between *.F and *.f files | ERROR: Your file system cannot distinguish between *.F and *.f files |
149 | (fails the "make/ln" test) and this program cannot find a suitable | (fails the "make/ln" test) and this program cannot find a suitable |
150 | replacement extension. Please try a different build environment or | replacement extension. Please try a different build environment or |
151 | contact the <MITgcm-support@mitgcm.org> list for help. | contact the <MITgcm-support@mitgcm.org> list for help. |
152 | ||
153 | EOF | EOF |
# | Line 194 look_for_makedepend() { | Line 193 look_for_makedepend() { |
193 | cat <<EOF >> $MAKEFILE | cat <<EOF >> $MAKEFILE |
194 | # THIS IS A TEST MAKEFILE GENERATED BY "genmake2" | # THIS IS A TEST MAKEFILE GENERATED BY "genmake2" |
195 | # | # |
196 | # Some "makedepend" implementations will die if they cannot | # Some "makedepend" implementations will die if they cannot |
197 | # find a Makefile -- so this file is here to gives them an | # find a Makefile -- so this file is here to gives them an |
198 | # empty one to find and parse. | # empty one to find and parse. |
199 | EOF | EOF |
200 | cat <<EOF >> genmake_tc.f | cat <<EOF >> genmake_tc.f |
# | Line 212 EOF | Line 211 EOF |
211 | MAKEDEPEND=makedepend | MAKEDEPEND=makedepend |
212 | else | else |
213 | echo " a system-default makedepend was not found." | echo " a system-default makedepend was not found." |
214 | ||
215 | # Try to build the cyrus implementation | # Try to build the cyrus implementation |
216 | build_cyrus_makedepend | build_cyrus_makedepend |
217 | RETVAL=$? | RETVAL=$? |
# | Line 269 build_embed_encode() | Line 268 build_embed_encode() |
268 | return 1 | return 1 |
269 | fi | fi |
270 | clist="cc gcc c89 $CC" | clist="cc gcc c89 $CC" |
271 | for ic in $clist ; do | for ic in $clist ; do |
272 | comm="$ic -o encode_files encode_files.c" | comm="$ic -o encode_files encode_files.c" |
273 | ( cd $ROOTDIR/tools/embed_encode && $comm ) > /dev/null 2>&1 | ( cd $ROOTDIR/tools/embed_encode && $comm ) > /dev/null 2>&1 |
274 | RETVAL=$? | RETVAL=$? |
# | Line 304 find_possible_configs() { | Line 303 find_possible_configs() { |
303 | echo $PLATFORM | grep cygwin > /dev/null 2>&1 && PLATFORM=cygwin_ia32 | echo $PLATFORM | grep cygwin > /dev/null 2>&1 && PLATFORM=cygwin_ia32 |
304 | OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")` | OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")` |
305 | echo " The platform appears to be: $PLATFORM" | echo " The platform appears to be: $PLATFORM" |
306 | ||
307 | echo "test" > test | echo "test" > test |
308 | ln -s ./test link | ln -s ./test link |
309 | RETVAL=$? | RETVAL=$? |
# | Line 325 find_possible_configs() { | Line 324 find_possible_configs() { |
324 | ||
325 | #================================================================ | #================================================================ |
326 | # look for possible C compilers | # look for possible C compilers |
327 | tmp="$MITGCM_CC $CC gcc c89 cc c99 mpicc" | tmp="$MITGCM_CC $CC gcc c89 cc c99 mpicc icc" |
328 | p_CC= | p_CC= |
329 | for c in $tmp ; do | for c in $tmp ; do |
330 | rm -f ./genmake_hello.c ./genmake_hello | rm -f ./genmake_hello.c ./genmake_hello |
# | Line 364 EOF | Line 363 EOF |
363 | ||
364 | #================================================================ | #================================================================ |
365 | # look for possible FORTRAN compilers | # look for possible FORTRAN compilers |
366 | tmp="$MITGCM_FC $FC efc g77 f77 pgf77 pgf95 ifc f90 f95 mpif77 mpf77 mpxlf95 gfortran" | tmp="$MITGCM_FC $FC efc g77 f77 pgf77 pgf95 ifc ifort f90 f95 mpif77 mpf77 mpxlf95 gfortran g95" |
367 | p_FC= | p_FC= |
368 | for c in $tmp ; do | for c in $tmp ; do |
369 | rm -f ./hello.f ./hello | rm -f ./hello.f ./hello |
# | Line 442 Error: No options file was found in: $R | Line 441 Error: No options file was found in: $R |
441 | EOF | EOF |
442 | exit 1 | exit 1 |
443 | fi | fi |
444 | ||
445 | # # look for possible MPI libraries | # # look for possible MPI libraries |
446 | # mpi_libs= | # mpi_libs= |
447 | # mpi_fort=`which mpif77 2>/dev/null` | # mpi_fort=`which mpif77 2>/dev/null` |
# | Line 461 EOF | Line 460 EOF |
460 | # if test "x${RETVAL}" = x0 ; then | # if test "x${RETVAL}" = x0 ; then |
461 | # a=`cat out` | # a=`cat out` |
462 | # for i in $a ; do | # for i in $a ; do |
463 | # case $i in | # case $i in |
464 | # -*) | # -*) |
465 | # mpi_libs="$mpi_libs $i" ;; | # mpi_libs="$mpi_libs $i" ;; |
466 | # esac | # esac |
# | Line 480 get_pdepend_list() { | Line 479 get_pdepend_list() { |
479 | # strip the comments and then convert the dependency file into | # strip the comments and then convert the dependency file into |
480 | # two arrays: PNAME, DNAME | # two arrays: PNAME, DNAME |
481 | cat $1 | sed -e 's/#.*$//g' \ | cat $1 | sed -e 's/#.*$//g' \ |
482 | | $AWK 'BEGIN{nn=0;} (NF>0){ for(i=2;i<=NF;i++){nn++; print "PNAME["nn"]="$1"\nDNAME["nn"]="$i} }' \ | | $AWK 'BEGIN{nn=-1;} (NF>0){ for(i=2;i<=NF;i++){nn++; print "PNAME_"nn"="$1"\nDNAME_"nn"="$i}} END{print "nname="nn}' \ |
483 | > ./.pd_tmp | > ./.pd_tmp |
484 | RETVAL=$? | |
485 | if test ! "x${RETVAL}" = x0 ; then | |
486 | echo "Error: unable to parse package dependencies -- please check PKG_DEPEND=\"$1\"" | |
487 | exit 1 | |
488 | fi | |
489 | . ./.pd_tmp | . ./.pd_tmp |
490 | rm -f ./.pd_tmp | rm -f ./.pd_tmp |
491 | ||
printf "PNAME = "${} | ||
492 | } | } |
493 | ||
494 | ||
# | Line 508 Usage: "$0" [OPTIONS] | Line 511 Usage: "$0" [OPTIONS] |
511 | -optfile NAME | --optfile NAME | -of NAME | --of NAME | -optfile NAME | --optfile NAME | -of NAME | --of NAME |
512 | -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME | -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME |
513 | Use "NAME" as the optfile. By default, an attempt will be | Use "NAME" as the optfile. By default, an attempt will be |
514 | made to find an appropriate "standard" optfile in the | made to find an appropriate "standard" optfile in the |
515 | tools/build_options/ directory. | tools/build_options/ directory. |
516 | ||
517 | -pdepend NAME | --pdepend NAME | -pdepend NAME | --pdepend NAME |
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 | |
526 | Explicitly specify the Bourne or BASH shell to use | |
527 | ||
528 | -make NAME | -m NAME | -make NAME | -m NAME |
529 | --make=NAME | -m=NAME | --make=NAME | -m=NAME |
530 | Use "NAME" for the MAKE program. The default is "make" but | Use "NAME" for the MAKE program. The default is "make" but |
531 | many platforms, "gmake" is the preferred choice. | many platforms, "gmake" is the preferred choice. |
532 | ||
533 | -makefile NAME | -mf NAME | -makefile NAME | -mf NAME |
# | Line 535 Usage: "$0" [OPTIONS] | Line 541 Usage: "$0" [OPTIONS] |
541 | -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME | -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME |
542 | -rootdir=NAME | --rootdir=NAME | -rd=NAME | --rd=NAME | -rootdir=NAME | --rootdir=NAME | -rd=NAME | --rd=NAME |
543 | Specify the location of the MITgcm ROOTDIR as "NAME". | Specify the location of the MITgcm ROOTDIR as "NAME". |
544 | By default, genamke will try to find the location by | By default, genamke will try to find the location by |
545 | looking in parent directories (up to the 5th parent). | looking in parent directories (up to the 5th parent). |
546 | ||
547 | -mods NAME | --mods NAME | -mo NAME | --mo NAME | -mods NAME | --mods NAME | -mo NAME | --mo NAME |
548 | -mods=NAME | --mods=NAME | -mo=NAME | --mo=NAME | -mods=NAME | --mods=NAME | -mo=NAME | --mo=NAME |
549 | Here, "NAME" specifies a list of directories that are | Here, "NAME" specifies a list of directories that are |
550 | used for additional source code. Files found in the | used for additional source code. Files found in the |
551 | "mods list" are given preference over files of the same | "mods list" are given preference over files of the same |
552 | name found elsewhere. | name found elsewhere. |
553 | ||
554 | -disable NAME | --disable NAME | -disable NAME | --disable NAME |
555 | -disable=NAME | --disable=NAME | -disable=NAME | --disable=NAME |
556 | Here "NAME" specifies a list of packages that we don't | Here "NAME" specifies a list of packages that we don't |
557 | want to use. If this violates package dependencies, | want to use. If this violates package dependencies, |
558 | genamke will exit with an error message. | genamke will exit with an error message. |
559 | ||
560 | -enable NAME | --enable NAME | -enable NAME | --enable NAME |
561 | -enable=NAME | --enable=NAME | -enable=NAME | --enable=NAME |
562 | Here "NAME" specifies a list of packages that we wish | Here "NAME" specifies a list of packages that we wish |
563 | to specifically enable. If this violates package | to specifically enable. If this violates package |
564 | dependencies, genamke will exit with an error message. | dependencies, genamke will exit with an error message. |
565 | ||
566 | -standarddirs NAME | --standarddirs NAME | -standarddirs NAME | --standarddirs NAME |
567 | -standarddirs=NAME | --standarddirs=NAME | -standarddirs=NAME | --standarddirs=NAME |
568 | Here, "NAME" specifies a list of directories to be | Here, "NAME" specifies a list of directories to be |
569 | used as the "standard" code. | used as the "standard" code. |
570 | ||
571 | -fortran NAME | --fortran NAME | -fc NAME | --fc NAME | -fortran NAME | --fortran NAME | -fc NAME | --fc NAME |
572 | -fc=NAME | --fc=NAME | -fc=NAME | --fc=NAME |
573 | Use "NAME" as the fortran compiler. By default, genmake | Use "NAME" as the fortran compiler. By default, genmake |
574 | will search for a working compiler by trying a list of | will search for a working compiler by trying a list of |
575 | "usual suspects" such as g77, f77, etc. | "usual suspects" such as g77, f77, etc. |
576 | ||
577 | -cc NAME | --cc NAME | -cc=NAME | --cc=NAME | -cc NAME | --cc NAME | -cc=NAME | --cc=NAME |
578 | Use "NAME" as the C compiler. By default, genmake | Use "NAME" as the C compiler. By default, genmake |
579 | will search for a working compiler by trying a list of | will search for a working compiler by trying a list of |
580 | "usual suspects" such as gcc, c89, cc, etc. | "usual suspects" such as gcc, c89, cc, etc. |
581 | ||
582 | -[no]ieee | --[no]ieee | -[no]ieee | --[no]ieee |
583 | Do or don't use IEEE numerics. Note that this option | Do or don't use IEEE numerics. Note that this option |
584 | *only* works if it is supported by the OPTFILE that | *only* works if it is supported by the OPTFILE that |
585 | is being used. | is being used. |
586 | ||
587 | -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4 | |
588 | Use "real*4" type for _RS variable (#undef REAL4_IS_SLOW) | |
589 | *only* works if CPP_EEOPTIONS.h allows this. | |
590 | ||
591 | -ignoretime | -ignore_time | --ignoretime | --ignore_time | -ignoretime | -ignore_time | --ignoretime | --ignore_time |
592 | Ignore all the "wall clock" routines entirely. This will | Ignore all the "wall clock" routines entirely. This will |
593 | not in any way hurt the model results -- it simply means | not in any way hurt the model results -- it simply means |
594 | that the code that checks how long the model spends in | that the code that checks how long the model spends in |
595 | various routines will give junk values. | various routines will give junk values. |
596 | ||
597 | -ts | --ts | -ts | --ts |
598 | Produce timing information per timestep | Produce timing information per timestep |
599 | -papis | --papis | -papis | --papis |
600 | Produce summary MFlop/s with PAPI per timestep | Produce summary MFlop/s (and IPC) with PAPI per timestep |
601 | -pcls | --pcls | |
602 | Produce summary MFlop/s etc. with PCL per timestep | |
603 | -foolad | --foolad | -foolad | --foolad |
604 | Fool the AD code generator | Fool the AD code generator |
605 | -papi | --papi | -papi | --papi |
606 | Performance analysis with PAPI | Performance analysis with PAPI |
607 | -pcl | --pcl | |
608 | Performance analysis with PCL | |
609 | -hpmt | --hpmt | -hpmt | --hpmt |
610 | Performance analysis with the HPM Toolkit | Performance analysis with the HPM Toolkit |
611 | ||
612 | -gsl | --gsl | -gsl | --gsl |
613 | Use GSL to control floating point rounding and precision | Use GSL to control floating point rounding and precision |
614 | -devel | --devel | |
615 | Add additional warning and debugging flags for development | |
616 | ||
617 | -mpi | --mpi | -mpi | --mpi |
618 | Include MPI header files and link to MPI libraries | Include MPI header files and link to MPI libraries |
# | Line 605 Usage: "$0" [OPTIONS] | Line 621 Usage: "$0" [OPTIONS] |
621 | 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 |
622 | from \$PATH/lib and use binaries from \$PATH/bin. | from \$PATH/lib and use binaries from \$PATH/bin. |
623 | ||
624 | -omp | --omp | |
625 | Activate OpenMP code + use Compiler option OMPFLAG | |
626 | -omp=OMPFLAG | --omp=OMPFLAG | |
627 | Activate OpenMP code + use Compiler option OMPFLAG | |
628 | ||
629 | -es | --es | -embed-source | --embed-source | -es | --es | -embed-source | --embed-source |
630 | Embed a tarball containing the full source code | Embed a tarball containing the full source code |
631 | (including the Makefile, etc.) used to build the | (including the Makefile, etc.) used to build the |
632 | executable [off by default] | executable [off by default] |
633 | ||
634 | -bash NAME | While it is most often a single word, the "NAME" variables specified |
Explicitly specify the Bourne or BASH shell to use | ||
While it is most often a single word, the "NAME" variables specified | ||
635 | above can in many cases be a space-delimited string such as: | above can in many cases be a space-delimited string such as: |
636 | ||
637 | --enable pkg1 --enable 'pkg1 pkg2' --enable 'pkg1 pkg2 pkg3' | --enable pkg1 --enable 'pkg1 pkg2' --enable 'pkg1 pkg2 pkg3' |
# | Line 624 Usage: "$0" [OPTIONS] | Line 642 Usage: "$0" [OPTIONS] |
642 | ||
643 | For more detailed genmake documentation, please see: | For more detailed genmake documentation, please see: |
644 | ||
645 | http://mitgcm.org/devel_HOWTO/ | http://mitgcm.org/public/devel_HOWTO/ |
646 | ||
647 | EOF | EOF |
648 | ||
# | Line 638 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()" >> genmake_warnings | |
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 724 EOF | Line 743 EOF |
743 | ||
744 | ||
745 | check_HAVE_CLOC() { | check_HAVE_CLOC() { |
746 | echo >> genmake_warnings | |
747 | echo "running: check_HAVE_CLOC()" >> genmake_warnings | |
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 740 void FC_NAMEMANGLE(cloc) ( double *curti | Line 761 void FC_NAMEMANGLE(cloc) ( double *curti |
761 | *curtim = *curtim/1.E6; | *curtim = *curtim/1.E6; |
762 | } | } |
763 | EOF | EOF |
764 | make genmake_tc_1.o >> genmake_warnings 2>&1 | COMM="$CC $CFLAGS -c genmake_tc_1.c" |
765 | echo $COMM >> genmake_warnings | |
766 | $COMM >> genmake_warnings 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 750 EOF | Line 773 EOF |
773 | print *," HELLO WORLD", wtime | print *," HELLO WORLD", wtime |
774 | end | end |
775 | EOF | EOF |
776 | $FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o >> genmake_warnings 2>&1 | COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o" |
777 | echo $COMM >> genmake_warnings | |
778 | $COMM >> genmake_warnings 2>&1 | |
779 | RET_F=$? | RET_F=$? |
780 | test -x ./genmake_tc && ./genmake_tc >> genmake_warnings 2>&1 | test -x ./genmake_tc && ./genmake_tc >> genmake_warnings 2>&1 |
781 | RETVAL=$? | RETVAL=$? |
# | Line 763 EOF | Line 788 EOF |
788 | ||
789 | ||
790 | check_HAVE_SIGREG() { | check_HAVE_SIGREG() { |
791 | if test ! "x$HAVE_SIGREG" = x ; then | |
792 | return | |
793 | fi | |
794 | echo >> genmake_warnings | |
795 | echo "running: check_HAVE_SIGREG()" >> genmake_warnings | |
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 794 void FC_NAMEMANGLE(sigreg) (int * aip) | Line 824 void FC_NAMEMANGLE(sigreg) (int * aip) |
824 | return; | return; |
825 | } | } |
826 | EOF | EOF |
827 | make genmake_tc_1.o >> genmake_warnings 2>&1 | COMM="$CC $CFLAGS -c genmake_tc_1.c" |
828 | echo $COMM >> genmake_warnings | |
829 | $COMM >> genmake_warnings 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 804 EOF | Line 836 EOF |
836 | call sigreg(anint) | call sigreg(anint) |
837 | end | end |
838 | EOF | EOF |
echo >> genmake_warnings | ||
echo "running: check_HAVE_SIGREG()" >> genmake_warnings | ||
839 | cat genmake_tc_2.$FS >> 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 >> genmake_warnings |
# | Line 820 EOF | Line 850 EOF |
850 | ||
851 | ||
852 | check_HAVE_SETRLSTK() { | check_HAVE_SETRLSTK() { |
853 | if test "x$HAVE_SETRLSTK" = xt ; then | |
854 | DEFINES="$DEFINES -DHAVE_SETRLSTK" | |
855 | return | |
856 | fi | |
857 | if test ! "x$HAVE_SETRLSTK" = x ; then | |
858 | return | |
859 | fi | |
860 | echo >> genmake_warnings | |
861 | echo "running: check_HAVE_SETRLSTK()" >> genmake_warnings | |
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 835 void FC_NAMEMANGLE(setrlstk) () | Line 874 void FC_NAMEMANGLE(setrlstk) () |
874 | return; | return; |
875 | } | } |
876 | EOF | EOF |
877 | make genmake_tc_1.o >> genmake_warnings 2>&1 | COMM="$CC $CFLAGS -c genmake_tc_1.c" |
878 | echo $COMM >> genmake_warnings | |
879 | $COMM >> genmake_warnings 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 843 EOF | Line 884 EOF |
884 | call setrlstk() | call setrlstk() |
885 | end | end |
886 | EOF | EOF |
echo >> genmake_warnings | ||
echo "running: check_HAVE_SETRLSTK()" >> genmake_warnings | ||
887 | cat genmake_tc_2.$FS >> 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 >> genmake_warnings |
# | Line 859 EOF | Line 898 EOF |
898 | ||
899 | ||
900 | check_HAVE_STAT() { | check_HAVE_STAT() { |
901 | echo >> genmake_warnings | |
902 | echo "running: check_HAVE_STAT()" >> genmake_warnings | |
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 879 void FC_NAMEMANGLE(tfsize) ( int *nbyte | Line 920 void FC_NAMEMANGLE(tfsize) ( int *nbyte |
920 | *nbyte = -1; | *nbyte = -1; |
921 | } | } |
922 | EOF | EOF |
923 | make genmake_tc_1.o >> genmake_tc.log 2>&1 | COMM="$CC $CFLAGS -c genmake_tc_1.c" |
924 | echo $COMM >> genmake_warnings | |
925 | $COMM >> genmake_tc.log 2>&1 | |
926 | RET_C=$? | RET_C=$? |
927 | cat <<EOF > genmake_tc_2.$FS | cat <<EOF > genmake_tc_2.$FS |
928 | program hello | program hello |
# | Line 888 EOF | Line 931 EOF |
931 | print *," HELLO WORLD", nbyte | print *," HELLO WORLD", nbyte |
932 | end | end |
933 | EOF | EOF |
echo >> genmake_warnings | ||
echo "running: check_HAVE_STAT()" >> genmake_warnings | ||
934 | cat genmake_tc_2.$FS >> 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 >> genmake_warnings |
# | Line 926 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="$CPP $DEFINES $INCLUDES genmake_tnc.F" | COMM="cat genmake_tnc.F | $CPP $DEFINES $INCLUDES" |
975 | echo "$COMM" >> genmake_tnc.log | echo "$COMM" >> genmake_tnc.log |
976 | $COMM > genmake_tnc.$FS 2>/dev/null && RET_CPP=t | eval $COMM > genmake_tnc.$FS 2>/dev/null && RET_CPP=t |
977 | if test "x$RET_CPP" = xf ; then | if test "x$RET_CPP" = xf ; then |
978 | echo " WARNING: CPP failed to pre-process the netcdf test." \ | echo " WARNING: CPP failed to pre-process the netcdf test." \ |
979 | >> genmake_tnc.log | >> genmake_tnc.log |
# | Line 940 EOF | Line 981 EOF |
981 | >> genmake_tnc.log | >> genmake_tnc.log |
982 | fi | fi |
983 | echo "$FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log | echo "$FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log |
984 | echo " && $LINK -o genmake_tnc.o $LIBS" >> genmake_tnc.log | echo " && $LINK $FFLAGS $FOPTIM -o genmake_tnc.o $LIBS" >> genmake_tnc.log |
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 -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 >> genmake_warnings |
989 | ||
# | Line 955 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" >> genmake_warnings | |
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 "$CPP $DEFINES $INCLUDES genmake_tnc.F > 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 -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 |
1006 | $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS 2>/dev/null \ | cat genmake_tnc.F | $CPP $DEFINES $INCLUDES > genmake_tnc.$FS 2>/dev/null \ |
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 -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 | echo >> genmake_warnings | |
1011 | cat genmake_tnc.log >> genmake_warnings | cat genmake_tnc.log >> genmake_warnings |
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" >> genmake_warnings | |
1016 | else | |
1017 | # try again with "-lnetcdff" added to the libs | |
1018 | 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 | |
1020 | 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 | |
1022 | cat genmake_tnc.F | $CPP $DEFINES $INCLUDES > genmake_tnc.$FS 2>/dev/null \ | |
1023 | && $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 | |
1025 | RET_COMPILE=$? | |
1026 | echo >> genmake_warnings | |
1027 | cat genmake_tnc.log >> genmake_warnings | |
1028 | if test "x$RET_COMPILE" = x0 ; then | |
1029 | LIBS="$LIBS -lnetcdff -lnetcdf" | |
1030 | HAVE_NETCDF=t | |
1031 | echo "check_netcdf: successful" >> genmake_warnings | |
1032 | fi | |
1033 | fi | fi |
1034 | fi | fi |
1035 | rm -f genmake_tnc* | rm -f genmake_tnc* |
# | Line 997 ENABLE= | Line 1058 ENABLE= |
1058 | DISABLE= | DISABLE= |
1059 | # MAKEFILE= | # MAKEFILE= |
1060 | # MAKEDEPEND= | # MAKEDEPEND= |
1061 | PDEPEND= | PKG_DEPEND= |
1062 | PKG_GROUPS= | |
1063 | DUMPSTATE=t | DUMPSTATE=t |
PDEFAULT= | ||
1064 | OPTFILE= | OPTFILE= |
1065 | INCLUDES="-I. $INCLUDES" | INCLUDES="-I. $INCLUDES" |
1066 | FFLAGS= | FFLAGS= |
1067 | FOPTIM= | FOPTIM= |
1068 | FEXTRAFLAGS= | |
1069 | USE_EXTENDED_SRC= | |
1070 | EXTENDED_SRC_FLAG= | |
1071 | CFLAGS= | CFLAGS= |
1072 | KFLAGS1= | KFLAGS1= |
1073 | KFLAGS2= | KFLAGS2= |
# | Line 1014 NOOPTFILES= | Line 1078 NOOPTFILES= |
1078 | NOOPTFLAGS= | NOOPTFLAGS= |
1079 | MPI= | MPI= |
1080 | MPIPATH= | MPIPATH= |
1081 | OMP= | |
1082 | OMPFLAG= | |
1083 | USE_R4= | |
1084 | TS= | TS= |
1085 | PAPIS= | PAPIS= |
1086 | PCLS= | |
1087 | FOOLAD= | FOOLAD= |
1088 | PAPI= | PAPI= |
1089 | PCL= | |
1090 | HPMT= | HPMT= |
1091 | GSL= | GSL= |
1092 | DEVEL= | |
1093 | HAVE_TEST_L= | HAVE_TEST_L= |
1094 | ||
1095 | # DEFINES checked by test compilation or command-line | # DEFINES checked by test compilation or command-line |
# | Line 1027 HAVE_SYSTEM= | Line 1097 HAVE_SYSTEM= |
1097 | HAVE_FDATE= | HAVE_FDATE= |
1098 | FC_NAMEMANGLE= | FC_NAMEMANGLE= |
1099 | HAVE_CLOC= | HAVE_CLOC= |
1100 | HAVE_SETRLSTK= | # HAVE_SETRLSTK= |
1101 | HAVE_STAT= | HAVE_STAT= |
1102 | HAVE_NETCDF= | HAVE_NETCDF= |
1103 | HAVE_ETIME= | HAVE_ETIME= |
# | Line 1075 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 CPP IEEE TS PAPIS PAPI HPMT GSL MPI JAM 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 " | 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 1106 quick list of options, use "genmake -h" | Line 1175 quick list of options, use "genmake -h" |
1175 | ||
1176 | EOF | EOF |
1177 | ||
1178 | #- clean-up previous genmake logfiles: | |
1179 | rm -f genmake_state genmake_*optfile genmake_warnings genmake_errors | |
1180 | ||
1181 | echo "=== Processing options files and arguments ===" | echo "=== Processing options files and arguments ===" |
1182 | gm_local="genmake_local" | gm_local="genmake_local" |
for i in . $MODS ; do | ||
if test -r $i/$gm_local ; then | ||
. $i/$gm_local | ||
break | ||
fi | ||
done | ||
1183 | printf " getting local config information: " | printf " getting local config information: " |
1184 | if test -f $gm_local ; then | if test -f $gm_local ; then |
1185 | echo "using $gm_local" | echo "using $gm_local" |
# | Line 1125 else | Line 1191 else |
1191 | fi | fi |
1192 | ||
1193 | #echo "$0::$1:$2:$3:$4:$5:$6:$7:" | #echo "$0::$1:$2:$3:$4:$5:$6:$7:" |
#OPTIONS= | ||
#n=0 | ||
#for i ; do | ||
# echo "$i $n" | ||
# setvar="OPTIONS[$n]='$i'" | ||
# # echo " $setvar" | ||
# eval "$setvar" | ||
# n=$(( $n + 1 )) | ||
#done | ||
1194 | #parse_options | #parse_options |
1195 | ac_prev= | ac_prev= |
1196 | for ac_option in "$@" ; do | for ac_option in "$@" ; do |
# | Line 1146 for ac_option in "$@" ; do | Line 1203 for ac_option in "$@" ; do |
1203 | ac_prev= | ac_prev= |
1204 | continue | continue |
1205 | fi | fi |
1206 | ||
1207 | ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` | ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` |
1208 | ||
1209 | case $ac_option in | case $ac_option in |
1210 | ||
1211 | -help | --help | -h | --h) | -help | --help | -h | --h) |
# | Line 1167 for ac_option in "$@" ; do | Line 1224 for ac_option in "$@" ; do |
1224 | AD_OPTFILE=$ac_optarg ;; | AD_OPTFILE=$ac_optarg ;; |
1225 | ||
1226 | -pdepend | --pdepend) | -pdepend | --pdepend) |
1227 | ac_prev=PDEPEND ;; | ac_prev=PKG_DEPEND ;; |
1228 | -pdepend=* | --pdepend=*) | -pdepend=* | --pdepend=*) |
1229 | PDEPEND=$ac_optarg ;; | PKG_DEPEND=$ac_optarg ;; |
1230 | ||
1231 | -pdefault | --pdefault) | -pgroups | --pgroups) |
1232 | ac_prev=PDEFAULT ;; | ac_prev=PKG_GROUPS ;; |
1233 | -pdefault=* | --pdefault=*) | -pgroups=* | --pgroups=*) |
1234 | PDEFAULT=$ac_optarg ;; | PKG_GROUPS=$ac_optarg ;; |
1235 | ||
1236 | -make | --make | -m | --m) | -make | --make | -m | --m) |
1237 | ac_prev=MAKE ;; | ac_prev=MAKE ;; |
# | Line 1258 for ac_option in "$@" ; do | Line 1315 for ac_option in "$@" ; do |
1315 | -noieee | --noieee) | -noieee | --noieee) |
1316 | IEEE= ;; | IEEE= ;; |
1317 | ||
1318 | -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4 ) | |
1319 | USE_R4=true ;; | |
1320 | ||
1321 | -ts | --ts) | -ts | --ts) |
1322 | TS=true ;; | TS=true ;; |
1323 | -papis | --papis) | -papis | --papis) |
1324 | PAPIS=true ;; | PAPIS=true ;; |
1325 | -pcls | --pcls) | |
1326 | PCLS=true ;; | |
1327 | -foolad | --foolad) | -foolad | --foolad) |
1328 | FOOLAD=true ;; | FOOLAD=true ;; |
1329 | -papi | --papi) | -papi | --papi) |
1330 | PAPI=true ;; | PAPI=true ;; |
1331 | -pcl | --pcl) | |
1332 | PCL=true ;; | |
1333 | -hpmt | --hpmt) | -hpmt | --hpmt) |
1334 | HPMT=true ;; | HPMT=true ;; |
1335 | ||
1336 | -gsl | --gsl) | -gsl | --gsl) |
1337 | GSL=true ;; | GSL=true ;; |
1338 | ||
1339 | -devel | --devel) | |
1340 | DEVEL=true ;; | |
1341 | ||
1342 | -mpi | --mpi) | -mpi | --mpi) |
1343 | MPI=true ;; | MPI=true ;; |
1344 | -mpi=* | --mpi=*) | -mpi=* | --mpi=*) |
1345 | MPIPATH=$ac_optarg | MPIPATH=$ac_optarg |
1346 | MPI=true ;; | MPI=true ;; |
1347 | ||
1348 | # -jam | --jam) | -omp | --omp) |
1349 | # JAM=1 ;; | OMP=true ;; |
1350 | # -nojam | --nojam) | -omp=* | --omp=*) |
1351 | # JAM=0 ;; | OMPFLAG=$ac_optarg |
1352 | OMP=true ;; | |
1353 | ||
1354 | -ds | --ds) | -ds | --ds) |
1355 | DUMPSTATE=t ;; | DUMPSTATE=t ;; |
# | Line 1313 for ac_option in "$@" ; do | Line 1381 for ac_option in "$@" ; do |
1381 | ;; | ;; |
1382 | ||
1383 | esac | esac |
1384 | ||
1385 | done | done |
1386 | ||
1387 | ||
1388 | if test -f ./.genmakerc ; then | if test -f ./.genmakerc ; then |
1389 | echo | echo |
1390 | echo "WARNING: genmake2 has detected a copy of the old-style \"./.genmakerc\"" | echo "WARNING: genmake2 has detected a copy of the old-style \"./.genmakerc\"" |
1391 | echo " file. This file format is no longer supported. Please see:" | echo " file. This file format is no longer supported. For directions on" |
1392 | echo | echo " how to setup and use the new \"genmake2\" script, please see:" |
1393 | echo " http://mitgcm.org/devel_HOWTO/" | echo " http://mitgcm.org/devel_HOWTO/" |
1394 | echo " and send an email to MITgcm-support@mitgcm.org if you need help." | |
1395 | echo "WARNING: ignore \"./.genmakerc\" and continue." | |
1396 | echo | echo |
echo " for directions on how to setup and use the new \"genmake2\" input" | ||
echo " files and send an email to MITgcm-support@mitgcm.org if you want help." | ||
echo | ||
1397 | fi | fi |
1398 | ||
1399 | # Find the MITgcm ${ROOTDIR} | # Find the MITgcm ${ROOTDIR} |
1400 | if test "x${ROOTDIR}" = x ; then | if test "x${ROOTDIR}" = x ; then |
1401 | tmp=`echo $PWD | sed -e 's/\// /g' | $AWK '{print $NR}'` | tmp=`echo $PWD | sed -e 's/\// /g' | $AWK '{print $NR}'` |
1402 | if test "x$tmp" = "xbin" -a -d ../model -a -d ../eesup -a -d ../pkg ; then | if test "x$tmp" = "xbin" -a -d ../model -a -d ../eesupp -a -d ../pkg ; then |
1403 | ROOTDIR=".." | ROOTDIR=".." |
1404 | else | else |
1405 | for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do | for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do |
# | Line 1357 if test ! -d ${ROOTDIR} ; then | Line 1424 if test ! -d ${ROOTDIR} ; then |
1424 | fi | fi |
1425 | ||
1426 | # Find the MITgcm ${THISVER} | # Find the MITgcm ${THISVER} |
1427 | if test -f "${ROOTDIR}/doc/tag-index" ; then | version_file="${ROOTDIR}/doc/tag-index" |
1428 | THISVER=`grep '^checkpoint' ${ROOTDIR}/doc/tag-index | head -1` | if test -f $version_file ; then |
1429 | THISVER=`$AWK '/^checkpoint/{print $1; exit}' $version_file` | |
1430 | #- remove ./BUILD_INFO.h file if older than version_file | |
1431 | if test -f ./BUILD_INFO.h -a ./BUILD_INFO.h -ot $version_file ; then | |
1432 | echo " remove ./BUILD_INFO.h (older than ${version_file})" | |
1433 | rm -f ./BUILD_INFO.h | |
1434 | fi | |
1435 | fi | fi |
1436 | ||
1437 | if test "x$MAKEFILE" = x ; then | if test "x$MAKEFILE" = x ; then |
# | Line 1514 if test ! "x$MPI" = x ; then | Line 1587 if test ! "x$MPI" = x ; then |
1587 | echo " Turning on MPI cpp macros" | echo " Turning on MPI cpp macros" |
1588 | DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI" | DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI" |
1589 | fi | fi |
1590 | if test ! "x$OMP" = x ; then | |
1591 | echo " Add OMPFLAG and turn on OpenMP cpp macros" | |
1592 | FFLAGS="$FFLAGS $OMPFLAG" | |
1593 | F90FLAGS="$F90FLAGS $OMPFLAG" | |
1594 | DEFINES="$DEFINES -DUSE_OMP_THREADING" | |
1595 | fi | |
1596 | ||
1597 | if test ! "x$USE_R4" = x ; then | |
1598 | echo " Turning on LET_RS_BE_REAL4 cpp flag" | |
1599 | DEFINES="$DEFINES -DLET_RS_BE_REAL4" | |
1600 | fi | |
1601 | ||
1602 | if test ! "x$TS" = x ; then | if test ! "x$TS" = x ; then |
1603 | echo " Turning on timing per timestep" | echo " Turning on timing per timestep" |
# | Line 1522 if test ! "x$TS" = x ; then | Line 1606 if test ! "x$TS" = x ; then |
1606 | else | else |
1607 | DEFINES="$DEFINES -DTIME_PER_TIMESTEP" | DEFINES="$DEFINES -DTIME_PER_TIMESTEP" |
1608 | fi | fi |
1609 | PACKAGES="$PACKAGES showflops" | |
1610 | fi | fi |
1611 | if test ! "x$PAPIS" = x ; then | if test ! "x$PAPIS" = x ; then |
1612 | echo " Turning on PAPI flop summary per timestep" | echo " Turning on PAPI flop summary per timestep" |
# | Line 1533 if test ! "x$PAPIS" = x ; then | Line 1618 if test ! "x$PAPIS" = x ; then |
1618 | fi | fi |
1619 | INCLUDES="$INCLUDES $PAPIINC" | INCLUDES="$INCLUDES $PAPIINC" |
1620 | LIBS="$LIBS $PAPILIB" | LIBS="$LIBS $PAPILIB" |
1621 | PACKAGES="$PACKAGES showflops" | |
1622 | fi | |
1623 | if test ! "x$PCLS" = x ; then | |
1624 | echo " Turning on PCL counter summary per timestep" | |
1625 | echo " Please make sure PCLINC, PCLLIB are defined" | |
1626 | if test ! "x$FOOLAD" = x ; then | |
1627 | DEFINES="$DEFINES -DUSE_PCL_FLOPS_SFP" | |
1628 | else | |
1629 | DEFINES="$DEFINES -DUSE_PCL_FLOPS" | |
1630 | fi | |
1631 | INCLUDES="$INCLUDES $PCLINC" | |
1632 | LIBS="$LIBS $PCLLIB" | |
1633 | PACKAGES="$PACKAGES showflops" | |
1634 | fi | fi |
1635 | if test ! "x$PAPI" = x ; then | if test ! "x$PAPI" = x ; then |
1636 | if test ! "x$PAPIS" = x ; then | if test ! "x$PAPIS" = x ; then |
# | Line 1546 if test ! "x$PAPI" = x ; then | Line 1644 if test ! "x$PAPI" = x ; then |
1644 | LIBS="$LIBS $PAPILIB" | LIBS="$LIBS $PAPILIB" |
1645 | fi | fi |
1646 | fi | fi |
1647 | if test ! "x$PCL" = x ; then | |
1648 | if test ! "x$PCLS" = x ; then | |
1649 | echo " PCL performance analysis and flop summary per timestep cannot co-exist!" | |
1650 | echo " Sticking with PCL flop summary per timestep!" | |
1651 | else | |
1652 | echo " Turning on performance analysis with PCL" | |
1653 | echo " Please make sure PCLINC, PCLLIB are defined" | |
1654 | DEFINES="$DEFINES -DUSE_PCL" | |
1655 | INCLUDES="$INCLUDES $PCLINC" | |
1656 | LIBS="$LIBS $PCLLIB" | |
1657 | fi | |
1658 | fi | |
1659 | if test ! "x$HPMT" = x ; then | if test ! "x$HPMT" = x ; then |
1660 | if test ! "x$PAPI" = x ; then | if test ! "x$PAPI" = x ; then |
1661 | echo " PAPI and the HPM Toolkit cannot co-exist!" | echo " PAPI and the HPM Toolkit cannot co-exist!" |
1662 | echo " Sticking with PAPI!" | echo " Sticking with PAPI!" |
1663 | else if test ! "x$PCL" = x ; then | |
1664 | echo " PCL and the HPM Toolkit cannot co-exist!" | |
1665 | echo " Sticking with PCL!" | |
1666 | else | else |
1667 | echo " Turning on performance analysis with the HPM Toolkit" | echo " Turning on performance analysis with the HPM Toolkit" |
1668 | echo " Please make sure HPMTINC, HPMTLIB are defined" | echo " Please make sure HPMTINC, HPMTLIB are defined" |
# | Line 1557 if test ! "x$HPMT" = x ; then | Line 1670 if test ! "x$HPMT" = x ; then |
1670 | INCLUDES="$INCLUDES $HPMTINC" | INCLUDES="$INCLUDES $HPMTINC" |
1671 | LIBS="$LIBS $HPMTLIB" | LIBS="$LIBS $HPMTLIB" |
1672 | fi | fi |
1673 | fi | |
1674 | fi | fi |
1675 | if test ! "x$GSL" = x ; then | if test ! "x$GSL" = x ; then |
1676 | echo " Turning on use of GSL to control floating point calculations" | echo " Turning on use of GSL to control floating point calculations" |
# | Line 1565 if test ! "x$GSL" = x ; then | Line 1679 if test ! "x$GSL" = x ; then |
1679 | INCLUDES="$INCLUDES $GSLINC" | INCLUDES="$INCLUDES $GSLINC" |
1680 | LIBS="$LIBS $GSLLIB" | LIBS="$LIBS $GSLLIB" |
1681 | fi | fi |
1682 | #- if USE_EXTENDED_SRC is set, add EXTENDED_SRC_FLAG to FFLAGS : | |
1683 | if test ! "x$USE_EXTENDED_SRC" = x ; then | |
1684 | FFLAGS="$FFLAGS $EXTENDED_SRC_FLAG" | |
1685 | F90FIXEDFORMAT="$F90FIXEDFORMAT $EXTENDED_SRC_FLAG" | |
1686 | fi | |
1687 | ||
1688 | printf "\n=== Checking system libraries ===\n" | printf "\n=== Checking system libraries ===\n" |
1689 | printf " Do we have the system() command using $FC... " | printf " Do we have the system() command using $FC... " |
# | Line 1644 rm -f genmake_t* | Line 1763 rm -f genmake_t* |
1763 | ||
1764 | printf " Can we unlimit the stack size using $FC... " | printf " Can we unlimit the stack size using $FC... " |
1765 | check_HAVE_SETRLSTK | check_HAVE_SETRLSTK |
1766 | if test "x$HAVE_SETRLSTK" != x ; then | if test "x$HAVE_SETRLSTK" = xt ; then |
1767 | echo "yes" | echo "yes" |
1768 | else | else |
1769 | echo "no" | echo "no" |
# | Line 1653 rm -f genmake_t* | Line 1772 rm -f genmake_t* |
1772 | ||
1773 | printf " Can we register a signal handler using $FC... " | printf " Can we register a signal handler using $FC... " |
1774 | check_HAVE_SIGREG | check_HAVE_SIGREG |
1775 | if test "x$HAVE_SIGREG" != x ; then | if test "x$HAVE_SIGREG" = xt ; then |
1776 | echo "yes" | echo "yes" |
1777 | else | else |
1778 | echo "no" | echo "no" |
# | Line 1687 fi | Line 1806 fi |
1806 | ||
1807 | ||
1808 | printf "\n=== Setting defaults ===\n" | printf "\n=== Setting defaults ===\n" |
1809 | printf " Adding MODS directories: " | printf " Adding MODS directories: " |
1810 | for d in $MODS ; do | for d in $MODS ; do |
1811 | if test ! -d $d ; then | if test ! -d $d ; then |
1812 | echo | echo |
1813 | echo "Error: MODS directory \"$d\" not found!" | echo "Error: MODS directory \"$d\" not found!" |
1814 | exit 1 | exit 1 |
1815 | else | else |
1816 | printf " $d" | printf "$d " |
1817 | SOURCEDIRS="$SOURCEDIRS $d" | SOURCEDIRS="$SOURCEDIRS $d" |
1818 | INCLUDEDIRS="$INCLUDEDIRS $d" | INCLUDEDIRS="$INCLUDEDIRS $d" |
1819 | fi | fi |
# | Line 1743 ERROR: neither of the two default script | Line 1862 ERROR: neither of the two default script |
1862 | ${TOOLSDIR}/set64bitConst.sh | ${TOOLSDIR}/set64bitConst.sh |
1863 | ${TOOLSDIR}/set64bitConst.csh | ${TOOLSDIR}/set64bitConst.csh |
1864 | ||
1865 | are working so please check paths or specify (with \$S64) a | are working so please check paths or specify (with \$S64) a |
1866 | working version of this script. | working version of this script. |
1867 | ||
1868 | EOF | EOF |
# | Line 1755 THIS_SCRIPT=`echo ${0} | sed 's:'$TOOLSD | Line 1874 THIS_SCRIPT=`echo ${0} | sed 's:'$TOOLSD |
1874 | ||
1875 | EXECUTABLE=${EXECUTABLE:-mitgcmuv} | EXECUTABLE=${EXECUTABLE:-mitgcmuv} |
1876 | ||
1877 | # Set Standard Code Directories: | |
1878 | if test "x$STANDARDDIRS" = xUSE_THE_DEFAULT ; then | |
1879 | STANDARDDIRS="eesupp model" | |
1880 | fi | |
1881 | # if model in Standard-Code-Dir, add eesupp (needed to compile model) | |
1882 | echo " $STANDARDDIRS " | grep ' model ' > /dev/null 2>&1 | |
1883 | ckM=$? | |
1884 | echo " $STANDARDDIRS " | grep ' eesupp ' > /dev/null 2>&1 | |
1885 | ckE=$? | |
1886 | if test $ckM = 0 -a $ckE = 1 ; then | |
1887 | STANDARDDIRS="$STANDARDDIRS eesupp" | |
1888 | fi | |
1889 | ||
1890 | # We have a special set of source files in eesupp/src which are | # We have a special set of source files in eesupp/src which are |
1891 | # generated from some template source files. We'll make them first so | # generated from some template source files. We'll make them first so |
1892 | # they appear as regular source code | # they appear as regular source code |
1893 | if test -r $ROOTDIR"/eesupp/src/Makefile" ; then | if test -r $ROOTDIR"/eesupp/src/Makefile" ; then |
1894 | echo " Making source files in eesupp from templates" | echo " Making source files in eesupp from templates" |
1895 | ( cd $ROOTDIR"/eesupp/src/" && $MAKE ) > make_eesupp.errors 2>&1 | ( cd $ROOTDIR"/eesupp/src/" && $MAKE clean_old && $MAKE \ |
1896 | ) > make_eesupp.errors 2>&1 | |
1897 | RETVAL=$? | RETVAL=$? |
1898 | if test "x${RETVAL}" = x0 ; then | if test "x${RETVAL}" = x0 ; then |
1899 | rm -f make_eesupp.errors | rm -f make_eesupp.errors |
# | Line 1771 if test -r $ROOTDIR"/eesupp/src/Makefile | Line 1904 if test -r $ROOTDIR"/eesupp/src/Makefile |
1904 | fi | fi |
1905 | fi | fi |
1906 | ||
1907 | #same for exch2 | #same for pkg/exch2 and pkg/regrid |
1908 | if test -r $ROOTDIR"/pkg/exch2/Makefile" ; then | for pdir in exch2 regrid ; do |
1909 | echo " Making source files in exch2 from templates" | if test -r $ROOTDIR"/pkg/${pdir}/Makefile" ; then |
1910 | ( cd $ROOTDIR"/pkg/exch2/" && $MAKE ) > make_exch2.errors 2>&1 | echo " Making source files in pkg/${pdir} from templates" |
1911 | RETVAL=$? | ( cd $ROOTDIR"/pkg/"${pdir} && $MAKE clean_old && $MAKE \ |
1912 | if test "x${RETVAL}" = x0 ; then | ) > make_${pdir}.errors 2>&1 |
1913 | rm -f make_exch2.errors | RETVAL=$? |
1914 | else | if test "x${RETVAL}" = x0 ; then |
1915 | echo "Error: problem encountered while building source files in exch2:" | rm -f make_${pdir}.errors |
1916 | cat make_exch2.errors 1>&2 | else |
1917 | exit 1 | echo "Error: problem encountered while building source files in pkg/${pdir}:" |
1918 | cat make_${pdir}.errors 1>&2 | |
1919 | exit 1 | |
1920 | fi | |
1921 | fi | fi |
1922 | fi | done |
1923 | ||
1924 | printf "\n=== Determining package settings ===\n" | printf "\n=== Determining package settings ===\n" |
1925 | if test "x${PDEPEND}" = x ; then | if test "x${PKG_DEPEND}" = x ; then |
1926 | tmp=$ROOTDIR"/pkg/pkg_depend" | tmp=$ROOTDIR"/pkg/pkg_depend" |
1927 | if test -r $tmp ; then | if test -r $tmp ; then PKG_DEPEND=$tmp ; fi |
1928 | PDEPEND=$tmp | fi |
1929 | else | if test "x${PKG_DEPEND}" = x ; then |
1930 | echo "Warning: No package dependency information was specified." | echo "Warning: No package dependency information was specified." |
1931 | echo " Please check that ROOTDIR/pkg/pkg_depend exists." | echo " Please check that ROOTDIR/pkg/pkg_depend exists." |
fi | ||
1932 | else | else |
1933 | if test ! -r ${PDEPEND} ; then | if test ! -r ${PKG_DEPEND} ; then |
1934 | echo "Error: can't read package dependency info from PDEPEND=\"$PDEPEND\"" | echo "Error: can't read package dependency info from PKG_DEPEND=\"$PKG_DEPEND\"" |
1935 | exit 1 | exit 1 |
1936 | fi | fi |
1937 | echo " getting package dependency info from $PKG_DEPEND" | |
1938 | # Strip the comments and then convert the dependency file into arrays: PNAME, DNAME | |
1939 | get_pdepend_list $PKG_DEPEND | |
1940 | fi | fi |
1941 | echo " getting package dependency info from $PDEPEND" | |
1942 | # Strip the comments and then convert the dependency file into | # A default package groups file "$ROOTDIR/pkg/pkg_groups" is provided |
1943 | # two arrays: PNAME, DNAME | # to define the "default_pkg_list" and package groups (for convenience, one |
1944 | cat $PDEPEND | sed -e 's/#.*$//g' \ | # can specify a group of packages using names like "ocean" and "atmosphere"). |
1945 | | $AWK 'BEGIN{nn=-1;} (NF>0){ for(i=2;i<=NF;i++){nn++; print "PNAME_"nn"="$1"\nDNAME_"nn"="$i}} END{print "nname="nn}' \ | if test "x${PKG_GROUPS}" = x ; then |
1946 | > ./.pd_tmp | tmp=$ROOTDIR"/pkg/pkg_groups" |
1947 | RETVAL=$? | if test -r $tmp ; then PKG_GROUPS=$tmp ; fi |
1948 | if test ! "x${RETVAL}" = x0 ; then | fi |
1949 | echo "Error: unable to parse package dependencies -- please check PDEPEND=\"$PDEPEND\"" | if test "x${PKG_GROUPS}" = x ; then |
1950 | exit 1 | echo "Warning: No package groups information was specified." |
1951 | echo " Please check that ROOTDIR/pkg/pkg_groups exists." | |
1952 | else | |
1953 | if test ! -r ${PKG_GROUPS} ; then | |
1954 | echo "Error: can't read package groups info from PKG_GROUPS=\"$PKG_GROUPS\"" | |
1955 | exit 1 | |
1956 | fi | |
1957 | echo " getting package groups info from $PKG_GROUPS" | |
1958 | fi | fi |
. ./.pd_tmp | ||
rm -f ./.pd_tmp | ||
1959 | ||
1960 | # Search for default packages. Note that a "$ROOTDIR/pkg/pkg_groups" | # Search for packages to compile. |
1961 | # file should eventually be added so that, for convenience, one can | echo " checking list of packages to compile:" |
1962 | # specify groups of packages using names like "ocean" and "atmosphere". | PKG_LIST= |
1963 | echo " checking default package list: " | if test "x${PKG_LIST}" = x ; then |
if test "x${PDEFAULT}" = x ; then | ||
1964 | for i in "." $MODS ; do | for i in "." $MODS ; do |
1965 | if test -r $i"/packages.conf" ; then | if test -r $i"/packages.conf" ; then |
1966 | PDEFAULT=$i"/packages.conf" | PKG_LIST=$i"/packages.conf" |
1967 | break | break |
1968 | fi | fi |
1969 | done | done |
1970 | fi | fi |
1971 | if test "x${PDEFAULT}" = x ; then | if test "x${PKG_LIST}" = x ; then |
1972 | PDEFAULT="$ROOTDIR/pkg/pkg_default" | pkg_list='default_pkg_list' |
1973 | fi | if test "x${PKG_GROUPS}" = x ; then |
1974 | if test "x${PDEFAULT}" = xNONE ; then | echo "Error: need package groups info to expand pkg_list=\"$pkg_list\"" |
1975 | echo " default packages file disabled" | exit 1 |
1976 | fi | |
1977 | else | else |
1978 | if test ! -r $PDEFAULT ; then | if test ! -r $PKG_LIST ; then |
1979 | echo "Warning: can't read default packages from PDEFAULT=\"$PDEFAULT\"" | echo "Error: can't read package list from PKG_LIST=\"$PKG_LIST\"" |
1980 | exit 1 | |
1981 | else | else |
1982 | echo " using PDEFAULT=\"$PDEFAULT\"" | echo " using PKG_LIST=\"$PKG_LIST\"" |
1983 | # Strip the comments and add all the names | # Strip the comments and add all the names |
1984 | 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}'` |
1985 | RETVAL=$? | RETVAL=$? |
1986 | if test "x${RETVAL}" != x0 ; then | if test "x${RETVAL}" != x0 ; then |
1987 | printf "Error: can't parse default package list " | printf "Error: can't parse package list " |
1988 | echo "-- please check PDEFAULT=\"$PDEFAULT\"" | echo "-- please check PKG_LIST=\"$PKG_LIST\"" |
1989 | exit 1 | exit 1 |
1990 | 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" | ||
1991 | fi | fi |
1992 | fi | fi |
1993 | for i in $pkg_list ; do | |
1994 | PACKAGES="$PACKAGES $i" | |
1995 | done | |
1996 | echo " before group expansion packages are:$PACKAGES" | |
1997 | if test "x${PKG_GROUPS}" != x ; then | |
1998 | RET=1 | |
1999 | while test $RET = 1 ; do expand_pkg_groups; RET=$?; done | |
2000 | echo " after group expansion packages are: $PACKAGES" | |
2001 | fi | |
2002 | ||
2003 | echo " applying DISABLE settings" | echo " applying DISABLE settings" |
2004 | echo "" > ./.tmp_pack | |
2005 | for i in $PACKAGES ; do | for i in $PACKAGES ; do |
2006 | echo $i >> ./.tmp_pack | echo $i >> ./.tmp_pack |
2007 | done | done |
# | Line 1882 PACKAGES="$PACKAGES $ENABLE" | Line 2029 PACKAGES="$PACKAGES $ENABLE" |
2029 | for i in $PACKAGES ; do | for i in $PACKAGES ; do |
2030 | j=`echo $i | sed 's/[-+]//'` | j=`echo $i | sed 's/[-+]//'` |
2031 | if test ! -d "$ROOTDIR/pkg/$j" ; then | if test ! -d "$ROOTDIR/pkg/$j" ; then |
2032 | echo "Error: can't find package $i at \"$ROOTDIR/pkg/$i\"" | echo "Error: dir '$ROOTDIR/pkg/$i' missing for package '$i'" |
2033 | exit 1 | exit 1 |
2034 | fi | fi |
2035 | echo $i >> ./.tmp_pack | echo $i >> ./.tmp_pack |
# | Line 1892 for i in `grep -v "-" ./.tmp_pack | sort | Line 2039 for i in `grep -v "-" ./.tmp_pack | sort |
2039 | PACKAGES="$PACKAGES $i" | PACKAGES="$PACKAGES $i" |
2040 | done | done |
2041 | rm -f ./.tmp_pack | rm -f ./.tmp_pack |
2042 | echo " packages are: $PACKAGES" | echo " packages are: $PACKAGES" |
2043 | ||
2044 | # Check availability of NetCDF and then either build the MNC template | # Check for package MNC: if NetCDF is available, then build the MNC |
2045 | # files or delete mnc from the list of available packages. | # template files ; otherwise, delete mnc from the list of packages. |
2046 | echo $PACKAGES | grep ' mnc ' > /dev/null 2>&1 | echo " $PACKAGES " | grep ' mnc ' > /dev/null 2>&1 |
2047 | RETVAL=$? | mnc_in=$? |
2048 | if test "x$RETVAL" = x0 ; then | if test "x$HAVE_NETCDF" != xt ; then |
2049 | if test "x$HAVE_NETCDF" != xt ; then | if test "x$mnc_in" = x0 ; then |
2050 | cat <<EOF | cat <<EOF |
2051 | ********************************************************************* | ********************************************************************* |
2052 | WARNING: the "mnc" package was enabled but tests failed to compile | WARNING: the "mnc" package was enabled but tests failed to compile |
2053 | NetCDF applications. Please check that: | NetCDF applications. Please check that: |
2054 | ||
2055 | 1) NetCDF is correctly installed for this compiler and | 1) NetCDF is correctly installed for this compiler and |
2056 | 2) the LIBS variable (within the "optfile") specifies the correct | 2) the LIBS variable (within the "optfile") specifies the correct |
2057 | NetCDF library to link against. | NetCDF library to link against. |
2058 | ||
2059 | Due to this failure, the "mnc" package is now DISABLED. | Due to this failure, the "mnc" package is now DISABLED. |
2060 | ********************************************************************* | ********************************************************************* |
2061 | EOF | EOF |
2062 | PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'` | PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'` |
2063 | DISABLE="$DISABLE mnc" | DISABLE="$DISABLE mnc" |
2064 | else | else |
2065 | ( 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 |
2066 | RETVAL=$? | DISABLE="$DISABLE mnc" |
2067 | if test "x${RETVAL}" = x0 ; then | fi |
2068 | rm -f make_mnc.errors | else |
2069 | # we have NetCDF, we try to build MNC template files | |
2070 | ( cd $ROOTDIR"/pkg/mnc" && $MAKE testclean && $MAKE templates ) > make_mnc.errors 2>&1 | |
2071 | RETVAL=$? | |
2072 | if test "x${RETVAL}" = x0 ; then | |
2073 | rm -f make_mnc.errors | |
2074 | else | |
2075 | echo "Error: problem encountered while building source files in pkg/mnc:" | |
2076 | cat make_mnc.errors 1>&2 | |
2077 | if test "x$mnc_in" = x0 ; then | |
2078 | exit 1 | |
2079 | else | else |
2080 | echo "Error: problem encountered while building source files in pkg/mnc:" | DISABLE="$DISABLE mnc" |
cat make_mnc.errors 1>&2 | ||
exit 1 | ||
2081 | fi | fi |
2082 | fi | fi |
2083 | fi | fi |
2084 | ||
2085 | echo " applying package dependency rules" | # Check for package PROFILES: if NetCDF is not available, |
2086 | ck= | # then delete profiles from the list of available packages. |
2087 | while test "x$ck" != xtt ; do | if test "x$HAVE_NETCDF" != xt ; then |
2088 | echo " $PACKAGES " | grep ' profiles ' > /dev/null 2>&1 | |
2089 | RETVAL=$? | |
2090 | if test "x$RETVAL" = x0 ; then | |
2091 | cat <<EOF | |
2092 | ********************************************************************* | |
2093 | WARNING: the "profiles" package was enabled but tests failed to | |
2094 | compile NetCDF applications. Please check that: | |
2095 | ||
2096 | 1) NetCDF is correctly installed for this compiler and | |
2097 | 2) the LIBS variable (within the "optfile") specifies the correct | |
2098 | NetCDF library to link against. | |
2099 | ||
2100 | Due to this failure, the "profiles" package is now DISABLED. | |
2101 | ********************************************************************* | |
2102 | EOF | |
2103 | PACKAGES=`echo $PACKAGES | sed -e 's/profiles//g'` | |
2104 | DISABLE="$DISABLE profiles" | |
2105 | else | |
2106 | # this prevent to add profiles (due to pdepend rules) if not available | |
2107 | DISABLE="$DISABLE profiles" | |
2108 | fi | |
2109 | fi | |
2110 | ||
2111 | if test "x${PKG_DEPEND}" != x ; then | |
2112 | echo " applying package dependency rules" | |
2113 | ck= | |
2114 | while test "x$ck" != xtt ; do | |
2115 | i=0 | i=0 |
2116 | # rtot=${#PNAME[@]} | # rtot=${#PNAME[@]} |
2117 | rtot=$nname | rtot=$nname |
2118 | while test $i -lt $rtot ; do | while test $i -le $rtot ; do |
2119 | ||
2120 | # Is $pname in the current $PACKAGES list? | # Is $pname in the current $PACKAGES list? |
2121 | # pname=${PNAME[$i]} | # pname=${PNAME[$i]} |
# | Line 1947 while test "x$ck" != xtt ; do | Line 2127 while test "x$ck" != xtt ; do |
2127 | pin="t" | pin="t" |
2128 | fi | fi |
2129 | done | done |
2130 | # or in the current $STANDARDDIRS list? | |
2131 | for p in $STANDARDDIRS ; do | |
2132 | if test "x$p" = "x$pname" ; then pin="t" ; fi | |
2133 | done | |
2134 | ||
2135 | # Is the DNAME entry a (+) or (-) rule ? | # Is the DNAME entry a (+) or (-) rule ? |
2136 | tmp="dname=\"\$DNAME_$i\"" | tmp="dname=\"\$DNAME_$i\"" |
# | Line 1969 while test "x$ck" != xtt ; do | Line 2153 while test "x$ck" != xtt ; do |
2153 | ||
2154 | # Do we need to add $dname according to the dependency rules? | # Do we need to add $dname according to the dependency rules? |
2155 | if test "x$pin" = xt -a "x$plus" = "x+" -a "x$din" = xf ; then | if test "x$pin" = xt -a "x$plus" = "x+" -a "x$din" = xf ; then |
2156 | #echo " " $pname ": need to add :" $dname | |
2157 | in_dis="f" | in_dis="f" |
2158 | for dis in $DISABLE ; do | for dis in $DISABLE ; do |
2159 | if test "x$dis" = "x$dname" ; then | if test "x$dis" = "x$dname" ; then |
# | Line 1989 while test "x$ck" != xtt ; do | Line 2174 while test "x$ck" != xtt ; do |
2174 | # 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? |
2175 | 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 |
2176 | echo "Error: can't satisfy package dependencies:" | echo "Error: can't satisfy package dependencies:" |
2177 | echo " \"$pname\" was requested but is disallowed by" | echo " \"$pname\" was requested but is disallowed by" |
2178 | echo " the dependency rules for \"$dname\"" | echo " the dependency rules for \"$dname\"" |
2179 | exit 1 | exit 1 |
2180 | fi | fi |
# | Line 1997 while test "x$ck" != xtt ; do | Line 2182 while test "x$ck" != xtt ; do |
2182 | #i=$(( $i + 1 )) | #i=$(( $i + 1 )) |
2183 | done | done |
2184 | ck=$ck"t" | ck=$ck"t" |
2185 | done | done |
2186 | echo " packages are: $PACKAGES" | echo " packages are: $PACKAGES" |
2187 | fi | |
2188 | for i in $PACKAGES ; do | for i in $PACKAGES ; do |
2189 | adr="$ROOTDIR/pkg/$i" | adr="$ROOTDIR/pkg/$i" |
2190 | if test -d $adr ; then | if test -d $adr ; then |
# | Line 2015 done | Line 2201 done |
2201 | ||
2202 | # Create a list of #define and #undef to enable/disable packages | # Create a list of #define and #undef to enable/disable packages |
2203 | PACKAGES_DOT_H=PACKAGES_CONFIG.h | PACKAGES_DOT_H=PACKAGES_CONFIG.h |
2204 | # 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 |
2205 | # 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 |
2206 | # file would eventually be split up so that all package-related #define | # file would eventually be split up so that all package-related #define |
2207 | # statements could be separated and handled only by genmake. | # statements could be separated and handled only by genmake. |
2208 | names=`ls -1 "$ROOTDIR/pkg"` | names=`ls -1 "$ROOTDIR/pkg"` |
# | Line 2044 for i in $PACKAGES ; do | Line 2230 for i in $PACKAGES ; do |
2230 | #eh3 DEFINES="$DEFINES -D$def" | #eh3 DEFINES="$DEFINES -D$def" |
2231 | ||
2232 | #EH3 WARNING : This is an UGLY HACK that needs to be removed!!! | #EH3 WARNING : This is an UGLY HACK that needs to be removed!!! |
2233 | case $i in | case $i in |
2234 | aim_v23) | aim_v23) |
2235 | ENABLED_PACKAGES="$ENABLED_PACKAGES -DALLOW_AIM" | ENABLED_PACKAGES="$ENABLED_PACKAGES -DALLOW_AIM" |
2236 | echo "Warning: ALLOW_AIM is set to enable aim_v23." | echo "Warning: ALLOW_AIM is set to enable aim_v23." |
# | Line 2054 for i in $PACKAGES ; do | Line 2240 for i in $PACKAGES ; do |
2240 | ||
2241 | done | done |
2242 | ||
2243 | echo " Adding STANDARDDIRS" | echo " Adding STANDARDDIRS='$STANDARDDIRS'" |
2244 | BUILDDIR=${BUILDDIR:-.} | BUILDDIR=${BUILDDIR:-.} |
if test "x$STANDARDDIRS" = xUSE_THE_DEFAULT ; then | ||
STANDARDDIRS="eesupp model" | ||
fi | ||
2245 | if test "x$STANDARDDIRS" != x ; then | if test "x$STANDARDDIRS" != x ; then |
2246 | for d in $STANDARDDIRS ; do | for d in $STANDARDDIRS ; do |
2247 | adr="$ROOTDIR/$d/src" | adr="$ROOTDIR/$d/src" |
# | Line 2113 fi | Line 2296 fi |
2296 | ||
2297 | # Here, we build the list of files to be "run through" the adjoint | # Here, we build the list of files to be "run through" the adjoint |
2298 | # compiler. | # compiler. |
2299 | if test -f ./ad_files ; then | if test -f ./adSrcFiles.tmp ; then |
2300 | rm -f ./ad_files | rm -f ./adSrcFiles.tmp |
2301 | fi | fi |
2302 | echo " Creating the list of files for the adjoint compiler." | echo " Creating the list of files for the adjoint compiler." |
2303 | touch adSrcFiles.tmp | |
2304 | for i in $SOURCEDIRS ; do | for i in $SOURCEDIRS ; do |
2305 | list_files=`( cd $i && ls -1 *.list 2>/dev/null )` | list_files=`( cd $i && ls -1 *.list 2>/dev/null )` |
2306 | for j in $list_files ; do | for j in $list_files ; do |
2307 | cat $i/$j >> ad_files | cat $i/$j >> adSrcFiles.tmp |
2308 | done | done |
2309 | done | done |
2310 | if test ! "x"$FS = "x.f" ; then | if test ! "x"$FS = "x.f" ; then |
2311 | cat ad_files | sed -e "s/\.f/.$FS/g" > ad_files_f | cat adSrcFiles.tmp | sed -e "s/\.f/.$FS/g" > adSrcFiles.tmp_f |
2312 | mv -f ad_files_f ad_files | mv -f adSrcFiles.tmp_f adSrcFiles.tmp |
2313 | fi | fi |
2314 | ||
2315 | echo | echo |
# | Line 2149 if test ! "x$DIVA" = x ; then | Line 2333 if test ! "x$DIVA" = x ; then |
2333 | fi | fi |
2334 | MPIINCLUDEDIR='$MPIHOME/include' | MPIINCLUDEDIR='$MPIHOME/include' |
2335 | fi | fi |
2336 | ||
2337 | if test -r $MPIINCLUDEDIR/mpif.h ; then | if test -r $MPIINCLUDEDIR/mpif.h ; then |
2338 | for i in $MPI_HEADER_FILES; do | for i in $MPI_HEADER_FILES; do |
2339 | cp -p $MPIINCLUDEDIR/$i ./mpi_headers | cp -p $MPIINCLUDEDIR/$i ./mpi_headers |
# | Line 2158 if test ! "x$DIVA" = x ; then | Line 2342 if test ! "x$DIVA" = x ; then |
2342 | perl -i -pe 's/MPI_DISPLACEMENT_CURRENT=-1_8/MPI_DISPLACEMENT_CURRENT=-1/g' mpi_headers/mpif.h | perl -i -pe 's/MPI_DISPLACEMENT_CURRENT=-1_8/MPI_DISPLACEMENT_CURRENT=-1/g' mpi_headers/mpif.h |
2343 | else | else |
2344 | echo " We cannot create a copy of mpif.h!" | echo " We cannot create a copy of mpif.h!" |
2345 | exit -1 | # exit -1 |
2346 | fi | fi |
2347 | fi | fi |
2348 | ||
# | Line 2183 if test ! -r ".links.tmp/foo" ; then | Line 2367 if test ! -r ".links.tmp/foo" ; then |
2367 | exit 1 | exit 1 |
2368 | fi | fi |
2369 | rm -f .links.tmp/foo | rm -f .links.tmp/foo |
2370 | ||
2371 | if test "x$OPENAD" != x ; then | |
2372 | OAD_DONT_COMPILE="/dev/null" | |
2373 | OAD_DONT_TRANSFORM="/dev/null" | |
2374 | OAD_KEEP_ORIGINAL="/dev/null" | |
2375 | OAD_CB2M_FILES="/dev/null" | |
2376 | echo " looking for dontCompile file: " | |
2377 | for i in "." $MODS ; do | |
2378 | if test -r $i"/dontCompile" ; then | |
2379 | OAD_DONT_COMPILE=$i"/dontCompile" | |
2380 | echo " found $OAD_DONT_COMPILE" | |
2381 | break | |
2382 | fi | |
2383 | done | |
2384 | echo " looking for dontTransform file: " | |
2385 | for i in "." $MODS ; do | |
2386 | if test -r $i"/dontTransform" ; then | |
2387 | OAD_DONT_TRANSFORM=$i"/dontTransform" | |
2388 | echo " found $OAD_DONT_TRANSFORM" | |
2389 | break | |
2390 | fi | |
2391 | done | |
2392 | echo " looking for keepOriginal file: " | |
2393 | for i in "." $MODS ; do | |
2394 | if test -r $i"/keepOriginal" ; then | |
2395 | OAD_KEEP_ORIGINAL=$i"/keepOriginal" | |
2396 | echo " found $OAD_KEEP_ORIGINAL" | |
2397 | break | |
2398 | fi | |
2399 | done | |
2400 | echo " looking for cb2mFiles: " | |
2401 | for i in "." $MODS ; do | |
2402 | if test -r $i"/cb2mFiles" ; then | |
2403 | OAD_CB2M_FILES=$i"/cb2mFiles" | |
2404 | echo " found $OAD_CB2M_FILES" | |
2405 | break | |
2406 | fi | |
2407 | done | |
2408 | echo " OpenAD exceptions: " | |
2409 | fi | |
2410 | ||
2411 | echo "# This section creates symbolic links" > srclinks.tmp | echo "# This section creates symbolic links" > srclinks.tmp |
2412 | echo "" >> srclinks.tmp | echo "" >> srclinks.tmp |
2413 | printf 'SRCFILES = ' > srclist.inc | printf 'F77_SRC_FILES = ' > F77srclist.tmp |
2414 | printf 'CSRCFILES = ' > csrclist.inc | printf 'NON_AD_F77_SRC_FILES = ' > nonADF77srclist.tmp |
2415 | printf 'F90SRCFILES = ' > f90srclist.inc | printf 'C_SRC_FILES = ' > csrclist.tmp |
2416 | printf 'HEADERFILES = ' > hlist.inc | printf 'F90_SRC_FILES = ' > F90srclist.tmp |
2417 | printf 'AD_FLOW_FILES = ' > ad_flow_files.inc | printf 'H_SRC_FILES = ' > hsrclist.tmp |
2418 | printf 'AD_FLOW_FILES = ' > ad_flow_files.tmp | |
2419 | alldirs="$SOURCEDIRS $INCLUDEDIRS ." | alldirs="$SOURCEDIRS $INCLUDEDIRS ." |
2420 | for d in $alldirs ; do | for d in $alldirs ; do |
2421 | deplist= | deplist= |
2422 | sfiles=`( cd $d; echo *.[h,c,F] *.flow )` | sfiles=`( cd $d; echo *.[h,c,F] *.flow )` |
2423 | sfiles=`( echo $sfiles; cd $d; echo *.F90 )` | sfiles=`( echo $sfiles; cd $d; echo *.F90 )` |
2424 | if test "x$OPENAD" != x ; then | |
2425 | sfiles=`( echo $sfiles | grep -v _cb2m\. )` | |
2426 | fi | |
2427 | for sf in $sfiles ; do | for sf in $sfiles ; do |
2428 | if test ! -r ".links.tmp/$sf" ; then | if test ! -r ".links.tmp/$sf" ; then |
2429 | if test -f "$d/$sf" ; then | if test -f "$d/$sf" ; then |
# | Line 2229 for d in $alldirs ; do | Line 2458 for d in $alldirs ; do |
2458 | if test "x$ignore_f" = xf ; then | if test "x$ignore_f" = xf ; then |
2459 | extn=`echo $sf | $AWK -F. '{print $NF}'` | extn=`echo $sf | $AWK -F. '{print $NF}'` |
2460 | case $extn in | case $extn in |
2461 | F) | F) |
2462 | echo " \\" >> srclist.inc | echo " \\" >> F77srclist.tmp |
2463 | printf " $sf" >> srclist.inc | printf " $sf" >> F77srclist.tmp |
2464 | ;; | if test "x$OPENAD" != x ; then |
2465 | F90) | basename=${sf%%.F} |
2466 | echo " \\" >> f90srclist.inc | isAD=`egrep ^$basename.f'[ ]*' adSrcFiles.tmp` |
2467 | printf " $sf" >> f90srclist.inc | if test -z "$isAD" ; then |
2468 | ;; | toBeIgnored=`egrep ^$basename'[ ]*' ${OAD_DONT_COMPILE}` |
2469 | c) | if test -z "$toBeIgnored" ; then |
2470 | echo " \\" >> csrclist.inc | echo " \\" >> nonADF77srclist.tmp |
2471 | printf " $sf" >> csrclist.inc | printf " $sf" >> nonADF77srclist.tmp |
2472 | ;; | else |
2473 | h) | echo " not to be compiled : $sf" |
2474 | echo " \\" >> hlist.inc | fi |
2475 | printf " $sf" >> hlist.inc | else # file is initially listed as an AD file we want to exclude it |
2476 | ;; | # or we want to retain the untransformed version |
2477 | flow) | notToBeTransformed=`egrep ^$basename'[ ]*' ${OAD_DONT_TRANSFORM}` |
2478 | echo " \\" >> ad_flow_files.inc | untransformedVersionToBeKept=`egrep ^$basename'[ ]*' ${OAD_KEEP_ORIGINAL}` |
2479 | printf " $sf" >> ad_flow_files.inc | if test -n "$notToBeTransformed"; then |
2480 | ;; | echo " not to be transformed: $sf" |
2481 | esac | fi |
2482 | fi | if test -n "$untransformedVersionToBeKept" ; then |
2483 | echo " original to be kept : $sf" | |
2484 | fi | |
2485 | if test -n "$notToBeTransformed" -o -n "$untransformedVersionToBeKept" ; then | |
2486 | echo " \\" >> nonADF77srclist.tmp | |
2487 | printf " $sf" >> nonADF77srclist.tmp | |
2488 | fi | |
2489 | fi | |
2490 | fi | |
2491 | ;; | |
2492 | F90) | |
2493 | echo " \\" >> F90srclist.tmp | |
2494 | printf " $sf" >> F90srclist.tmp | |
2495 | ;; | |
2496 | c) | |
2497 | echo " \\" >> csrclist.tmp | |
2498 | printf " $sf" >> csrclist.tmp | |
2499 | ;; | |
2500 | h) | |
2501 | echo " \\" >> hsrclist.tmp | |
2502 | printf " $sf" >> hsrclist.tmp | |
2503 | ;; | |
2504 | flow) | |
2505 | echo " \\" >> ad_flow_files.tmp | |
2506 | printf " $sf" >> ad_flow_files.tmp | |
2507 | ;; | |
2508 | esac | |
2509 | fi | |
2510 | fi | fi |
2511 | fi | fi |
2512 | done | done |
2513 | if test "x$deplist" != x ; then | if test "x$deplist" != x ; then |
2514 | echo "" >> srclinks.tmp | if test "$d" != "." ; then |
2515 | echo "" >> srclinks.tmp | |
2516 | echo "# These files are linked from $d" >> srclinks.tmp | echo "# These files are linked from $d" >> srclinks.tmp |
2517 | echo "$deplist :" >> srclinks.tmp | echo "$deplist :" >> srclinks.tmp |
2518 | printf "\t\$(LN) %s/\$@ \$@\n" $d >> srclinks.tmp | # We need to make sure that the link isn't already there. |
2519 | # This may happen when make thinks that a header file has to be "remade" | |
2520 | # because a module it depends on has changed. In this case we do nothing. | |
2521 | printf "\tif [ ! -L \$@ ]; then \$(LN) %s/\$@ \$@; fi\n" $d >> srclinks.tmp | |
2522 | fi | |
2523 | fi | fi |
2524 | done | done |
2525 | rm -rf .links.tmp | rm -rf .links.tmp |
2526 | echo "" >> srclist.inc | echo "" >> F77srclist.tmp |
2527 | echo "" >> csrclist.inc | echo "" >> nonADF77srclist.tmp |
2528 | echo "" >> f90srclist.inc | echo "" >> csrclist.tmp |
2529 | echo "" >> hlist.inc | echo "" >> F90srclist.tmp |
2530 | echo "" >> ad_flow_files.inc | echo "" >> hsrclist.tmp |
2531 | echo "" >> ad_flow_files.tmp | |
2532 | ||
2533 | CMDLINE=$0 | |
2534 | for xx in "$@" ; do nw=`echo $xx | wc -w` | |
2535 | if test $nw = '1' ; then CMDLINE="$CMDLINE $xx" | |
2536 | else CMDLINE="$CMDLINE '$xx'" ; fi | |
2537 | done | |
2538 | ||
2539 | if test -f $MAKEFILE ; then | if test -f $MAKEFILE ; then |
2540 | mv -f $MAKEFILE "$MAKEFILE.bak" | mv -f $MAKEFILE "$MAKEFILE.old" |
2541 | fi | fi |
2542 | echo " Writing makefile: $MAKEFILE" | echo " Writing makefile: $MAKEFILE" |
2543 | echo "# Multithreaded + multi-processing makefile for:" > $MAKEFILE | echo "# Multithreaded + multi-processing makefile for:" > $MAKEFILE |
# | Line 2277 echo "# $MACHINE" >> $MAKEFILE | Line 2545 echo "# $MACHINE" >> $MAKEFILE |
2545 | echo "# This makefile was generated automatically on" >> $MAKEFILE | echo "# This makefile was generated automatically on" >> $MAKEFILE |
2546 | echo "# $THISDATE" >> $MAKEFILE | echo "# $THISDATE" >> $MAKEFILE |
2547 | echo "# by the command:" >> $MAKEFILE | echo "# by the command:" >> $MAKEFILE |
2548 | echo "# $0 $G2ARGS" >> $MAKEFILE | echo "# $CMDLINE" >> $MAKEFILE |
2549 | echo "# executed by:" >> $MAKEFILE | echo "# executed by:" >> $MAKEFILE |
2550 | echo "# ${THISUSER}@${THISHOST}:${THISCWD}" >> $MAKEFILE | echo "# ${THISUSER}@${THISHOST}:${THISCWD}" >> $MAKEFILE |
2551 | ||
# | Line 2288 EXE_SVD=$EXECUTABLE"_svd" | Line 2556 EXE_SVD=$EXECUTABLE"_svd" |
2556 | cat >>$MAKEFILE <<EOF | cat >>$MAKEFILE <<EOF |
2557 | # | # |
2558 | # OPTFILE="$OPTFILE" | # OPTFILE="$OPTFILE" |
2559 | # | # |
2560 | # BUILDDIR : Directory where object files are written | # BUILDDIR : Directory where object files are written |
2561 | # SOURCEDIRS : Directories containing the source (.F) files | # SOURCEDIRS : Directories containing the source (.F) files |
2562 | # INCLUDEDIRS : Directories containing the header-source (.h) files | # INCLUDEDIRS : Directories containing the header-source (.h) files |
# | Line 2308 cat >>$MAKEFILE <<EOF | Line 2576 cat >>$MAKEFILE <<EOF |
2576 | # LIBS : Library flags /or/ additional optimization/debugging flags | # LIBS : Library flags /or/ additional optimization/debugging flags |
2577 | ||
2578 | ROOTDIR = ${ROOTDIR} | ROOTDIR = ${ROOTDIR} |
2579 | BUILDDIR = ${BUILDDIR} | BUILDDIR = ${BUILDDIR} |
2580 | SOURCEDIRS = ${SOURCEDIRS} | SOURCEDIRS = ${SOURCEDIRS} |
2581 | INCLUDEDIRS = ${INCLUDEDIRS} | INCLUDEDIRS = ${INCLUDEDIRS} |
2582 | EXEDIR = ${EXEDIR} | EXEDIR = ${EXEDIR} |
# | Line 2334 else | Line 2602 else |
2602 | echo "EMBEDDED_FILES = " >>$MAKEFILE | echo "EMBEDDED_FILES = " >>$MAKEFILE |
2603 | fi | fi |
2604 | ||
# Note: figure out some way to add Hyades JAM libraries here | ||
2605 | cat >>$MAKEFILE <<EOF | cat >>$MAKEFILE <<EOF |
2606 | # Unix ln (link) | # Unix ln (link) |
2607 | LN = ${LN} | LN = ${LN} |
# | Line 2361 INCLUDES = ${INCLUDES} | Line 2628 INCLUDES = ${INCLUDES} |
2628 | KFLAGS1 = ${KFLAGS1} | KFLAGS1 = ${KFLAGS1} |
2629 | KFLAGS2 = ${KFLAGS2} | KFLAGS2 = ${KFLAGS2} |
2630 | # Optim./debug for FC | # Optim./debug for FC |
2631 | FFLAGS = ${FFLAGS} | FFLAGS = ${FFLAGS} ${FEXTRAFLAGS} |
2632 | FOPTIM = ${FOPTIM} | FOPTIM = ${FOPTIM} |
2633 | # Optim./debug for FC | # Optim./debug for FC |
2634 | F90FLAGS = ${F90FLAGS} | F90FLAGS = ${F90FLAGS} |
2635 | F90OPTIM = ${F90OPTIM} | F90OPTIM = ${F90OPTIM} |
2636 | F90FIXEDFORMAT = ${F90FIXEDFORMAT} | |
2637 | # Flags for CC | # Flags for CC |
2638 | CFLAGS = ${CFLAGS} | CFLAGS = ${CFLAGS} |
2639 | # Files that should not be optimized | # Files that should not be optimized |
# | Line 2378 MAKEFILE=${MAKEFILE} | Line 2646 MAKEFILE=${MAKEFILE} |
2646 | ||
2647 | EOF | EOF |
2648 | ||
2649 | cat srclist.inc >> $MAKEFILE | cat F77srclist.tmp >> $MAKEFILE |
2650 | cat csrclist.inc >> $MAKEFILE | cat nonADF77srclist.tmp >> $MAKEFILE |
2651 | cat f90srclist.inc >> $MAKEFILE | cat csrclist.tmp >> $MAKEFILE |
2652 | cat hlist.inc >> $MAKEFILE | cat F90srclist.tmp >> $MAKEFILE |
2653 | cat ad_flow_files.inc >> $MAKEFILE | cat hsrclist.tmp >> $MAKEFILE |
2654 | cat ad_flow_files.tmp >> $MAKEFILE | |
2655 | ||
2656 | rm -f F77srclist.tmp nonADF77srclist.tmp csrclist.tmp F90srclist.tmp hsrclist.tmp ad_flow_files.tmp | |
2657 | ||
2658 | echo >> $MAKEFILE | echo >> $MAKEFILE |
2659 | echo 'F77FILES = $(SRCFILES:.F=.'$FS')' >> $MAKEFILE | |
2660 | echo 'F90FILES = $(F90SRCFILES:.F90=.'$FS90')' >> $MAKEFILE | # add definitions for preprocessed sources |
2661 | echo 'OBJFILES = $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE | # and note that not all systems allow case sensitive extensions |
2662 | # hence the $FS and $FS90 here. | |
2663 | # for fixed format f90 files we use ff90 or FF90 resp | |
2664 | # but these are not expected to be the original source files | |
2665 | ||
2666 | echo 'F77_PP_SRC_FILES = $(F77_SRC_FILES:.F=.'$FS')' >> $MAKEFILE | |
2667 | echo 'F90_PP_SRC_FILES = $(F90_SRC_FILES:.F90=.'$FS90')' >> $MAKEFILE | |
2668 | echo 'OBJFILES= $(F77_SRC_FILES:.F=.o) $(C_SRC_FILES:.c=.o) $(F90_SRC_FILES:.F90=.o)' >> $MAKEFILE | |
2669 | echo 'FLOFILES = $(AD_FLOW_FILES:.flow=.flowdir)' >> $MAKEFILE | |
2670 | echo >> $MAKEFILE | echo >> $MAKEFILE |
2671 | echo '.SUFFIXES:' >> $MAKEFILE | echo '.SUFFIXES:' >> $MAKEFILE |
2672 | echo '.SUFFIXES: .o .'$FS' .p .F .c .'$FS90' .F90' >> $MAKEFILE | echo '.SUFFIXES: .o .'$FS' .p .F .c .f'$FS90' .'$FS90' .FF90 .F90 .flowdir .flow' >> $MAKEFILE |
rm -f srclist.inc csrclist.inc hlist.inc flist.tmp clist.tmp f90srclist.inc | ||
rm -f ad_flow_files.inc | ||
2673 | ||
2674 | cat >>$MAKEFILE <<EOF | cat >>$MAKEFILE <<EOF |
2675 | ||
2676 | all: \$(EXECUTABLE) | all: \$(EXECUTABLE) |
2677 | \$(EXECUTABLE): \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(OBJFILES) \$(EMBEDDED_FILES) | \$(EXECUTABLE): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(OBJFILES) \$(EMBEDDED_FILES) |
2678 | @echo Creating \$@ ... | @echo Creating \$@ ... |
2679 | \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS) | \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS) |
2680 | depend: | depend: |
2681 | @make links | @make links |
2682 | \$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(SRCFILES) | \$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(F77_SRC_FILES) |
2683 | \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE) | \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE) |
2684 | -rm -f makedepend.out | -rm -f makedepend.out |
2685 | ||
# | Line 2409 lib: libmitgcmuv.a | Line 2687 lib: libmitgcmuv.a |
2687 | ||
2688 | libmitgcmuv.a: \$(OBJFILES) | libmitgcmuv.a: \$(OBJFILES) |
2689 | ar rcv libmitgcmuv.a \$(OBJFILES) | ar rcv libmitgcmuv.a \$(OBJFILES) |
2690 | ar d libmitgcmuv.a main.o | |
2691 | ||
2692 | links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES) | links: \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(SPECIAL_FILES) |
2693 | ||
2694 | small_f: \$(F77FILES) \$(F90FILES) | small_f: \$(F77_PP_SRC_FILES) \$(F90_PP_SRC_FILES) |
2695 | ||
2696 | output.txt: \$(EXECUTABLE) | output.txt: \$(EXECUTABLE) |
2697 | @printf 'running ... ' | @printf 'running ... ' |
2698 | @\$(EXECUTABLE) > \$@ | @\$(EXECUTABLE) > \$@ |
2699 | ||
2700 | # remove most of the files that "make" generates | |
2701 | clean: | clean: |
2702 | -rm -rf *.o *.$FS *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template | -rm -rf *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template |
2703 | -rm -rf *.o | |
2704 | -rm -rf *.$FS *.flowdir | |
2705 | -rm -rf *.f$FS90 \$(AD_CLEAN) ad_input* | |
2706 | ||
2707 | # remove most of the files that "make" and "make depend" generate | |
2708 | Clean: | Clean: |
2709 | @make clean | @make clean |
2710 | @make cleanlinks | @make cleanlinks |
2711 | -rm -f \$(SPECIAL_FILES) | -rm -f \$(SPECIAL_FILES) f90mkdepend.log |
2712 | -rm -f genmake_state genmake_*optfile genmake_warnings make.log run.log *.bak | -rm -f taf_command taf_output taf_ad.log taf_ad_flow.log |
2713 | ||
2714 | # remove also the executable, files that "genmake2" generates (except Makefile) | |
2715 | # and output from a run (plus output and log files from testreport) | |
2716 | CLEAN: | CLEAN: |
2717 | @make Clean | @make Clean |
2718 | -rm -f \$(EXECUTABLE) \$(EXE_AD) *.bak "$MAKEFILE.old" | |
2719 | -rm -f genmake_state genmake_*optfile genmake_warnings genmake_errors | |
2720 | -rm -f genmake.log make.log run.log | |
2721 | -find \$(EXEDIR) -name "*.meta" -exec rm {} \; | -find \$(EXEDIR) -name "*.meta" -exec rm {} \; |
2722 | -find \$(EXEDIR) -name "*.data" -exec rm {} \; | -find \$(EXEDIR) -name "*.data" -exec rm {} \; |
2723 | -find \$(EXEDIR) -name "fort.*" -exec rm {} \; | -find \$(EXEDIR) -name "fort.*" -exec rm {} \; |
2724 | -rm -f \$(EXECUTABLE) *.txt STD* *diagnostics.log datetime | -rm -f *.txt STD* *diagnostics.log datetime |
2725 | -rm -f *_MIT_CE_000.opt0000 costfunction*0000 | |
2726 | -rm -rf mnc_test_* | -rm -rf mnc_test_* |
2727 | ||
2728 | #eh3 Makefile: makefile | #eh3 Makefile: makefile |
# | Line 2439 makefile: | Line 2731 makefile: |
2731 | cleanlinks: | cleanlinks: |
2732 | -find . -type l -exec rm {} \; | -find . -type l -exec rm {} \; |
2733 | ||
2734 | # Special targets (SPECIAL_FILES) which are create by make | # Special targets (SPECIAL_FILES) which are created by make |
2735 | ${PACKAGES_DOT_H}: | ${PACKAGES_DOT_H}: |
2736 | @echo Creating \$@ ... | @echo Creating \$@ ... |
2737 | @$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) > \$@ | @$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) > \$@ |
# | Line 2464 if test "x$EMBED_SRC" = xt ; then | Line 2756 if test "x$EMBED_SRC" = xt ; then |
2756 | ||
2757 | decode_files.o : EMBEDDED_FILES.h | decode_files.o : EMBEDDED_FILES.h |
2758 | ||
2759 | ## \$(F77FILES) | ## \$(F77_PP_SRC_FILES) |
2760 | all_fF.tar.gz : \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(F77FILES) Makefile | all_fF.tar.gz : \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(F77_PP_SRC_FILES) Makefile |
2761 | @echo Creating \$@ ... | @echo Creating \$@ ... |
2762 | -tar -hcf all_fF.tar \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(F77FILES) Makefile | -tar -hcf all_fF.tar \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(F77_PP_SRC_FILES) Makefile |
2763 | -rm -f all_fF.tar.gz | -rm -f all_fF.tar.gz |
2764 | -gzip all_fF.tar | -gzip all_fF.tar |
2765 | ||
# | Line 2491 cat >>$MAKEFILE <<EOF | Line 2783 cat >>$MAKEFILE <<EOF |
2783 | \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$< | \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$< |
2784 | .F90.$FS90: | .F90.$FS90: |
2785 | \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@ | \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@ |
2786 | .FF90.f$FS90: | |
2787 | \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@ | |
2788 | .$FS90.o: | .$FS90.o: |
2789 | \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$< | \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$< |
2790 | .f$FS90.o: | |
2791 | cp \$< \$(basename \$<).f90 | |
2792 | \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$(F90FIXEDFORMAT) \$(basename \$<).f90 | |
2793 | .c.o: | .c.o: |
2794 | \$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$< | \$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$< |
2795 | .flow.flowdir: | |
2796 | \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@ | |
2797 | ||
2798 | # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain | # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain |
2799 | .F.p: | .F.p: |
# | Line 2502 cat >>$MAKEFILE <<EOF | Line 2801 cat >>$MAKEFILE <<EOF |
2801 | .p.$FS: | .p.$FS: |
2802 | \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$< | \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$< |
2803 | ||
2804 | EOF | |
2805 | ||
2806 | #========================================= | #========================================= |
2807 | #=== Automatic Differentiation Rules === | #=== Automatic Differentiation Rules === |
2808 | #=== for TAMC/TAF ====================== | |
2809 | ||
2810 | if test "x$OPENAD" = x ; then | |
2811 | ||
2812 | cat >>$MAKEFILE <<EOF | |
2813 | ||
2814 | TAMC = ${TAMC} | TAMC = ${TAMC} |
2815 | TAF = ${TAF} | TAF = ${TAF} |
# | Line 2518 ad_vars="$ad_vars FTL_TAMC_FLAGS FTL_TAF | Line 2824 ad_vars="$ad_vars FTL_TAMC_FLAGS FTL_TAF |
2824 | ad_vars="$ad_vars SVD_TAMC_FLAGS SVD_TAF_FLAGS" | ad_vars="$ad_vars SVD_TAMC_FLAGS SVD_TAF_FLAGS" |
2825 | for i in $ad_vars ; do | for i in $ad_vars ; do |
2826 | name=$i | name=$i |
2827 | t1="t2=\$"`echo $i` | t1="t2=\$"`echo "$i"` |
2828 | eval $t1 | eval $t1 |
2829 | printf "%-20s = " $name >> $MAKEFILE | printf "%-20s = " $name >> $MAKEFILE |
2830 | echo $t2 >> $MAKEFILE | echo "$t2" | sed -e 's| \+| |g' >> $MAKEFILE |
2831 | done | done |
2832 | ||
2833 | echo " Add the source list for AD code generation" | echo " Add the source list for AD code generation" |
2834 | echo >> $MAKEFILE | echo >> $MAKEFILE |
2835 | printf "AD_FILES = " >> $MAKEFILE | printf "AD_FILES = " >> $MAKEFILE |
2836 | AD_FILES=`cat ad_files` | AD_FILES=`cat adSrcFiles.tmp` |
2837 | for i in $AD_FILES ; do | for i in $AD_FILES ; do |
2838 | echo " \\" >> $MAKEFILE | echo " \\" >> $MAKEFILE |
2839 | printf " $i" >> $MAKEFILE | printf " $i" >> $MAKEFILE |
2840 | done | done |
2841 | echo >> $MAKEFILE | echo >> $MAKEFILE |
2842 | rm -f ad_files | rm -f adSrcFiles.tmp |
2843 | ||
2844 | cat >>$MAKEFILE <<EOF | cat >>$MAKEFILE <<EOF |
2845 | ||
2846 | # ... AD ... | # ... AD ... |
2847 | adall: ad_taf | adall: \$(EXE_AD) |
2848 | adtaf: ad_taf_output.$FS | adtaf: ad_taf_output.$FS |
2849 | adtamc: ad_tamc_output.$FS | adtamc: ad_tamc_output.$FS |
2850 | ||
2851 | ad_input_code.$FS: \$(AD_FILES) \$(HEADERFILES) | ad_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES) \$(AD_FLOW_FILES) |
2852 | @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ad_config.template | @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ad_config.template |
2853 | 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 |
2854 | -rm -f ad_config.template | -rm -f ad_config.template |
2855 | @make \$(F77FILES) | @make \$(F77_PP_SRC_FILES) |
2856 | @make \$(AD_FLOW_FILES) | @make \$(FLOFILES) |
2857 | cat \$(AD_FLOW_FILES) \$(AD_FILES) > ad_input_code.$FS | cat \$(FLOFILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ad_input_code.$FS |
2858 | ||
2859 | ad_taf_output.$FS: ad_input_code.$FS | ad_taf_output.$FS: ad_input_code.$FS |
2860 | \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS | \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS |
2861 | ls -l ad_input_code_ad.$FS | |
2862 | 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 |
2863 | ||
2864 | adtafonly: | adtafonly: |
2865 | \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS | \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS |
2866 | ls -l ad_input_code_ad.$FS | |
2867 | 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 |
2868 | ||
2869 | ad_taf: ad_taf_output.o \$(OBJFILES) | \${EXE_AD}: ad_taf_output.o \$(OBJFILES) |
2870 | \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS) | \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS) |
2871 | ||
2872 | ad_tamc_output.$FS: ad_input_code.$FS | ad_tamc_output.$FS: ad_input_code.$FS |
2873 | \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS | \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS |
2874 | 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 |
2875 | ||
2876 | ad_tamc: ad_tamc_output.o \$(OBJFILES) | ad_tamc: ad_tamc_output.o \$(OBJFILES) |
2877 | \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS) | \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS) |
2878 | ||
2879 | adonlyfwd: | adonlyfwd: |
2880 | patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff | patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff |
2881 | ||
2882 | adtrick: | adtrick: |
2883 | patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff | patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff |
2884 | ||
# | Line 2579 ftlall: ftl_taf | Line 2887 ftlall: ftl_taf |
2887 | ftltaf: ftl_taf_output.$FS | ftltaf: ftl_taf_output.$FS |
2888 | ftltamc: ftl_tamc_output.$FS | ftltamc: ftl_tamc_output.$FS |
2889 | ||
2890 | ftl_input_code.$FS: \$(AD_FILES) \$(HEADERFILES) | ftl_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES) |
2891 | @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ftl_config.template | @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ftl_config.template |
2892 | 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 |
2893 | -rm -f ftl_config.template | -rm -f ftl_config.template |
2894 | @make \$(F77FILES) | @make \$(F77_PP_SRC_FILES) |
2895 | @make \$(AD_FLOW_FILES) | @make \$(AD_FLOW_FILES) |
2896 | cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.$FS | cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.$FS |
2897 | ||
2898 | ftl_taf_output.$FS: ftl_input_code.$FS | ftl_taf_output.$FS: ftl_input_code.$FS |
2899 | \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS | \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS |
2900 | ls -l ftl_input_code_ftl.$FS | |
2901 | 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 |
2902 | ||
2903 | ftltafonly: | ftltafonly: |
2904 | \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS | \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS |
2905 | ls -l ftl_input_code_ftl.$FS | |
2906 | 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 |
2907 | ||
2908 | ftl_taf: ftl_taf_output.o \$(OBJFILES) | ftl_taf: ftl_taf_output.o \$(OBJFILES) |
2909 | \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS) | \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS) |
2910 | ||
2911 | ftl_tamc_output.$FS: ftl_input_code.$FS | ftl_tamc_output.$FS: ftl_input_code.$FS |
2912 | \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS | \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS |
2913 | 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 |
2914 | ||
2915 | ftl_tamc: ftl_tamc_output.o \$(OBJFILES) | ftl_tamc: ftl_tamc_output.o \$(OBJFILES) |
2916 | \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS) | \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS) |
2917 | ||
2918 | ||
2919 | # ... SVD ... | # ... SVD ... |
# | Line 2630 svd_touch: | Line 2940 svd_touch: |
2940 | 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 |
2941 | -rm -f ftl_config.template | -rm -f ftl_config.template |
2942 | ||
2943 | #========================================= | EOF |
2944 | ||
2945 | fi | |
2946 |