2017 |
# Optim./debug for FC |
# Optim./debug for FC |
2018 |
FFLAGS = ${FFLAGS} |
FFLAGS = ${FFLAGS} |
2019 |
FOPTIM = ${FOPTIM} |
FOPTIM = ${FOPTIM} |
2020 |
# Optim./debug for FC |
# Optim./debug/format for FC |
2021 |
F90FLAGS = ${F90FLAGS} |
F90FLAGS = ${F90FLAGS} |
2022 |
F90OPTIM = ${F90OPTIM} |
F90OPTIM = ${F90OPTIM} |
2023 |
|
F90FIXEDFORMAT = ${F90FIXEDFORMAT} |
2024 |
# Flags for CC |
# Flags for CC |
2025 |
CFLAGS = ${CFLAGS} |
CFLAGS = ${CFLAGS} |
2026 |
# Files that should not be optimized |
# Files that should not be optimized |
2045 |
# add definitions for preprocessed sources |
# add definitions for preprocessed sources |
2046 |
# and note that not all systems allow case sensitive extensions |
# and note that not all systems allow case sensitive extensions |
2047 |
# hence the $FS and $FS90 here. |
# hence the $FS and $FS90 here. |
2048 |
|
# for fixed format f90 files we use ff90 or FF90 resp |
2049 |
|
# but these are not expected to be the original source files |
2050 |
|
|
2051 |
echo 'F77_PP_SRC_FILES = $(F77_SRC_FILES:.F=.'$FS')' >> $MAKEFILE |
echo 'F77_PP_SRC_FILES = $(F77_SRC_FILES:.F=.'$FS')' >> $MAKEFILE |
2052 |
echo 'F90_PP_SRC_FILES = $(F90_SRC_FILES:.F90=.'$FS90')' >> $MAKEFILE |
echo 'F90_PP_SRC_FILES = $(F90_SRC_FILES:.F90=.'$FS90')' >> $MAKEFILE |
2053 |
echo >> $MAKEFILE |
echo >> $MAKEFILE |
2054 |
echo '.SUFFIXES:' >> $MAKEFILE |
echo '.SUFFIXES:' >> $MAKEFILE |
2055 |
echo '.SUFFIXES: .o .'$FS' .p .F .c .'$FS90' .F90' >> $MAKEFILE |
echo '.SUFFIXES: .o .'$FS' .p .F .c .f'$FS90' .'$FS90' .FF90 .F90' >> $MAKEFILE |
2056 |
|
|
2057 |
cat >>$MAKEFILE <<EOF |
cat >>$MAKEFILE <<EOF |
2058 |
|
|
2116 |
\$(FC) \$(FFLAGS) \$(FOPTIM) -c \$< |
\$(FC) \$(FFLAGS) \$(FOPTIM) -c \$< |
2117 |
.F90.$FS90: |
.F90.$FS90: |
2118 |
\$(CPP) \$(DEFINES) \$(INCLUDES) > \$@ |
\$(CPP) \$(DEFINES) \$(INCLUDES) > \$@ |
2119 |
|
.FF90.f$FS90: |
2120 |
|
\$(CPP) \$(DEFINES) \$(INCLUDES) > \$@ |
2121 |
.$FS90.o: |
.$FS90.o: |
2122 |
\$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$< |
\$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$< |
2123 |
|
.f$FS90.o: |
2124 |
|
\$(F90C) \$(F90FIXEDFORMAT) \$(F90FLAGS) \$(F90OPTIM) -c \$< |
2125 |
.c.o: |
.c.o: |
2126 |
\$(CC) \$(CFLAGS) -c \$< |
\$(CC) \$(CFLAGS) -c \$< |
2127 |
|
|
2146 |
-rm -f genmake_state genmake_*optfile genmake_warnings make.log run.log *.bak |
-rm -f genmake_state genmake_*optfile genmake_warnings make.log run.log *.bak |
2147 |
|
|
2148 |
clean: |
clean: |
2149 |
-rm -rf *.o *.$FS *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template *_mod.h *_mod.F90 *.mod-whirl ad_input* |
-rm -rf *.o *.$FS *.p *.f$FS90 *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template *_mod.h *_mod.F90 *.mod-whirl ad_input* |
2150 |
|
-rm -rf script.sed reslice.dat |
2151 |
|
|
2152 |
cleanlinks: |
cleanlinks: |
2153 |
-find . -type l -exec rm {} \; |
-find . -type l -exec rm {} \; |
2205 |
# to pick these out automatically |
# to pick these out automatically |
2206 |
# but we will be using the |
# but we will be using the |
2207 |
# canonicalizer anyway |
# canonicalizer anyway |
2208 |
CANON_F90_SRC_NAMES = \ |
CB2M_F90_SRC_NAMES = \ |
2209 |
SIZE \ |
SIZE \ |
2210 |
EEPARAMS \ |
EEPARAMS \ |
2211 |
PARAMS \ |
PARAMS \ |
2245 |
.PHONY: adAll |
.PHONY: adAll |
2246 |
adAll: adDepend \$(EXE_AD) |
adAll: adDepend \$(EXE_AD) |
2247 |
|
|
2248 |
CANON_F90_SRC_FILES= \ |
# these are all fixed format: |
2249 |
\$(addsuffix _mod.F90, \$(CANON_F90_SRC_NAMES)) |
CB2M_F77_TO_FF90_SRC_FILES=\$(F77_SRC_FILES:.F=_cb2m.FF90) |
2250 |
CANON_F77_SRC_FILES= \ |
CB2M_F90_SRC_FILES=\$(addsuffix _mod.FF90, \$(CB2M_F90_SRC_NAMES)) |
2251 |
\$(F77_SRC_FILES:.F=_cb2m.F) |
CB2M_F90_PP_SRC_FILES=\$(addsuffix _mod.f'$FS90', \$(CB2M_F90_SRC_NAMES)) |
2252 |
|
|
2253 |
.PHONY: adDepend |
.PHONY: adDepend |
2254 |
adDepend: \$(ALL_LINKED_FILES) \$(CANON_F77_SRC_FILES) \$(CANON_F90_SRC_FILES) |
adDepend: \$(ALL_LINKED_FILES) \$(CB2M_F90_SRC_FILES) \$(CB2M_F77_TO_FF90_SRC_FILES) |
2255 |
\$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(CANON_F77_SRC_FILES) |
\$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(CB2M_F77_TO_FF90_SRC_FILES) |
2256 |
\$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE) |
\$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE) |
2257 |
-rm -f makedepend.out |
-rm -f makedepend.out |
2258 |
|
|
2267 |
OPENAD_SUPPORT_C_SRC_FILES = \ |
OPENAD_SUPPORT_C_SRC_FILES = \ |
2268 |
iaddr.c |
iaddr.c |
2269 |
|
|
2270 |
AD_OBJ_FILES=ad_input_code.w2f.canon.xb.x2w.w2f.rs.pp.o |
AD_OBJ_FILES=\$(OPENAD_SUPPORT_F90_SRC_FILES:.f90=.o) \$(OPENAD_SUPPORT_C_SRC_FILES:.c=.o) ad_input_code.w2f.canon.xb.x2w.w2f.rs.pp.o |
2271 |
|
|
2272 |
\$(EXE_AD): \$(OPENAD_SUPPORT_F90_SRC_FILES:.f90=.o) \$(OPENAD_SUPPORT_C_SRC_FILES:.c=.o) \$(AD_OBJ_FILES) |
\$(EXE_AD): \$(AD_OBJ_FILES) |
2273 |
@echo Creating \$@ ... |
@echo Creating \$@ ... |
2274 |
\$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$* \$(LIBS) |
\$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$* \$(LIBS) |
2275 |
|
|
2279 |
|
|
2280 |
CB2MFILES= cb2m1.csh cb2m1.awk cb2m2.bash |
CB2MFILES= cb2m1.csh cb2m1.awk cb2m2.bash |
2281 |
# create the module files: |
# create the module files: |
2282 |
\$(CANON_F90_SRC_FILES) : \$(ALL_LINKED_FILES) \$(CB2MFILES) |
\$(CB2M_F90_SRC_FILES) : \$(ALL_LINKED_FILES) \$(CB2MFILES) |
2283 |
./cb2m1.csh \$(CANON_F90_SRC_NAMES) |
./cb2m1.csh \$(CB2M_F90_SRC_NAMES) |
2284 |
|
|
2285 |
# change everybody else to use the module files: |
# change everybody else to use the module files: |
2286 |
\$(CANON_F77_SRC_FILES): \$(CANON_F90_SRC_FILES) |
\$(CB2M_F77_TO_FF90_SRC_FILES): \$(CB2M_F90_SRC_FILES) |
2287 |
./cb2m2.bash |
./cb2m2.bash |
2288 |
|
|
|
# there is no extra extension for now |
|
|
CANON_F90_PP_SRC_FILES=\$(addsuffix _mod.'$FS90', \$(CANON_F90_SRC_NAMES)) |
|
|
|
|
|
## special preprocessor rule: |
|
|
#\$(CANON_F90_PP_SRC_FILES): \$(CANON_F90_SRC_FILES) |
|
|
# \$(FC) -c -fixed \$^ |
|
|
|
|
2289 |
# makefile debug rule |
# makefile debug rule |
2290 |
small_f: \$(CANON_F77_PP_SRC_FILES) \$(CANON_F90_PP_SRC_FILES) |
small_f: \$(CB2M_F77_PP_SRC_FILES) \$(CB2M_F90_PP_SRC_FILES) |
2291 |
.PHONY: small_f |
.PHONY: small_f |
2292 |
|
|
2293 |
ad_output.txt: \$(AD_EXE) |
ad_output.txt: \$(AD_EXE) |
2294 |
@printf 'running ... ' |
@printf 'running ... ' |
2295 |
@\$(AD_EXE) > \$@ |
@\$(AD_EXE) > \$@ |
2296 |
|
|
2297 |
CANON_AD_FILES=\$(AD_FILES:.f=_cb2m.f) |
CB2M_AD_FILES=\$(AD_FILES:.f=_cb2m.ff90) |
2298 |
ad_input_code.$FS: \$(CANON_AD_FILES) |
ad_input_code.$FS: \$(CB2M_AD_FILES) |
2299 |
# @$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 |
2300 |
# 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 |
2301 |
# -rm -f ad_config.template |
# -rm -f ad_config.template |
2302 |
cat \$(CANON_AD_FILES) > ad_input_code.$FS |
cat \$(CB2M_AD_FILES) > ad_input_code.$FS |
2303 |
|
|
2304 |
\$(CB2MFILES): |
\$(CB2MFILES): |
2305 |
\$(LN) \$(addprefix ../code_ad/, \$(CB2MFILES)) . |
\$(LN) \$(addprefix ../code_ad/, \$(CB2MFILES)) . |