675 |
} |
} |
676 |
|
|
677 |
|
|
678 |
|
check_HAVE_STAT() { |
679 |
|
get_fortran_c_namemangling |
680 |
|
cat <<EOF > genmake_tc_1.c |
681 |
|
$FC_NAMEMANGLE |
682 |
|
#include <stdio.h> |
683 |
|
#include <stdlib.h> |
684 |
|
#include <unistd.h> |
685 |
|
#include <sys/stat.h> |
686 |
|
#include <sys/types.h> |
687 |
|
void FC_NAMEMANGLE(tfsize) ( int *nbyte ) |
688 |
|
{ |
689 |
|
char name[512]; |
690 |
|
struct stat astat; |
691 |
|
|
692 |
|
name[0] = 'a'; name[1] = '\0'; |
693 |
|
if (! stat(name, &astat)) |
694 |
|
*nbyte = (int)(astat.st_size); |
695 |
|
else |
696 |
|
*nbyte = -1; |
697 |
|
} |
698 |
|
EOF |
699 |
|
make genmake_tc_1.o >> genmake_tc.log 2>&1 |
700 |
|
RET_C=$? |
701 |
|
cat <<EOF > genmake_tc_2.f |
702 |
|
program hello |
703 |
|
integer nbyte |
704 |
|
call tfsize(nbyte) |
705 |
|
print *," HELLO WORLD", nbyte |
706 |
|
end program hello |
707 |
|
EOF |
708 |
|
$FC $FFLAGS -o genmake_tc genmake_tc_2.f genmake_tc_1.o >> genmake_tc.log 2>&1 |
709 |
|
RET_F=$? |
710 |
|
test -x ./genmake_tc && ./genmake_tc >> genmake_tc.log 2>&1 |
711 |
|
RETVAL=$? |
712 |
|
if test "x$RETVAL" = x0 ; then |
713 |
|
HAVE_STAT=t |
714 |
|
DEFINES="$DEFINES -DHAVE_STAT" |
715 |
|
fi |
716 |
|
rm -f genmake_tc* |
717 |
|
} |
718 |
|
|
719 |
|
|
720 |
check_netcdf_libs() { |
check_netcdf_libs() { |
721 |
echo "" > genmake_tnc.log |
echo "" > genmake_tnc.log |
722 |
cat <<EOF > genmake_tnc.for |
cat <<EOF > genmake_tnc.for |
810 |
HAVE_FDATE= |
HAVE_FDATE= |
811 |
FC_NAMEMANGLE= |
FC_NAMEMANGLE= |
812 |
HAVE_CLOC= |
HAVE_CLOC= |
813 |
|
HAVE_STAT= |
814 |
HAVE_NETCDF= |
HAVE_NETCDF= |
815 |
HAVE_ETIME= |
HAVE_ETIME= |
816 |
|
|
1336 |
fi |
fi |
1337 |
rm -f genmake_t* |
rm -f genmake_t* |
1338 |
|
|
1339 |
|
printf " Can we use stat() through C calls... " |
1340 |
|
check_HAVE_STAT |
1341 |
|
if test "x$HAVE_STAT" != x ; then |
1342 |
|
echo "yes" |
1343 |
|
else |
1344 |
|
echo "no" |
1345 |
|
fi |
1346 |
|
rm -f genmake_t* |
1347 |
|
|
1348 |
printf " Can we create NetCDF-enabled binaries... " |
printf " Can we create NetCDF-enabled binaries... " |
1349 |
check_netcdf_libs |
check_netcdf_libs |
1350 |
if test "x$HAVE_NETCDF" != x ; then |
if test "x$HAVE_NETCDF" != x ; then |
2188 |
|
|
2189 |
# ... SVD ... |
# ... SVD ... |
2190 |
svdtaf: ad_taf_output.f ftl_taf_output.f |
svdtaf: ad_taf_output.f ftl_taf_output.f |
2191 |
svdall: svd_taf |
@echo "--->>> Only ran TAF to generate SVD code! <<<---" |
2192 |
|
@echo "--->>> Do make svdall afterwards to compile. <<<---" |
2193 |
|
svdall: svd_touch svd_taf |
2194 |
|
|
2195 |
svd_taf: ad_taf_output.o ftl_taf_output.o \$(OBJFILES) |
svd_taf: \$(OBJFILES) |
2196 |
\$(LINK) -o mitgcmuv_svd \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o ftl_taf_output.o \$(LIBS) |
\$(LINK) -o mitgcmuv_svd \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o ftl_taf_output.o \$(LIBS) |
2197 |
|
|
2198 |
|
@echo "--->>> Only COMPILE svd code! <<<---" |
2199 |
|
@echo "--->>> Assumes you previously <<<---" |
2200 |
|
@echo "--->>> did make svdtaf <<<---" |
2201 |
|
|
2202 |
|
svd_touch: |
2203 |
|
@echo "--->>> Only COMPILE svd code! <<<---" |
2204 |
|
@echo "--->>> Assumes you previously <<<---" |
2205 |
|
@echo "--->>> did make svdtaf <<<---" |
2206 |
|
touch ad_taf_output.f ftl_taf_output.f |
2207 |
|
\$(FC) \$(FFLAGS) \$(FOPTIM) -c ad_taf_output.f |
2208 |
|
\$(FC) \$(FFLAGS) \$(FOPTIM) -c ftl_taf_output.f |
2209 |
|
@$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 |
2210 |
|
cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h |
2211 |
|
-rm -f ftl_config.template |
2212 |
|
|
2213 |
#========================================= |
#========================================= |
2214 |
|
|