1029 |
echo " --> set HAVE_NETCDF='$HAVE_NETCDF'" >> $LOGFILE |
echo " --> set HAVE_NETCDF='$HAVE_NETCDF'" >> $LOGFILE |
1030 |
} |
} |
1031 |
|
|
1032 |
|
check_lapack_libs() { |
1033 |
|
if test ! "x$SKIP_LAPACK_CHECK" = x ; then |
1034 |
|
return |
1035 |
|
fi |
1036 |
|
echo >> $LOGFILE |
1037 |
|
echo "running: check_lapack_libs()" >> $LOGFILE |
1038 |
|
cat <<EOF > genmake_tla.F |
1039 |
|
program fgenla |
1040 |
|
integer info |
1041 |
|
integer ipiv( 2 ) |
1042 |
|
double precision ab( 4, 2 ), b( 2 ) |
1043 |
|
data ab / 0., 0., 1., 2., 0., 2., 1., 0. / |
1044 |
|
data b / 1., 1. / |
1045 |
|
call dgbsv( 2, 1, 1, 1, ab, 4, ipiv, b, 2, info ) |
1046 |
|
IF (info .NE. 0) write(*,*) 'Error:', info |
1047 |
|
write(*,*) b |
1048 |
|
end |
1049 |
|
EOF |
1050 |
|
echo "=== genmake_tla.F >>>" > genmake_tla.log |
1051 |
|
cat genmake_tla.F >> genmake_tla.log |
1052 |
|
echo "<<< genmake_tla.F ===" >> genmake_tla.log |
1053 |
|
RET_CPP=f |
1054 |
|
COMM="cat genmake_tla.F | $CPP $DEFINES $INCLUDES" |
1055 |
|
echo "$COMM" >> genmake_tla.log |
1056 |
|
eval $COMM > genmake_tla.$FS 2>/dev/null && RET_CPP=t |
1057 |
|
if test "x$RET_CPP" = xf ; then |
1058 |
|
echo " WARNING: CPP failed to pre-process the lapack test." \ |
1059 |
|
>> genmake_tla.log |
1060 |
|
echo " Please check that \$INCLUDES is properly set." \ |
1061 |
|
>> genmake_tla.log |
1062 |
|
fi |
1063 |
|
echo "$FC $FFLAGS $FOPTIM -c genmake_tla.$FS \ " >> genmake_tla.log |
1064 |
|
echo " && $LINK $FFLAGS $FOPTIM -o genmake_tla.o $LIBS" >> genmake_tla.log |
1065 |
|
$FC $FFLAGS $FOPTIM -c genmake_tla.$FS >> genmake_tla.log 2>&1 \ |
1066 |
|
&& $LINK $FFLAGS $FOPTIM -o genmake_tla genmake_tla.o $LIBS >> genmake_tla.log 2>&1 |
1067 |
|
RET_COMPILE=$? |
1068 |
|
cat genmake_tla.log >> $LOGFILE |
1069 |
|
|
1070 |
|
# test program execution not always possible (see check_netcdf_libs) |
1071 |
|
# |
1072 |
|
#test -x ./genmake_tla && ./genmake_tla >> genmake_tla.log 2>&1 |
1073 |
|
#RETVAL=$? |
1074 |
|
#if test "x$RET_COMPILE" = x0 -a "x$RETVAL" = x0 ; then |
1075 |
|
|
1076 |
|
if test "x$RET_COMPILE" = x0 ; then |
1077 |
|
HAVE_LAPACK=t |
1078 |
|
echo "check_lapack: successful" >> $LOGFILE |
1079 |
|
else |
1080 |
|
# try again with "-llapack" added to the libs |
1081 |
|
echo "==> try again with added '-llapack'" > genmake_tla.log |
1082 |
|
echo "cat genmake_tla.F | $CPP $DEFINES $INCLUDES > genmake_tla.$FS \ " >> genmake_tla.log |
1083 |
|
echo " && $FC $FFLAGS $FOPTIM -c genmake_tla.$FS \ " >> genmake_tla.log |
1084 |
|
echo " && $LINK $FFLAGS $FOPTIM -o genmake_tla genmake_tla.o $LIBS -llapack" >> genmake_tla.log |
1085 |
|
cat genmake_tla.F | $CPP $DEFINES $INCLUDES > genmake_tla.$FS 2>/dev/null \ |
1086 |
|
&& $FC $FFLAGS $FOPTIM -c genmake_tla.$FS >> genmake_tla.log 2>&1 \ |
1087 |
|
&& $LINK $FFLAGS $FOPTIM -o genmake_tla genmake_tla.o $LIBS -llapack >> genmake_tla.log 2>&1 |
1088 |
|
RET_COMPILE=$? |
1089 |
|
echo >> $LOGFILE |
1090 |
|
cat genmake_tla.log >> $LOGFILE |
1091 |
|
if test "x$RET_COMPILE" = x0 ; then |
1092 |
|
LIBS="$LIBS -llapack" |
1093 |
|
HAVE_LAPACK=t |
1094 |
|
echo "check_lapack: successful" >> $LOGFILE |
1095 |
|
else |
1096 |
|
# try again with "-lf77blas -lcblas" added to the libs |
1097 |
|
echo "==> try again with added '-llapack -lf77blas -lcblas'" > genmake_tla.log |
1098 |
|
echo "cat genmake_tla.F | $CPP $DEFINES $INCLUDES > genmake_tla.$FS \ " >> genmake_tla.log |
1099 |
|
echo " && $FC $FFLAGS $FOPTIM -c genmake_tla.$FS \ " >> genmake_tla.log |
1100 |
|
echo " && $LINK $FFLAGS $FOPTIM -o genmake_tla genmake_tla.o $LIBS -llapack -lf77blas -lcblas" >> genmake_tla.log |
1101 |
|
cat genmake_tla.F | $CPP $DEFINES $INCLUDES > genmake_tla.$FS 2>/dev/null \ |
1102 |
|
&& $FC $FFLAGS $FOPTIM -c genmake_tla.$FS >> genmake_tla.log 2>&1 \ |
1103 |
|
&& $LINK $FFLAGS $FOPTIM -o genmake_tla genmake_tla.o $LIBS -llapack -lf77blas -lcblas >> genmake_tla.log 2>&1 |
1104 |
|
RET_COMPILE=$? |
1105 |
|
echo >> $LOGFILE |
1106 |
|
cat genmake_tla.log >> $LOGFILE |
1107 |
|
if test "x$RET_COMPILE" = x0 ; then |
1108 |
|
LIBS="$LIBS -llapack -lf77blas -lcblas" |
1109 |
|
HAVE_LAPACK=t |
1110 |
|
echo "check_lapack: successful" >> $LOGFILE |
1111 |
|
else |
1112 |
|
# try again with "-latlas" added to the libs |
1113 |
|
echo "==> try again with added '-llapack -lf77blas -lcblas -latlas'" > genmake_tla.log |
1114 |
|
echo "cat genmake_tla.F | $CPP $DEFINES $INCLUDES > genmake_tla.$FS \ " >> genmake_tla.log |
1115 |
|
echo " && $FC $FFLAGS $FOPTIM -c genmake_tla.$FS \ " >> genmake_tla.log |
1116 |
|
echo " && $LINK $FFLAGS $FOPTIM -o genmake_tla genmake_tla.o $LIBS -llapack -lf77blas -lcblas -latlas" >> genmake_tla.log |
1117 |
|
cat genmake_tla.F | $CPP $DEFINES $INCLUDES > genmake_tla.$FS 2>/dev/null \ |
1118 |
|
&& $FC $FFLAGS $FOPTIM -c genmake_tla.$FS >> genmake_tla.log 2>&1 \ |
1119 |
|
&& $LINK $FFLAGS $FOPTIM -o genmake_tla genmake_tla.o $LIBS -llapack -lf77blas -lcblas -latlas >> genmake_tla.log 2>&1 |
1120 |
|
RET_COMPILE=$? |
1121 |
|
echo >> $LOGFILE |
1122 |
|
cat genmake_tla.log >> $LOGFILE |
1123 |
|
if test "x$RET_COMPILE" = x0 ; then |
1124 |
|
LIBS="$LIBS -llapack -lf77blas -lcblas -latlas" |
1125 |
|
HAVE_LAPACK=t |
1126 |
|
echo "check_lapack: successful" >> $LOGFILE |
1127 |
|
fi |
1128 |
|
fi |
1129 |
|
fi |
1130 |
|
fi |
1131 |
|
rm -f genmake_tla* |
1132 |
|
echo " --> set HAVE_LAPACK='$HAVE_LAPACK'" >> $LOGFILE |
1133 |
|
} |
1134 |
|
|
1135 |
|
|
1136 |
############################################################################### |
############################################################################### |
1137 |
# Sequential part of script starts here |
# Sequential part of script starts here |
1199 |
HAVE_NETCDF= |
HAVE_NETCDF= |
1200 |
HAVE_ETIME= |
HAVE_ETIME= |
1201 |
IGNORE_TIME= |
IGNORE_TIME= |
1202 |
|
HAVE_LAPACK= |
1203 |
|
|
1204 |
MODS= |
MODS= |
1205 |
TOOLSDIR= |
TOOLSDIR= |
1252 |
gm_s5="CFLAGS LIBS KPP KFLAGS1 KFLAGS2 KPPFILES NOOPTFILES NOOPTFLAGS" |
gm_s5="CFLAGS LIBS KPP KFLAGS1 KFLAGS2 KPPFILES NOOPTFILES NOOPTFLAGS" |
1253 |
gm_s6="TOOLSDIR SOURCEDIRS INCLUDEDIRS EXEDIR EXECUTABLE EXEHOOK" |
gm_s6="TOOLSDIR SOURCEDIRS INCLUDEDIRS EXEDIR EXECUTABLE EXEHOOK" |
1254 |
gm_s7="PWD THISHOST THISUSER THISDATE THISVER MACHINE" |
gm_s7="PWD THISHOST THISUSER THISDATE THISVER MACHINE" |
1255 |
gm_s8="FC_NAMEMANGLE HAVE_NETCDF HAVE_SYSTEM HAVE_FDATE HAVE_ETIME" |
gm_s8="FC_NAMEMANGLE HAVE_NETCDF HAVE_SYSTEM HAVE_FDATE HAVE_ETIME HAVE_LAPACK" |
1256 |
|
|
1257 |
# The following are all related to adjoint/tangent-linear stuff |
# The following are all related to adjoint/tangent-linear stuff |
1258 |
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" |
1912 |
else |
else |
1913 |
echo "no" |
echo "no" |
1914 |
fi |
fi |
1915 |
|
|
1916 |
|
printf " Can we create LAPACK-enabled binaries... " |
1917 |
|
check_lapack_libs |
1918 |
|
if test "x$HAVE_LAPACK" != x ; then |
1919 |
|
DEFINES="$DEFINES -DHAVE_LAPACK" |
1920 |
|
echo "yes" |
1921 |
|
else |
1922 |
|
echo "no" |
1923 |
|
fi |
1924 |
DEFINES="$DEFINES $IGNORE_TIME" |
DEFINES="$DEFINES $IGNORE_TIME" |
1925 |
|
|
1926 |
if test "x$EMBED_SRC" = xt ; then |
if test "x$EMBED_SRC" = xt ; then |
2234 |
fi |
fi |
2235 |
fi |
fi |
2236 |
|
|
2237 |
|
# Check for package RADTRANS: if LAPACK is not available, |
2238 |
|
# then issue a warning that the direct radtrans solver is not available. |
2239 |
|
if test "x$HAVE_LAPACK" != xt ; then |
2240 |
|
echo " $PACKAGES " | grep ' radtrans ' > /dev/null 2>&1 |
2241 |
|
RETVAL=$? |
2242 |
|
if test "x$RETVAL" = x0 ; then |
2243 |
|
cat <<EOF |
2244 |
|
********************************************************************* |
2245 |
|
WARNING: the "radtrans" package was enabled but tests failed to |
2246 |
|
compile LAPACK applications. This means that the direct radtrans |
2247 |
|
solver is not available and compilation will fail if it is enabled. |
2248 |
|
If you want to use the direct solver, please check that: |
2249 |
|
|
2250 |
|
1) LAPACK is correctly installed for this compiler and |
2251 |
|
2) the LIBS variable (within the "optfile") specifies the correct |
2252 |
|
LAPACK library to link against. |
2253 |
|
********************************************************************* |
2254 |
|
EOF |
2255 |
|
fi |
2256 |
|
fi |
2257 |
|
|
2258 |
if test "x${PKG_DEPEND}" != x ; then |
if test "x${PKG_DEPEND}" != x ; then |
2259 |
echo " applying package dependency rules" |
echo " applying package dependency rules" |
2260 |
ck= |
ck= |
2859 |
@make -f \$(MAKEFILE) clean |
@make -f \$(MAKEFILE) clean |
2860 |
@make -f \$(MAKEFILE) cleanlinks |
@make -f \$(MAKEFILE) cleanlinks |
2861 |
-rm -f \$(SPECIAL_FILES) f90mkdepend.log $MAKEFILE.old |
-rm -f \$(SPECIAL_FILES) f90mkdepend.log $MAKEFILE.old |
2862 |
-rm -f taf_command taf_output taf_ad.log taf_ad_flow.log |
-rm -f taf_command taf_output taf_ad.log taf_ad_flow.log taf_ftl.log |
2863 |
-rm -f genmake_warnings genmake_errors make.log |
-rm -f genmake_warnings genmake_errors make.log |
2864 |
|
|
2865 |
# remove also the executable, files that "genmake2" generates (except Makefile) |
# remove also the executable, files that "genmake2" generates (except Makefile) |
2866 |
# and output from a run (plus log files from testreport) |
# and output from a run (plus log files from testreport) |
2867 |
CLEAN: |
CLEAN: |
2868 |
@make -f \$(MAKEFILE) Clean |
@make -f \$(MAKEFILE) Clean |
2869 |
-rm -f \$(EXECUTABLE) \$(EXE_AD) *.bak |
-rm -f \$(EXECUTABLE) \$(EXE_AD) \$(EXE_FTL) *.bak |
2870 |
-rm -f $LOGFILE genmake_state genmake_*optfile |
-rm -f $LOGFILE genmake_state genmake_*optfile |
2871 |
-rm -f SIZE.h.mpi genmake.tr_log make.tr_log |
-rm -f SIZE.h.mpi genmake.tr_log make.tr_log |
2872 |
-find \$(EXEDIR) -name "*.meta" -exec rm {} \; |
-find \$(EXEDIR) -name "*.meta" -exec rm {} \; |
3037 |
adobj: ad_taf_output.o \$(OBJFILES) |
adobj: ad_taf_output.o \$(OBJFILES) |
3038 |
|
|
3039 |
# ... FTL ... |
# ... FTL ... |
3040 |
ftlall: ftl_taf |
ftlall: \$(EXE_FTL) |
3041 |
ftltaf: ftl_taf_output.$FS |
ftltaf: ftl_taf_output.$FS |
3042 |
ftltamc: ftl_tamc_output.$FS |
ftltamc: ftl_tamc_output.$FS |
3043 |
|
|
3059 |
ls -l ftl_input_code_ftl.$FS |
ls -l ftl_input_code_ftl.$FS |
3060 |
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 |
3061 |
|
|
3062 |
ftl_taf: ftl_taf_output.o \$(OBJFILES) |
\${EXE_FTL}: ftl_taf_output.o \$(OBJFILES) |
3063 |
\$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS) |
\$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS) |
3064 |
|
|
3065 |
ftl_tamc_output.$FS: ftl_input_code.$FS |
ftl_tamc_output.$FS: ftl_input_code.$FS |
3066 |
\$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS |
\$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS |