| 2293 |
printf 'C_SRC_FILES = ' > csrclist.tmp |
printf 'C_SRC_FILES = ' > csrclist.tmp |
| 2294 |
printf 'F90_SRC_FILES = ' > F90srclist.tmp |
printf 'F90_SRC_FILES = ' > F90srclist.tmp |
| 2295 |
printf 'H_SRC_FILES = ' > hsrclist.tmp |
printf 'H_SRC_FILES = ' > hsrclist.tmp |
| 2296 |
|
printf 'AD_FLOW_FILES = ' > ad_flow_files.tmp |
| 2297 |
alldirs="$SOURCEDIRS $INCLUDEDIRS ." |
alldirs="$SOURCEDIRS $INCLUDEDIRS ." |
| 2298 |
for d in $alldirs ; do |
for d in $alldirs ; do |
| 2299 |
deplist= |
deplist= |
| 2369 |
echo " \\" >> hsrclist.tmp |
echo " \\" >> hsrclist.tmp |
| 2370 |
printf " $sf" >> hsrclist.tmp |
printf " $sf" >> hsrclist.tmp |
| 2371 |
;; |
;; |
| 2372 |
|
flow) |
| 2373 |
|
echo " \\" >> ad_flow_files.tmp |
| 2374 |
|
printf " $sf" >> ad_flow_files.tmp |
| 2375 |
|
;; |
| 2376 |
esac |
esac |
| 2377 |
fi |
fi |
| 2378 |
fi |
fi |
| 2383 |
echo "" >> srclinks.tmp |
echo "" >> srclinks.tmp |
| 2384 |
echo "# These files are linked from $d" >> srclinks.tmp |
echo "# These files are linked from $d" >> srclinks.tmp |
| 2385 |
echo "$deplist :" >> srclinks.tmp |
echo "$deplist :" >> srclinks.tmp |
| 2386 |
printf "\t\$(LN) %s/\$@ \$@\n" $d >> srclinks.tmp |
# We need to make sure that the link isn't already there. |
| 2387 |
|
# This may happen when make thinks that a header file has to be "remade" |
| 2388 |
|
# because a module it depends on has changed. In this case we do nothing. |
| 2389 |
|
printf "\tif [ ! -L \$@ ]; then \$(LN) %s/\$@ \$@; fi\n" $d >> srclinks.tmp |
| 2390 |
fi |
fi |
| 2391 |
fi |
fi |
| 2392 |
done |
done |
| 2401 |
echo "" >> csrclist.tmp |
echo "" >> csrclist.tmp |
| 2402 |
echo "" >> F90srclist.tmp |
echo "" >> F90srclist.tmp |
| 2403 |
echo "" >> hsrclist.tmp |
echo "" >> hsrclist.tmp |
| 2404 |
|
echo "" >> ad_flow_files.tmp |
| 2405 |
|
|
| 2406 |
if test -f $MAKEFILE ; then |
if test -f $MAKEFILE ; then |
| 2407 |
mv -f $MAKEFILE "$MAKEFILE.bak" |
mv -f $MAKEFILE "$MAKEFILE.bak" |
| 2519 |
cat csrclist.tmp >> $MAKEFILE |
cat csrclist.tmp >> $MAKEFILE |
| 2520 |
cat F90srclist.tmp >> $MAKEFILE |
cat F90srclist.tmp >> $MAKEFILE |
| 2521 |
cat hsrclist.tmp >> $MAKEFILE |
cat hsrclist.tmp >> $MAKEFILE |
| 2522 |
|
cat ad_flow_files.tmp >> $MAKEFILE |
| 2523 |
|
|
| 2524 |
rm -f F77srclist.tmp nonADF77srclist.tmp csrclist.tmp hsrclist.tmp flist.tmp clist.tmp F90srclist.tmp |
rm -f F77srclist.tmp nonADF77srclist.tmp csrclist.tmp F90srclist.tmp hsrclist.tmp ad_flow_files.tmp |
| 2525 |
|
|
| 2526 |
echo >> $MAKEFILE |
echo >> $MAKEFILE |
| 2527 |
|
|
| 2533 |
|
|
| 2534 |
echo 'F77_PP_SRC_FILES = $(F77_SRC_FILES:.F=.'$FS')' >> $MAKEFILE |
echo 'F77_PP_SRC_FILES = $(F77_SRC_FILES:.F=.'$FS')' >> $MAKEFILE |
| 2535 |
echo 'F90_PP_SRC_FILES = $(F90_SRC_FILES:.F90=.'$FS90')' >> $MAKEFILE |
echo 'F90_PP_SRC_FILES = $(F90_SRC_FILES:.F90=.'$FS90')' >> $MAKEFILE |
| 2536 |
|
echo 'OBJFILES= $(F77_SRC_FILES:.F=.o) $(C_SRC_FILES:.c=.o) $(F90_SRC_FILES:.F90=.o)' >> $MAKEFILE |
| 2537 |
|
echo 'FLOFILES = $(AD_FLOW_FILES:.flow=.flowdir)' >> $MAKEFILE |
| 2538 |
echo >> $MAKEFILE |
echo >> $MAKEFILE |
| 2539 |
echo '.SUFFIXES:' >> $MAKEFILE |
echo '.SUFFIXES:' >> $MAKEFILE |
| 2540 |
echo '.SUFFIXES: .o .'$FS' .p .F .c .f'$FS90' .'$FS90' .FF90 .F90' >> $MAKEFILE |
echo '.SUFFIXES: .o .'$FS' .p .F .c .f'$FS90' .'$FS90' .FF90 .F90 .flowdir .flow' >> $MAKEFILE |
| 2541 |
|
|
| 2542 |
cat >>$MAKEFILE <<EOF |
cat >>$MAKEFILE <<EOF |
| 2543 |
|
|
| 2544 |
# all the source files linked from the various locations: |
all: \$(EXECUTABLE) |
| 2545 |
ALL_LINKED_FILES= \ |
\$(EXECUTABLE): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(OBJFILES) \$(EMBEDDED_FILES) |
| 2546 |
\$(F77_SRC_FILES) \ |
@echo Creating \$@ ... |
| 2547 |
\$(C_SRC_FILES) \ |
\$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS) |
| 2548 |
\$(H_SRC_FILES) \ |
depend: |
| 2549 |
\$(F90_SRC_FILES) \ |
@make links |
|
\$(SPECIAL_FILES) |
|
|
|
|
|
all: depend \$(EXECUTABLE) |
|
|
|
|
|
depend: \$(ALL_LINKED_FILES) |
|
| 2550 |
\$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(F77_SRC_FILES) |
\$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(F77_SRC_FILES) |
| 2551 |
\$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE) |
\$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE) |
| 2552 |
-rm -f makedepend.out |
-rm -f makedepend.out |
| 2553 |
|
|
| 2554 |
.PHONY: depend |
lib: libmitgcmuv.a |
| 2555 |
|
|
| 2556 |
OBJFILES= \$(F77_SRC_FILES:.F=.o) \$(C_SRC_FILES:.c=.o) \$(F90_SRC_FILES:.F90=.o) |
libmitgcmuv.a: \$(OBJFILES) |
| 2557 |
|
ar rcv libmitgcmuv.a \$(OBJFILES) |
| 2558 |
|
ar d libmitgcmuv.a main.o |
| 2559 |
|
|
| 2560 |
\$(EXECUTABLE): \$(OBJFILES) |
links: \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(SPECIAL_FILES) |
| 2561 |
@echo Creating \$@ ... |
|
| 2562 |
\$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS) |
small_f: \$(F77_PP_SRC_FILES) \$(F90_PP_SRC_FILES) |
| 2563 |
|
|
| 2564 |
output.txt: \$(EXECUTABLE) |
output.txt: \$(EXECUTABLE) |
| 2565 |
@printf 'running ... ' |
@printf 'running ... ' |
| 2566 |
@\$(EXECUTABLE) > \$@ |
@\$(EXECUTABLE) > \$@ |
| 2567 |
|
|
| 2568 |
|
clean: |
| 2569 |
|
-rm -rf *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template |
| 2570 |
|
-rm -rf *.o |
| 2571 |
|
-rm -rf *.$FS *.flowdir |
| 2572 |
|
-rm -rf *.f$FS90 *_mod.h *_mod.F90 *.FF90 *.mod-whirl ad_input* |
| 2573 |
|
-rm -rf temp.sed reslice.dat |
| 2574 |
|
Clean: |
| 2575 |
|
@make clean |
| 2576 |
|
@make cleanlinks |
| 2577 |
|
-rm -f \$(SPECIAL_FILES) |
| 2578 |
|
-rm -f genmake_state genmake_*optfile genmake_warnings make.log run.log f90mkdepend.log *.bak |
| 2579 |
|
-rm -f taf_command taf_output taf_ad.log taf_ad_flow.log |
| 2580 |
|
CLEAN: |
| 2581 |
|
@make Clean |
| 2582 |
|
-find \$(EXEDIR) -name "*.meta" -exec rm {} \; |
| 2583 |
|
-find \$(EXEDIR) -name "*.data" -exec rm {} \; |
| 2584 |
|
-find \$(EXEDIR) -name "fort.*" -exec rm {} \; |
| 2585 |
|
-rm -f \$(EXECUTABLE) \$(EXE_AD) *.txt STD* *diagnostics.log datetime |
| 2586 |
|
-rm -f *_MIT_CE_000.opt0000 costfunction*0000 |
| 2587 |
|
-rm -rf mnc_test_* |
| 2588 |
|
|
| 2589 |
|
#eh3 Makefile: makefile |
| 2590 |
|
makefile: |
| 2591 |
|
$THIS_SCRIPT $G2ARGS |
| 2592 |
|
cleanlinks: |
| 2593 |
|
-find . -type l -exec rm {} \; |
| 2594 |
|
|
| 2595 |
# Special targets (SPECIAL_FILES) which are created by make |
# Special targets (SPECIAL_FILES) which are created by make |
| 2596 |
${PACKAGES_DOT_H}: |
${PACKAGES_DOT_H}: |
| 2597 |
@echo Creating \$@ ... |
@echo Creating \$@ ... |
| 2612 |
test ! "x$THISDATE" = x && echo " -echo \"#define THISDATE '$THISDATE'\" >> \$@" >> $MAKEFILE |
test ! "x$THISDATE" = x && echo " -echo \"#define THISDATE '$THISDATE'\" >> \$@" >> $MAKEFILE |
| 2613 |
test ! "x$THISHOST" = x && echo " -echo \"#define THISHOST '$THISHOST'\" >> \$@" >> $MAKEFILE |
test ! "x$THISHOST" = x && echo " -echo \"#define THISHOST '$THISHOST'\" >> \$@" >> $MAKEFILE |
| 2614 |
|
|
| 2615 |
|
if test "x$EMBED_SRC" = xt ; then |
| 2616 |
|
cat >>$MAKEFILE <<EOF |
| 2617 |
|
|
| 2618 |
|
decode_files.o : EMBEDDED_FILES.h |
| 2619 |
|
|
| 2620 |
|
## \$(F77_PP_SRC_FILES) |
| 2621 |
|
all_fF.tar.gz : \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(F77_PP_SRC_FILES) Makefile |
| 2622 |
|
@echo Creating \$@ ... |
| 2623 |
|
-tar -hcf all_fF.tar \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(F77_PP_SRC_FILES) Makefile |
| 2624 |
|
-rm -f all_fF.tar.gz |
| 2625 |
|
-gzip all_fF.tar |
| 2626 |
|
|
| 2627 |
|
EMBEDDED_FILES.h : all_fF.tar.gz |
| 2628 |
|
@echo Creating \$@ ... |
| 2629 |
|
-\${ROOTDIR}/tools/embed_encode/encode_files EMBEDDED_FILES.h all_fF.tar.gz |
| 2630 |
|
|
| 2631 |
|
EOF |
| 2632 |
|
fi |
| 2633 |
|
|
| 2634 |
cat >>$MAKEFILE <<EOF |
cat >>$MAKEFILE <<EOF |
| 2635 |
|
|
| 2636 |
# The normal chain of rules is ( .F - .$FS - .o ) |
# The normal chain of rules is ( .F - .$FS - .o ) |
| 2649 |
.$FS90.o: |
.$FS90.o: |
| 2650 |
\$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$< |
\$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$< |
| 2651 |
.f$FS90.o: |
.f$FS90.o: |
| 2652 |
\$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$(F90FIXEDFORMAT) \$< |
cp \$< \$(basename \$<).f90 |
| 2653 |
|
\$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$(F90FIXEDFORMAT) \$(basename \$<).f90 |
| 2654 |
.c.o: |
.c.o: |
| 2655 |
\$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$< |
\$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$< |
| 2656 |
|
.flow.flowdir: |
| 2657 |
|
\$(CPP) \$(DEFINES) \$(INCLUDES) > \$@ |
| 2658 |
|
|
| 2659 |
# Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain |
# Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain |
| 2660 |
.F.p: |
.F.p: |
| 2662 |
.p.$FS: |
.p.$FS: |
| 2663 |
\$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$< |
\$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$< |
| 2664 |
|
|
| 2665 |
|
EOF |
| 2666 |
|
|
| 2667 |
#========================================= |
#========================================= |
| 2668 |
#=== Cleanup Rules === |
#=== Automatic Differentiation Rules === |
| 2669 |
|
#=== for TAMC/TAF ====================== |
| 2670 |
|
|
| 2671 |
CLEAN: Clean |
if test "x$OPENAD" == x ; then |
|
-find \$(EXEDIR) -name "*.meta" -exec rm {} \; |
|
|
-find \$(EXEDIR) -name "*.data" -exec rm {} \; |
|
|
-find \$(EXEDIR) -name "fort.*" -exec rm {} \; |
|
|
-rm -f \$(EXECUTABLE) output.txt ad_output.txt STD* |
|
| 2672 |
|
|
| 2673 |
Clean: clean cleanlinks |
cat >>$MAKEFILE <<EOF |
|
-rm -f *.F |
|
|
-rm -f \$(SPECIAL_FILES) |
|
|
-rm -f genmake_state genmake_*optfile genmake_warnings make.log run.log *.bak |
|
| 2674 |
|
|
| 2675 |
clean: |
TAMC = ${TAMC} |
| 2676 |
-rm -rf *.o *.$FS *.p *.f$FS90 *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template *_mod.h *_mod.F90 *.FF90 *.mod-whirl ad_input* |
TAF = ${TAF} |
|
-rm -rf temp.sed reslice.dat |
|
| 2677 |
|
|
| 2678 |
cleanlinks: |
TAF_EXTRA = ${TAF_EXTRA} |
| 2679 |
-find . -type l -exec rm {} \; |
TAMC_EXTRA = ${TAMC_EXTRA} |
| 2680 |
|
|
| 2681 |
.PHONY: clean Clean CLEAN |
EOF |
| 2682 |
|
|
| 2683 |
|
ad_vars="AD_TAMC_FLAGS AD_TAF_FLAGS" |
| 2684 |
|
ad_vars="$ad_vars FTL_TAMC_FLAGS FTL_TAF_FLAGS" |
| 2685 |
|
ad_vars="$ad_vars SVD_TAMC_FLAGS SVD_TAF_FLAGS" |
| 2686 |
|
for i in $ad_vars ; do |
| 2687 |
|
name=$i |
| 2688 |
|
t1="t2=\$"`echo "$i"` |
| 2689 |
|
eval $t1 |
| 2690 |
|
printf "%-20s = " $name >> $MAKEFILE |
| 2691 |
|
echo "$t2" | sed -e 's| \+| |g' >> $MAKEFILE |
| 2692 |
|
done |
| 2693 |
|
|
| 2694 |
#========================================= |
echo " Add the source list for AD code generation" |
| 2695 |
#=== self regeneration === |
echo >> $MAKEFILE |
| 2696 |
# can't call this target "Makefile" |
printf "AD_FILES = " >> $MAKEFILE |
| 2697 |
# because unfortunately the genmake script |
AD_FILES=`cat ad_files` |
| 2698 |
# invoked here uses |
for i in $AD_FILES ; do |
| 2699 |
# make itself for checking things and we |
echo " \\" >> $MAKEFILE |
| 2700 |
# end up in a recursion. |
printf " $i" >> $MAKEFILE |
| 2701 |
|
done |
| 2702 |
|
echo >> $MAKEFILE |
| 2703 |
|
rm -f ad_files |
| 2704 |
|
|
| 2705 |
makefile: |
cat >>$MAKEFILE <<EOF |
| 2706 |
$THIS_SCRIPT $G2ARGS |
|
| 2707 |
|
# ... AD ... |
| 2708 |
|
adall: \$(EXE_AD) |
| 2709 |
|
adtaf: ad_taf_output.$FS |
| 2710 |
|
adtamc: ad_tamc_output.$FS |
| 2711 |
|
|
| 2712 |
|
ad_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES) |
| 2713 |
|
@$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 |
| 2714 |
|
cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h |
| 2715 |
|
-rm -f ad_config.template |
| 2716 |
|
@make \$(F77_PP_SRC_FILES) |
| 2717 |
|
@make \$(FLOFILES) |
| 2718 |
|
cat \$(FLOFILES) \$(AD_FILES) > ad_input_code.$FS |
| 2719 |
|
|
| 2720 |
|
ad_taf_output.$FS: ad_input_code.$FS |
| 2721 |
|
\$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS |
| 2722 |
|
ls -l ad_input_code_ad.$FS |
| 2723 |
|
cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS |
| 2724 |
|
|
| 2725 |
|
adtafonly: |
| 2726 |
|
\$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS |
| 2727 |
|
ls -l ad_input_code_ad.$FS |
| 2728 |
|
cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS |
| 2729 |
|
|
| 2730 |
|
\${EXE_AD}: ad_taf_output.o \$(OBJFILES) |
| 2731 |
|
\$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS) |
| 2732 |
|
|
| 2733 |
|
ad_tamc_output.$FS: ad_input_code.$FS |
| 2734 |
|
\$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS |
| 2735 |
|
cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_tamc_output.$FS |
| 2736 |
|
|
| 2737 |
|
ad_tamc: ad_tamc_output.o \$(OBJFILES) |
| 2738 |
|
\$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS) |
| 2739 |
|
|
| 2740 |
|
adonlyfwd: |
| 2741 |
|
patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff |
| 2742 |
|
|
| 2743 |
|
adtrick: |
| 2744 |
|
patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff |
| 2745 |
|
|
| 2746 |
|
# ... FTL ... |
| 2747 |
|
ftlall: ftl_taf |
| 2748 |
|
ftltaf: ftl_taf_output.$FS |
| 2749 |
|
ftltamc: ftl_tamc_output.$FS |
| 2750 |
|
|
| 2751 |
|
ftl_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES) |
| 2752 |
|
@$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 |
| 2753 |
|
cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h |
| 2754 |
|
-rm -f ftl_config.template |
| 2755 |
|
@make \$(F77_PP_SRC_FILES) |
| 2756 |
|
@make \$(AD_FLOW_FILES) |
| 2757 |
|
cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.$FS |
| 2758 |
|
|
| 2759 |
|
ftl_taf_output.$FS: ftl_input_code.$FS |
| 2760 |
|
\$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS |
| 2761 |
|
ls -l ftl_input_code_ftl.$FS |
| 2762 |
|
cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS |
| 2763 |
|
|
| 2764 |
|
ftltafonly: |
| 2765 |
|
\$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS |
| 2766 |
|
ls -l ftl_input_code_ftl.$FS |
| 2767 |
|
cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS |
| 2768 |
|
|
| 2769 |
|
ftl_taf: ftl_taf_output.o \$(OBJFILES) |
| 2770 |
|
\$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS) |
| 2771 |
|
|
| 2772 |
|
ftl_tamc_output.$FS: ftl_input_code.$FS |
| 2773 |
|
\$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS |
| 2774 |
|
cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_tamc_output.$FS |
| 2775 |
|
|
| 2776 |
|
ftl_tamc: ftl_tamc_output.o \$(OBJFILES) |
| 2777 |
|
\$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS) |
| 2778 |
|
|
| 2779 |
|
|
| 2780 |
|
# ... SVD ... |
| 2781 |
|
svdtaf: ad_taf_output.$FS ftl_taf_output.$FS |
| 2782 |
|
@echo "--->>> Only ran TAF to generate SVD code! <<<---" |
| 2783 |
|
@echo "--->>> Do make svdall afterwards to compile. <<<---" |
| 2784 |
|
svdall: svd_touch svd_taf |
| 2785 |
|
|
| 2786 |
|
svd_taf: \$(OBJFILES) |
| 2787 |
|
\$(LINK) -o mitgcmuv_svd \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o ftl_taf_output.o \$(LIBS) |
| 2788 |
|
|
| 2789 |
|
@echo "--->>> Only COMPILE svd code! <<<---" |
| 2790 |
|
@echo "--->>> Assumes you previously <<<---" |
| 2791 |
|
@echo "--->>> did make svdtaf <<<---" |
| 2792 |
|
|
| 2793 |
|
svd_touch: |
| 2794 |
|
@echo "--->>> Only COMPILE svd code! <<<---" |
| 2795 |
|
@echo "--->>> Assumes you previously <<<---" |
| 2796 |
|
@echo "--->>> did make svdtaf <<<---" |
| 2797 |
|
touch ad_taf_output.$FS ftl_taf_output.$FS |
| 2798 |
|
\$(FC) \$(FFLAGS) \$(FOPTIM) -c ad_taf_output.$FS |
| 2799 |
|
\$(FC) \$(FFLAGS) \$(FOPTIM) -c ftl_taf_output.$FS |
| 2800 |
|
@$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 |
| 2801 |
|
cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h |
| 2802 |
|
-rm -f ftl_config.template |
| 2803 |
|
|
| 2804 |
|
EOF |
| 2805 |
|
|
| 2806 |
# because the file is called Makefile |
fi |
|
.PHONY: makefile |
|
| 2807 |
|
|
| 2808 |
#==================================== |
#=== for OpenAD ======================== |
| 2809 |
#=== Automatic Differentiation === |
|
| 2810 |
|
if test "x$OPENAD" != x ; then |
| 2811 |
|
|
| 2812 |
|
# ============ begin OpenAD specific section ============== |
| 2813 |
|
|
| 2814 |
|
cat >>$MAKEFILE <<EOF |
| 2815 |
|
|
| 2816 |
|
# all the source files linked from the various locations: |
| 2817 |
|
ALL_LINKED_FILES= \ |
| 2818 |
|
\$(F77_SRC_FILES) \ |
| 2819 |
|
\$(C_SRC_FILES) \ |
| 2820 |
|
\$(H_SRC_FILES) \ |
| 2821 |
|
\$(F90_SRC_FILES) \ |
| 2822 |
|
\$(SPECIAL_FILES) |
| 2823 |
|
|
| 2824 |
ifndef OPENADROOT |
ifndef OPENADROOT |
| 2825 |
\$(error "Error: environment variable OPENADROOT not defined!") |
\$(error "Error: environment variable OPENADROOT not defined!") |
| 2865 |
echo >> $MAKEFILE |
echo >> $MAKEFILE |
| 2866 |
rm -f adSrcFiles.tmp |
rm -f adSrcFiles.tmp |
| 2867 |
|
|
|
|
|
| 2868 |
cat >>$MAKEFILE <<EOF |
cat >>$MAKEFILE <<EOF |
| 2869 |
|
|
|
.PHONY: adAll |
|
| 2870 |
adAll: \$(EXE_AD) ncheckLev.conf |
adAll: \$(EXE_AD) ncheckLev.conf |
| 2871 |
|
.PHONY: adAll |
| 2872 |
|
|
| 2873 |
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)) |
| 2874 |
|
|
| 3038 |
openad_adm: |
openad_adm: |
| 3039 |
\$(LN) \${XAIFBOOSTERROOT}/xaifBooster/algorithms/BasicBlockPreaccumulationReverse/test/t \$@ |
\$(LN) \${XAIFBOOSTERROOT}/xaifBooster/algorithms/BasicBlockPreaccumulationReverse/test/t \$@ |
| 3040 |
|
|
| 3041 |
|
# ============ end OpenAD specific section ============== |
| 3042 |
|
|
| 3043 |
EOF |
EOF |
| 3044 |
|
|
| 3045 |
|
fi |
| 3046 |
|
|
| 3047 |
|
#========================================= |
| 3048 |
|
|
| 3049 |
if test "x$EXEHOOK" != x ; then |
if test "x$EXEHOOK" != x ; then |
| 3050 |
printf "\nexehook:\n\t%s\n" $EXEHOOK >> $MAKEFILE |
printf "\nexehook:\n\t%s\n" $EXEHOOK >> $MAKEFILE |
| 3051 |
fi |
fi |
| 3075 |
cat srclinks.tmp >> $MAKEFILE |
cat srclinks.tmp >> $MAKEFILE |
| 3076 |
rm -f srclinks.tmp |
rm -f srclinks.tmp |
| 3077 |
|
|
| 3078 |
|
echo " Adding makedepend marker" |
| 3079 |
|
printf "\n\n# DO NOT DELETE\n" >> $MAKEFILE |
| 3080 |
|
|
| 3081 |
printf "\n=== Done ===\n" |
printf "\n=== Done ===\n" |
| 3082 |
|
|
| 3083 |
# Create special header files |
# Create special header files |