| 1 |
|
|
| 2 |
#! /usr/bin/env bash |
#! /usr/bin/env bash |
| 3 |
# |
# |
| 4 |
# $Header$ |
# $Header$ |
| 932 |
fi |
fi |
| 933 |
let modsCount=modsCount+1 |
let modsCount=modsCount+1 |
| 934 |
done |
done |
| 935 |
if test modsCount -gt 1 ; then |
if test $modsCount -gt 1 ; then |
| 936 |
echo "ERROR: some uses of MODS break with more than one directory specified" |
echo "ERROR: some uses of MODS break with more than one directory specified" |
| 937 |
exit -1; |
exit -1; |
| 938 |
fi |
fi |
| 1904 |
basename=${sf%%.F} |
basename=${sf%%.F} |
| 1905 |
isAD=`egrep ^$basename.f'[ ]*' adSrcFiles.tmp` |
isAD=`egrep ^$basename.f'[ ]*' adSrcFiles.tmp` |
| 1906 |
if test -z "$isAD" ; then |
if test -z "$isAD" ; then |
| 1907 |
echo " \\" >> nonADF77srclist.tmp |
toBeIgnored=`egrep ^$basename'[ ]*' ${MODS}/dontCompile` |
| 1908 |
printf " $sf" >> nonADF77srclist.tmp |
if test -z "$toBeIgnored" ; then |
| 1909 |
|
echo " \\" >> nonADF77srclist.tmp |
| 1910 |
|
printf " $sf" >> nonADF77srclist.tmp |
| 1911 |
|
else |
| 1912 |
|
echo "Ignoring $sf" |
| 1913 |
|
fi |
| 1914 |
fi |
fi |
| 1915 |
;; |
;; |
| 1916 |
F90) |
F90) |
| 1940 |
done |
done |
| 1941 |
rm -rf .links.tmp |
rm -rf .links.tmp |
| 1942 |
echo "" >> F77srclist.tmp |
echo "" >> F77srclist.tmp |
| 1943 |
|
for i in `cat ${MODS}/keepOriginal` |
| 1944 |
|
do |
| 1945 |
|
echo " \\" >> nonADF77srclist.tmp |
| 1946 |
|
printf " $i" >> nonADF77srclist.tmp |
| 1947 |
|
done |
| 1948 |
echo "" >> nonADF77srclist.tmp |
echo "" >> nonADF77srclist.tmp |
| 1949 |
echo "" >> csrclist.tmp |
echo "" >> csrclist.tmp |
| 1950 |
echo "" >> F90srclist.tmp |
echo "" >> F90srclist.tmp |
| 2218 |
printf "AD_FILES = " >> $MAKEFILE |
printf "AD_FILES = " >> $MAKEFILE |
| 2219 |
AD_FILES=`cat adSrcFiles.tmp` |
AD_FILES=`cat adSrcFiles.tmp` |
| 2220 |
for i in $AD_FILES ; do |
for i in $AD_FILES ; do |
| 2221 |
|
basename=${i%%.f} |
| 2222 |
|
toBeIgnored=`egrep ^$basename'[ ]*' ${MODS}/dontCompile` |
| 2223 |
|
if test -z "$toBeIgnored" ; then |
| 2224 |
echo " \\" >> $MAKEFILE |
echo " \\" >> $MAKEFILE |
| 2225 |
printf " $i" >> $MAKEFILE |
printf " $i" >> $MAKEFILE |
| 2226 |
|
else |
| 2227 |
|
echo "Ignoring $i" |
| 2228 |
|
fi |
| 2229 |
done |
done |
| 2230 |
echo >> $MAKEFILE |
echo >> $MAKEFILE |
| 2231 |
rm -f adSrcFiles.tmp |
rm -f adSrcFiles.tmp |
| 2244 |
PARAMS \ |
PARAMS \ |
| 2245 |
BAR2 \ |
BAR2 \ |
| 2246 |
BARRIER \ |
BARRIER \ |
|
CD_CODE_VARS \ |
|
| 2247 |
CG2D \ |
CG2D \ |
| 2248 |
CG3D \ |
CG3D \ |
| 2249 |
DFILE \ |
DFILE \ |
| 2276 |
.PHONY: adAll |
.PHONY: adAll |
| 2277 |
adAll: \$(EXE_AD) |
adAll: \$(EXE_AD) |
| 2278 |
|
|
|
# these are all fixed format: |
|
|
CB2M_F77_TO_FF90_SRC_FILES=\$(F77_SRC_FILES:.F=_cb2m.FF90) |
|
|
CB2M_F90_SRC_FILES=\$(addsuffix _mod.FF90, \$(CB2M_F90_SRC_NAMES)) |
|
| 2279 |
CB2M_F90_PP_SRC_FILES=\$(addsuffix _mod.f$FS90, \$(CB2M_F90_SRC_NAMES)) |
CB2M_F90_PP_SRC_FILES=\$(addsuffix _mod.f$FS90, \$(CB2M_F90_SRC_NAMES)) |
| 2280 |
|
|
| 2281 |
.PRECIOUS: \$(CB2M_F90_PP_SRC_FILES) \$(NON_AD_F77_SRC_FILES:.F=_cb2m.ff90) |
.PRECIOUS: \$(CB2M_F90_PP_SRC_FILES) \$(NON_AD_F77_SRC_FILES:.F=_cb2m.ff90) |
| 2282 |
|
|
| 2283 |
.PHONY: adDepend |
.PHONY: adDepend |
| 2284 |
#this file is included at the bottom |
adDepend: \$(ALL_LINKED_FILES) \$(addsuffix _mod.h, \$(CB2M_F90_SRC_NAMES)) \$(addsuffix _mod.FF90, \$(CB2M_F90_SRC_NAMES)) \$(F77_SRC_FILES:.F=_cb2m.FF90) |
|
adDepend: \$(ALL_LINKED_FILES) \$(CB2M_F90_SRC_FILES) \$(CB2M_F77_TO_FF90_SRC_FILES) |
|
| 2285 |
\$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(F77_SRC_FILES) |
\$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(F77_SRC_FILES) |
| 2286 |
\$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE) |
\$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE) |
| 2287 |
-rm -f makedepend.out |
-rm -f makedepend.out |
| 2288 |
|
|
|
|
|
| 2289 |
OPENAD_SUPPORT_F90_SRC_FILES = \ |
OPENAD_SUPPORT_F90_SRC_FILES = \ |
| 2290 |
w2f__types.f90 \ |
w2f__types.f90 \ |
| 2291 |
active_module.f90 \ |
active_module.f90 \ |
| 2295 |
OpenAD_tape.f90 |
OpenAD_tape.f90 |
| 2296 |
|
|
| 2297 |
OPENAD_SUPPORT_C_SRC_FILES = \ |
OPENAD_SUPPORT_C_SRC_FILES = \ |
| 2298 |
iaddr.c |
iaddr.c \ |
| 2299 |
|
timeRatio.c |
| 2300 |
|
|
| 2301 |
|
f95_test_mods.f90: \$(OPENAD_SUPPORT_F90_SRC_FILES) |
| 2302 |
|
cat \$^ > \$@ |
| 2303 |
|
|
| 2304 |
AD_OBJ_FILES=\$(OPENAD_SUPPORT_F90_SRC_FILES:.f90=.o) \$(OPENAD_SUPPORT_C_SRC_FILES:.c=.o) all_mods.xb.x2w.w2f.pp.o ad_input_code.w2f.canon.xb.x2w.w2f.rs.pp.o \$(NON_AD_F77_SRC_FILES:.F=_cb2m.o) \$(C_SRC_FILES:.c=.o) \$(F90_SRC_FILES:.F90=.o) |
f95_test.f90: all_mods.xb.x2w.w2f.pp.f \$(NON_AD_F77_SRC_FILES:.F=_cb2m.ff90) ad_input_code.w2f.canon.xb.x2w.w2f.rs.pp.f |
| 2305 |
|
cat \$^ > \$@ |
| 2306 |
|
|
| 2307 |
|
f95_test.out: f95_test_mods.f90 f95_test.f90 |
| 2308 |
|
f95 -w=unused -maxcontin=132 -c f95_test_mods.f90 > \$@ 2>&1 |
| 2309 |
|
f95 -w=unused -maxcontin=132 -c -fixed f95_test.f90 >> \$@ 2>&1 |
| 2310 |
|
|
| 2311 |
\$(EXE_AD): \$(AD_OBJ_FILES) |
AD_OBJ_FILES=\$(OPENAD_SUPPORT_F90_SRC_FILES:.f90=.o) \$(OPENAD_SUPPORT_C_SRC_FILES:.c=.o) all_mods.xb.x2w.w2f.pp.o ad_input_code.w2f.canon.xb.x2w.w2f.rs.pp.o \$(NON_AD_F77_SRC_FILES:.F=_cb2m.o) \$(C_SRC_FILES:.c=.o) \$(F90_SRC_FILES:.F90=.o) |
| 2312 |
|
|
| 2313 |
|
\$(EXE_AD): \$(ALL_LINKED_FILES) \$(addsuffix _mod.h, \$(CB2M_F90_SRC_NAMES)) \$(AD_OBJ_FILES) |
| 2314 |
@echo Creating \$@ ... |
@echo Creating \$@ ... |
| 2315 |
\$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$^ \$(LIBS) |
\$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES) \$(LIBS) |
| 2316 |
|
|
| 2317 |
# makefile debug rule |
# makefile debug rule |
| 2318 |
openad: ad_input_code.w2f.canon.xb.x2w.w2f.rs.pp.f |
openad: ad_input_code.w2f.canon.xb.x2w.w2f.rs.pp.f |
| 2319 |
.PHONY: openad |
.PHONY: openad |
| 2320 |
|
|
| 2321 |
CB2MFILES= cb2m1.csh cb2m1.awk cb2m2.bash |
# create the module files |
| 2322 |
# create the module files and change the header files |
%_mod.FF90 : %.h ${MODS}/cb2mGetModules.csh ${MODS}/cb2mGetModules.awk |
| 2323 |
\$(CB2M_F90_SRC_FILES) \$(addsuffix _mod.h, \$(CB2M_F90_SRC_NAMES)) : \$(ALL_LINKED_FILES) \$(CB2MFILES) |
${MODS}/cb2mGetModules.csh $< ${MODS}/cb2mGetModules.awk |
| 2324 |
./cb2m1.csh \$(CB2M_F90_SRC_NAMES) |
|
| 2325 |
|
# create the header files |
| 2326 |
# change everybody else to use the module files: |
%_mod.h : %.h ${MODS}/cb2mGetHeaders.csh ${MODS}/cb2mGetHeaders.awk |
| 2327 |
\$(CB2M_F77_TO_FF90_SRC_FILES): \$(addsuffix _mod.h, \$(CB2M_F90_SRC_NAMES)) \$(CB2M_F90_SRC_FILES) |
${MODS}/cb2mGetHeaders.csh $< ${MODS}/cb2mGetHeaders.awk |
| 2328 |
./cb2m2.bash |
|
| 2329 |
|
# change everybody else to use the new module files: |
| 2330 |
|
%_cb2m.FF90 : %.F ${MODS}/cb2mUseModules.bash |
| 2331 |
|
${MODS}/cb2mUseModules.bash $< |
| 2332 |
|
|
| 2333 |
# makefile debug rule |
# makefile debug rule |
| 2334 |
small_f: \$(CB2M_F77_PP_SRC_FILES) \$(CB2M_F90_PP_SRC_FILES) |
small_f: \$(CB2M_F90_PP_SRC_FILES) |
| 2335 |
.PHONY: small_f |
.PHONY: small_f |
| 2336 |
|
|
| 2337 |
ad_output.txt: \$(EXE_AD) |
ad_output.txt: \$(EXE_AD) |
| 2345 |
ad_input_code.$FS: ${MODS}/maxMinDefs.f \$(CB2M_AD_FILES) |
ad_input_code.$FS: ${MODS}/maxMinDefs.f \$(CB2M_AD_FILES) |
| 2346 |
cat \$^ > \$@ |
cat \$^ > \$@ |
| 2347 |
|
|
|
\$(CB2MFILES): |
|
|
\$(LN) \$(addprefix ${MODS}/, \$(CB2MFILES)) . |
|
|
|
|
| 2348 |
# strip all comments and blanks to reduce |
# strip all comments and blanks to reduce |
| 2349 |
# the file size in order to reduce perl's memory requirements |
# the file size in order to reduce perl's memory requirements |
| 2350 |
ad_input_code_sf.f : ad_input_code.f |
ad_input_code_sf.f : ad_input_code.f |
| 2379 |
|
|
| 2380 |
# XAIF -> XAIF' |
# XAIF -> XAIF' |
| 2381 |
ad_input_code_sf.w2f.canon.xb.xaif : ad_input_code_sf.w2f.canon.xaif xaif.xsd xaif_base.xsd xaif_inlinable_intrinsics.xsd xaif_derivative_propagator.xsd xaif_output.xsd openad_adm |
ad_input_code_sf.w2f.canon.xb.xaif : ad_input_code_sf.w2f.canon.xaif xaif.xsd xaif_base.xsd xaif_inlinable_intrinsics.xsd xaif_derivative_propagator.xsd xaif_output.xsd openad_adm |
| 2382 |
./openad_adm -i \$< -c \${XAIFSCHEMAROOT}/schema/examples/inlinable_intrinsics.xaif -o \$@ -I |
./openad_adm -i \$< -c \${XAIFSCHEMAROOT}/schema/examples/inlinable_intrinsics.xaif -o \$@ -I -r -p "recip_hFacC recip_rA" |
| 2383 |
|
|
| 2384 |
# XAIF' -> WHIRL' |
# XAIF' -> WHIRL' |
| 2385 |
ad_input_code_sf.w2f.canon.xb.x2w.B : ad_input_code_sf.w2f.canon.xb.xaif xaif2whirl |
ad_input_code_sf.w2f.canon.xb.x2w.B : ad_input_code_sf.w2f.canon.xb.xaif xaif2whirl |
| 2386 |
./xaif2whirl --structured ad_input_code_sf.w2f.canon.B \$< |
./xaif2whirl --debug 1 --structured ad_input_code_sf.w2f.canon.B \$< |
| 2387 |
|
|
| 2388 |
# WHIRL' -> F' |
# WHIRL' -> F' |
| 2389 |
ad_input_code_sf.w2f.canon.xb.x2w.w2f.f: ad_input_code_sf.w2f.canon.xb.x2w.B whirl2f whirl2f_be |
ad_input_code_sf.w2f.canon.xb.x2w.w2f.f: ad_input_code_sf.w2f.canon.xb.x2w.B whirl2f whirl2f_be |
| 2397 |
rm \$<.1 |
rm \$<.1 |
| 2398 |
|
|
| 2399 |
# postprocess F' |
# postprocess F' |
| 2400 |
ad_input_code_sf.w2f.canon.xb.x2w.w2f.rs.pp.f: ad_input_code_sf.w2f.canon.xb.x2w.w2f.rs.f multi-pp.pl ${MODS}/ad_inline.f ${MODS}/ad_template.checkpoint.f ${MODS}/ad_template.plain.f ${MODS}/ad_template.split.f |
ad_input_code_sf.w2f.canon.xb.x2w.w2f.rs.pp.f: ad_input_code_sf.w2f.canon.xb.x2w.w2f.rs.f multi-pp.pl ${MODS}/ad_inline.f ${MODS}/ad_template.checkpoint.f ${MODS}/ad_template.plain.f ${MODS}/ad_template.split.f ${MODS}/ad_template.sa_cg2d.f |
| 2401 |
perl multi-pp.pl -inline=${MODS}/ad_inline.f \$< |
perl multi-pp.pl -inline=${MODS}/ad_inline.f \$< |
| 2402 |
cat \$@ | sed 's/RETURN//' > \$@.1 |
cat \$@ | sed 's/RETURN//' > \$@.1 |
| 2403 |
mv \$@.1 \$@ |
mv \$@.1 \$@ |
| 2409 |
# remove the transformed globals module from the |
# remove the transformed globals module from the |
| 2410 |
# transformed ad_input_code file |
# transformed ad_input_code file |
| 2411 |
# and remove for now the duplicate variables |
# and remove for now the duplicate variables |
| 2412 |
ad_input_code.w2f.canon.xb.x2w.w2f.rs.pp.f: ad_input_code_sf.w2f.canon.xb.x2w.w2f.rs.pp.f |
# and fix 2 data statements |
| 2413 |
|
ad_input_code.w2f.canon.xb.x2w.w2f.rs.pp.f: ad_input_code_sf.w2f.canon.xb.x2w.w2f.rs.pp.f ${MODS}/fixData.sed |
| 2414 |
|
# cat \$< | sed '/MODULE /,/END MODULE/d' | sed '/^ INTEGER(w2f__i4) DOLOOP_UB/d' | sed -f ${MODS}/fixData.sed > \$@ |
| 2415 |
cat \$< | sed '/MODULE /,/END MODULE/d' | sed '/^ INTEGER(w2f__i4) DOLOOP_UB/d' > \$@ |
cat \$< | sed '/MODULE /,/END MODULE/d' | sed '/^ INTEGER(w2f__i4) DOLOOP_UB/d' > \$@ |
| 2416 |
|
|
| 2417 |
# setup some links |
# setup some links |
| 2426 |
\$(LN) ${MODS}/\$@ . |
\$(LN) ${MODS}/\$@ . |
| 2427 |
|
|
| 2428 |
whirl2xaif xaif2whirl: |
whirl2xaif xaif2whirl: |
| 2429 |
\$(LN) \${OPENADROOT}/OpenADFortTk/OpenADFortTk-i686-Linux/bin/\$@ . |
\$(LN) \${OPENADROOT}/OpenADFortTk/OpenADFortTk-x86-Linux/bin/\$@ . |
| 2430 |
|
|
| 2431 |
%.pl: |
%.pl: |
| 2432 |
\$(LN) \${OPENADROOT}/OpenADFortTk/OpenADFortTk-i686-Linux/bin/\$@ . |
\$(LN) \${OPENADROOT}/OpenADFortTk/OpenADFortTk-x86-Linux/bin/\$@ . |
| 2433 |
|
|
| 2434 |
%.py: |
%.py: |
| 2435 |
\$(LN) \${OPENADROOT}/OpenADFortTk/tools/canonicalize/\$@ . |
\$(LN) \${OPENADROOT}/OpenADFortTk/tools/canonicalize/\$@ . |