353 |
else |
else |
354 |
echo " The possible FORTRAN compilers found in your path are:" |
echo " The possible FORTRAN compilers found in your path are:" |
355 |
echo " "$p_FC |
echo " "$p_FC |
356 |
if test "x$FC" = x ; then |
fi |
357 |
FC=`echo $p_FC | $AWK '{print $1}'` |
|
358 |
echo " Setting FORTRAN compiler to: "$FC |
# Use the first of the compilers found in the current PATH |
359 |
fi |
# that has a correctly-named optfile |
360 |
|
if test "x$OPTFILE" = x -a "x$FC" = x ; then |
361 |
|
for i in $p_FC ; do |
362 |
|
OPTFILE=$ROOTDIR"/tools/build_options/"$PLATFORM"_"$i |
363 |
|
if test -r $OPTFILE ; then |
364 |
|
echo " Setting OPTFILE to: "$OPTFILE |
365 |
|
break |
366 |
|
fi |
367 |
|
done |
368 |
fi |
fi |
369 |
|
|
370 |
if test "x$OPTFILE" = x ; then |
if test "x$OPTFILE" = x ; then |
609 |
call tsub( string ) |
call tsub( string ) |
610 |
end |
end |
611 |
EOF |
EOF |
612 |
$FC $FFLAGS $DEFINES -c genmake_tcomp.$FS >> genmake_warnings 2>&1 |
$FC $FFLAGS -c genmake_tcomp.$FS >> genmake_warnings 2>&1 |
613 |
RETVAL=$? |
RETVAL=$? |
614 |
if test "x$RETVAL" != x0 ; then |
if test "x$RETVAL" != x0 ; then |
615 |
FC_NAMEMANGLE=$default_nm |
FC_NAMEMANGLE=$default_nm |
679 |
RET_C=$? |
RET_C=$? |
680 |
cat <<EOF > genmake_tc_2.$FS |
cat <<EOF > genmake_tc_2.$FS |
681 |
program hello |
program hello |
682 |
Real*8 wtime |
REAL*8 wtime |
683 |
external cloc |
external cloc |
684 |
call cloc(wtime) |
call cloc(wtime) |
685 |
print *," HELLO WORLD", wtime |
print *," HELLO WORLD", wtime |
686 |
end program hello |
end |
687 |
EOF |
EOF |
688 |
$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o >> genmake_warnings 2>&1 |
$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o >> genmake_warnings 2>&1 |
689 |
RET_F=$? |
RET_F=$? |
697 |
} |
} |
698 |
|
|
699 |
|
|
700 |
|
check_HAVE_SETRLSTK() { |
701 |
|
get_fortran_c_namemangling |
702 |
|
cat <<EOF > genmake_tc_1.c |
703 |
|
$FC_NAMEMANGLE |
704 |
|
#include <sys/time.h> |
705 |
|
#include <sys/resource.h> |
706 |
|
#include <unistd.h> |
707 |
|
void FC_NAMEMANGLE(setrlstk) () |
708 |
|
{ |
709 |
|
struct rlimit rls; |
710 |
|
rls.rlim_cur = RLIM_INFINITY; |
711 |
|
rls.rlim_max = RLIM_INFINITY; |
712 |
|
setrlimit(RLIMIT_STACK, &rls); |
713 |
|
return; |
714 |
|
} |
715 |
|
EOF |
716 |
|
make genmake_tc_1.o >> genmake_warnings 2>&1 |
717 |
|
RET_C=$? |
718 |
|
cat <<EOF > genmake_tc_2.$FS |
719 |
|
program hello |
720 |
|
external setrlstk |
721 |
|
call setrlstk() |
722 |
|
end |
723 |
|
EOF |
724 |
|
echo >> genmake_warnings |
725 |
|
echo "running: check_HAVE_SETRLSTK()" >> genmake_warnings |
726 |
|
cat genmake_tc_2.$FS >> genmake_warnings |
727 |
|
COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o" |
728 |
|
echo $COMM >> genmake_warnings |
729 |
|
$COMM >> genmake_warnings 2>&1 |
730 |
|
RETVAL=$? |
731 |
|
if test "x$RETVAL" = x0 ; then |
732 |
|
HAVE_SETRLSTK=t |
733 |
|
DEFINES="$DEFINES -DHAVE_SETRLSTK" |
734 |
|
fi |
735 |
|
rm -f genmake_tc* |
736 |
|
} |
737 |
|
|
738 |
|
|
739 |
check_HAVE_STAT() { |
check_HAVE_STAT() { |
740 |
get_fortran_c_namemangling |
get_fortran_c_namemangling |
741 |
cat <<EOF > genmake_tc_1.c |
cat <<EOF > genmake_tc_1.c |
764 |
integer nbyte |
integer nbyte |
765 |
call tfsize(nbyte) |
call tfsize(nbyte) |
766 |
print *," HELLO WORLD", nbyte |
print *," HELLO WORLD", nbyte |
767 |
end program hello |
end |
768 |
EOF |
EOF |
769 |
$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o >> genmake_tc.log 2>&1 |
echo >> genmake_warnings |
770 |
RET_F=$? |
echo "running: check_HAVE_STAT()" >> genmake_warnings |
771 |
test -x ./genmake_tc && ./genmake_tc >> genmake_tc.log 2>&1 |
cat genmake_tc_2.$FS >> genmake_warnings |
772 |
|
COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o" |
773 |
|
echo $COMM >> genmake_warnings |
774 |
|
$COMM >> genmake_tc.log 2>&1 |
775 |
RETVAL=$? |
RETVAL=$? |
776 |
if test "x$RETVAL" = x0 ; then |
if test "x$RETVAL" = x0 ; then |
777 |
HAVE_STAT=t |
HAVE_STAT=t |
785 |
if test ! "x$SKIP_NETCDF_CHECK" = x ; then |
if test ! "x$SKIP_NETCDF_CHECK" = x ; then |
786 |
return |
return |
787 |
fi |
fi |
788 |
echo "" > genmake_tnc.log |
echo >> genmake_warnings |
789 |
|
echo "running: check_netcdf_libs()" >> genmake_warnings |
790 |
cat <<EOF > genmake_tnc.F |
cat <<EOF > genmake_tnc.F |
791 |
program fgennc |
program fgennc |
792 |
#include "netcdf.inc" |
#include "netcdf.inc" |
804 |
IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret) |
IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret) |
805 |
end |
end |
806 |
EOF |
EOF |
807 |
echo "Executing:" > genmake_tnc.log |
echo "=== genmake_tnc.F ===" > genmake_tnc.log |
808 |
echo " $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS" \ |
cat genmake_tnc.F >> genmake_tnc.log |
809 |
> genmake_tnc.log |
echo "=== genmake_tnc.F ===" >> genmake_tnc.log |
810 |
RET_CPP=f |
RET_CPP=f |
811 |
$CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS 2>/dev/null \ |
COMM="$CPP $DEFINES $INCLUDES genmake_tnc.F" |
812 |
&& RET_CPP=t |
echo "$COMM" >> genmake_tnc.log |
813 |
|
$COMM > genmake_tnc.$FS 2>/dev/null && RET_CPP=t |
814 |
if test "x$RET_CPP" = xf ; then |
if test "x$RET_CPP" = xf ; then |
815 |
echo " WARNING: CPP failed to pre-process the netcdf test." \ |
echo " WARNING: CPP failed to pre-process the netcdf test." \ |
816 |
> genmake_tnc.log |
>> genmake_tnc.log |
817 |
echo " Please check that \$INCLUDES is properly set." \ |
echo " Please check that \$INCLUDES is properly set." \ |
818 |
> genmake_tnc.log |
>> genmake_tnc.log |
819 |
fi |
fi |
820 |
echo "Executing:" > genmake_tnc.log |
echo "$FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log |
821 |
echo " $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS" > genmake_tnc.log |
echo " && $LINK -o genmake_tnc.o $LIBS" >> genmake_tnc.log |
|
echo " $LINK -o genmake_tnc.o $LIBS" > genmake_tnc.log |
|
822 |
$FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1 \ |
$FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1 \ |
823 |
&& $LINK -o genmake_tnc genmake_tnc.o $LIBS >> genmake_tnc.log 2>&1 |
&& $LINK -o genmake_tnc genmake_tnc.o $LIBS >> genmake_tnc.log 2>&1 |
824 |
RET_COMPILE=$? |
RET_COMPILE=$? |
825 |
|
cat genmake_tnc.log >> genmake_warnings |
826 |
|
|
827 |
#EH3 Remove test program execution for machines that either disallow |
#EH3 Remove test program execution for machines that either disallow |
828 |
#EH3 execution or cannot support it (eg. cross-compilers) |
#EH3 execution or cannot support it (eg. cross-compilers) |
835 |
HAVE_NETCDF=t |
HAVE_NETCDF=t |
836 |
else |
else |
837 |
# try again with "-lnetcdf" added to the libs |
# try again with "-lnetcdf" added to the libs |
838 |
|
echo "try again with added '-lnetcdf'" > genmake_tnc.log |
839 |
|
echo "$CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS \ " >> genmake_tnc.log |
840 |
|
echo " && $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log |
841 |
|
echo " && $LINK -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf" >> genmake_tnc.log |
842 |
$CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS 2>/dev/null \ |
$CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS 2>/dev/null \ |
843 |
&& $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1 \ |
&& $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1 \ |
844 |
&& $LINK -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf >> genmake_tnc.log 2>&1 |
&& $LINK -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf >> genmake_tnc.log 2>&1 |
845 |
RET_COMPILE=$? |
RET_COMPILE=$? |
846 |
|
cat genmake_tnc.log >> genmake_warnings |
847 |
if test "x$RET_COMPILE" = x0 ; then |
if test "x$RET_COMPILE" = x0 ; then |
848 |
LIBS="$LIBS -lnetcdf" |
LIBS="$LIBS -lnetcdf" |
849 |
HAVE_NETCDF=t |
HAVE_NETCDF=t |
|
else |
|
|
cat genmake_tnc.log >> genmake_warnings |
|
850 |
fi |
fi |
851 |
fi |
fi |
852 |
rm -f genmake_tnc* |
rm -f genmake_tnc* |
893 |
MPI= |
MPI= |
894 |
MPIPATH= |
MPIPATH= |
895 |
TS= |
TS= |
896 |
|
HAVE_TEST_L= |
897 |
|
|
898 |
# DEFINES checked by test compilation or command-line |
# DEFINES checked by test compilation or command-line |
899 |
HAVE_SYSTEM= |
HAVE_SYSTEM= |
900 |
HAVE_FDATE= |
HAVE_FDATE= |
901 |
FC_NAMEMANGLE= |
FC_NAMEMANGLE= |
902 |
HAVE_CLOC= |
HAVE_CLOC= |
903 |
|
HAVE_SETRLSTK= |
904 |
HAVE_STAT= |
HAVE_STAT= |
905 |
HAVE_NETCDF= |
HAVE_NETCDF= |
906 |
HAVE_ETIME= |
HAVE_ETIME= |
1358 |
EOF |
EOF |
1359 |
exit 1 |
exit 1 |
1360 |
fi |
fi |
1361 |
|
test -L genmake_tlink > /dev/null 2>&1 |
1362 |
|
RETVAL=$? |
1363 |
|
if test "x$RETVAL" = x0 ; then |
1364 |
|
HAVE_TEST_L=t |
1365 |
|
fi |
1366 |
rm -f genmake_test_ln genmake_tlink |
rm -f genmake_test_ln genmake_tlink |
1367 |
|
|
1368 |
# Check for broken *.F/*.f handling and fix if possible |
# Check for broken *.F/*.f handling and fix if possible |
1385 |
call system('echo hi') |
call system('echo hi') |
1386 |
end |
end |
1387 |
EOF |
EOF |
1388 |
$FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1 |
$FC $FFLAGS -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1 |
1389 |
RETVAL=$? |
RETVAL=$? |
1390 |
if test "x$RETVAL" = x0 ; then |
if test "x$RETVAL" = x0 ; then |
1391 |
HAVE_SYSTEM=t |
HAVE_SYSTEM=t |
1400 |
printf " Do we have the fdate() command using $FC... " |
printf " Do we have the fdate() command using $FC... " |
1401 |
cat > genmake_tcomp.$FS <<EOF |
cat > genmake_tcomp.$FS <<EOF |
1402 |
program hello |
program hello |
1403 |
CHARACTER(128) string |
CHARACTER*(128) string |
1404 |
string = ' ' |
string = ' ' |
1405 |
call fdate( string ) |
call fdate( string ) |
1406 |
print *, string |
print *, string |
1407 |
end |
end |
1408 |
EOF |
EOF |
1409 |
$FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1 |
$FC $FFLAGS -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1 |
1410 |
RETVAL=$? |
RETVAL=$? |
1411 |
if test "x$RETVAL" = x0 ; then |
if test "x$RETVAL" = x0 ; then |
1412 |
HAVE_FDATE=t |
HAVE_FDATE=t |
1428 |
print *, tarray |
print *, tarray |
1429 |
end |
end |
1430 |
EOF |
EOF |
1431 |
$FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1 |
$FC $FFLAGS -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1 |
1432 |
RETVAL=$? |
RETVAL=$? |
1433 |
if test "x$RETVAL" = x0 ; then |
if test "x$RETVAL" = x0 ; then |
1434 |
HAVE_ETIME=t |
HAVE_ETIME=t |
1449 |
fi |
fi |
1450 |
rm -f genmake_t* |
rm -f genmake_t* |
1451 |
|
|
1452 |
|
printf " Can we unlimit the stack size using $FC... " |
1453 |
|
check_HAVE_SETRLSTK |
1454 |
|
if test "x$HAVE_SETRLSTK" != x ; then |
1455 |
|
echo "yes" |
1456 |
|
else |
1457 |
|
echo "no" |
1458 |
|
fi |
1459 |
|
rm -f genmake_t* |
1460 |
|
|
1461 |
printf " Can we use stat() through C calls... " |
printf " Can we use stat() through C calls... " |
1462 |
check_HAVE_STAT |
check_HAVE_STAT |
1463 |
if test "x$HAVE_STAT" != x ; then |
if test "x$HAVE_STAT" != x ; then |
1945 |
for sf in $sfiles ; do |
for sf in $sfiles ; do |
1946 |
if test ! -r ".links.tmp/$sf" ; then |
if test ! -r ".links.tmp/$sf" ; then |
1947 |
if test -f "$d/$sf" ; then |
if test -f "$d/$sf" ; then |
1948 |
|
ignore_f=f |
1949 |
case $d/$sf in |
case $d/$sf in |
1950 |
./$PACKAGES_DOT_H) |
./$PACKAGES_DOT_H) |
1951 |
;; |
;; |
1956 |
./BUILD_INFO.h) |
./BUILD_INFO.h) |
1957 |
;; |
;; |
1958 |
*) |
*) |
1959 |
touch .links.tmp/$sf |
# For the local directory *ONLY*, |
1960 |
deplist="$deplist $sf" |
# ignore all soft-links |
1961 |
|
if test "x$HAVE_TEST_L" = xt -a "x$d" = x. -a -L $sf ; then |
1962 |
|
ignore_f=t |
1963 |
|
else |
1964 |
|
touch .links.tmp/$sf |
1965 |
|
deplist="$deplist $sf" |
1966 |
|
fi |
1967 |
;; |
;; |
1968 |
esac |
esac |
1969 |
extn=`echo $sf | $AWK -F. '{print $NF}'` |
if test "x$ignore_f" = xf ; then |
1970 |
case $extn in |
extn=`echo $sf | $AWK -F. '{print $NF}'` |
1971 |
F) |
case $extn in |
1972 |
echo " \\" >> srclist.inc |
F) |
1973 |
printf " $sf" >> srclist.inc |
echo " \\" >> srclist.inc |
1974 |
;; |
printf " $sf" >> srclist.inc |
1975 |
F90) |
;; |
1976 |
echo " \\" >> f90srclist.inc |
F90) |
1977 |
printf " $sf" >> f90srclist.inc |
echo " \\" >> f90srclist.inc |
1978 |
;; |
printf " $sf" >> f90srclist.inc |
1979 |
c) |
;; |
1980 |
echo " \\" >> csrclist.inc |
c) |
1981 |
printf " $sf" >> csrclist.inc |
echo " \\" >> csrclist.inc |
1982 |
;; |
printf " $sf" >> csrclist.inc |
1983 |
h) |
;; |
1984 |
echo " \\" >> hlist.inc |
h) |
1985 |
printf " $sf" >> hlist.inc |
echo " \\" >> hlist.inc |
1986 |
;; |
printf " $sf" >> hlist.inc |
1987 |
flow) |
;; |
1988 |
echo " \\" >> ad_flow_files.inc |
flow) |
1989 |
printf " $sf" >> ad_flow_files.inc |
echo " \\" >> ad_flow_files.inc |
1990 |
;; |
printf " $sf" >> ad_flow_files.inc |
1991 |
esac |
;; |
1992 |
|
esac |
1993 |
|
fi |
1994 |
fi |
fi |
1995 |
fi |
fi |
1996 |
done |
done |
2141 |
\$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE) |
\$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE) |
2142 |
-rm -f makedepend.out |
-rm -f makedepend.out |
2143 |
|
|
2144 |
|
lib: libmitgcmuv.a |
2145 |
|
|
2146 |
|
libmitgcmuv.a: \$(OBJFILES) |
2147 |
|
ar rcv libmitgcmuv.a \$(OBJFILES) |
2148 |
|
|
2149 |
links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES) |
links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES) |
2150 |
|
|
2151 |
small_f: \$(F77FILES) \$(F90FILES) |
small_f: \$(F77FILES) \$(F90FILES) |