last-svn-commit-75-g84ab03d Generate the list of split outputs in the documentation.

* doc/Makefile.am ($(srcdir)/split-outputs.mk): New rule. (regen-split-outputs-mk): New (phony) target. ($(srcdir)/split-outputs.stamp): Remove rule. (refman_dependencies) (tutorial_dependencies) (ref_guide_dependencies) (EXTRA_DIST, MAINTAINERCLEANFILES): Remove $(srcdir)/split-outputs.stamp Add $(SPLIT_OUTPUTS). (regen-am): Remake regen-split-outputs-mk. * doc/gen-split-outputs-mk: New script. Use it to generate... * doc/split-outputs.mk: ...this (new) Make helper. --- milena/ChangeLog | 18 ++++++ milena/doc/Makefile.am | 38 ++++++------ milena/doc/gen-split-examples-mk | 2 + ...{gen-split-examples-mk => gen-split-outputs-mk} | 24 +++++--- milena/doc/split-outputs.mk | 60 ++++++++++++++++++++ 5 files changed, 114 insertions(+), 28 deletions(-) copy milena/doc/{gen-split-examples-mk => gen-split-outputs-mk} (82%) create mode 100644 milena/doc/split-outputs.mk diff --git a/milena/ChangeLog b/milena/ChangeLog index 88aa96a..1518c1a 100644 --- a/milena/ChangeLog +++ b/milena/ChangeLog @@ -1,5 +1,23 @@ 2010-03-18 Roland Levillain <roland@lrde.epita.fr> + Generate the list of split outputs in the documentation. + + * doc/Makefile.am ($(srcdir)/split-outputs.mk): New rule. + (regen-split-outputs-mk): New (phony) target. + ($(srcdir)/split-outputs.stamp): Remove rule. + (refman_dependencies) + (tutorial_dependencies) + (ref_guide_dependencies) + (EXTRA_DIST, MAINTAINERCLEANFILES): + Remove $(srcdir)/split-outputs.stamp + Add $(SPLIT_OUTPUTS). + (regen-am): Remake regen-split-outputs-mk. + * doc/gen-split-outputs-mk: New script. + Use it to generate... + * doc/split-outputs.mk: ...this (new) Make helper. + +2010-03-18 Roland Levillain <roland@lrde.epita.fr> + Prepare doc source files for the automation of output splitting. * doc/examples/tuto3/println.cc, diff --git a/milena/doc/Makefile.am b/milena/doc/Makefile.am index f40cd4b..d2b6300 100644 --- a/milena/doc/Makefile.am +++ b/milena/doc/Makefile.am @@ -244,7 +244,7 @@ regen-split-examples-mk: # corresponding to a bunch of files. refman_dependencies = \ $(SPLIT_EXAMPLES) \ - $(srcdir)/split-outputs.stamp \ + $(SPLIT_OUTPUTS) \ $(PNG_FIGURES) \ $(srcdir)/tutorial/tutorial.hh \ $(srcdir)/ref_guide/ref_guide.hh @@ -534,7 +534,7 @@ tutorial_dir = $(doc_dir)/tutorial # corresponding to a bunch of files. tutorial_dependencies = \ $(SPLIT_EXAMPLES) \ - $(doc_dir)/split-outputs.stamp \ + $(SPLIT_OUTPUTS) \ $(PNG_FIGURES) \ $(DOC_PACKAGES) @@ -732,7 +732,7 @@ ref_guide_dir = $(doc_dir)/ref_guide # corresponding to a bunch of files. ref_guide_dependencies = \ $(SPLIT_EXAMPLES) \ - $(doc_dir)/split-outputs.stamp \ + $(SPLIT_OUTPUTS) \ $(PNG_FIGURES) \ $(DOC_PACKAGES) @@ -909,22 +909,21 @@ include $(srcdir)/figures.mk ## Split outputs. ## ## --------------- ## -EXTRA_DIST += $(srcdir)/split-outputs.stamp -MAINTAINERCLEANFILES += $(srcdir)/split-outputs.stamp -# FIXME: Loops are bad, as they prevent parallelism. And we prefer -# data-driven actions anyway. This would imply that we know in -# advance the list out outputs (here, split outputs). Maybe we can -# infer it from the LaTeX document. -$(srcdir)/split-outputs.stamp: $(OUTPUTS) - @rm -f $@.tmp - @touch $@.tmp - failcom='exit 1'; \ - for file in $(OUTPUTS); do \ - $(DOC_SRCDIR)/tools/split_sample.sh \ - $$file txt "" $(SPLIT_OUTPUTS_SRCDIR) \ - || eval $$failcom; \ - done - @mv -f $@.tmp $@ +$(srcdir)/split-outputs.mk: $(srcdir)/gen-split-outputs-mk + rm -f $@.tmp + cd $(srcdir) && ./gen-split-outputs-mk >split-outputs.mk.tmp + mv -f $@.tmp $@ + chmod -w $@ +include $(srcdir)/split-outputs.mk +EXTRA_DIST += $(SPLIT_OUTPUTS) +MAINTAINERCLEANFILES += $(SPLIT_OUTPUTS) + +.PHONY: regen-split-outputs-mk +regen-split-outputs-mk: + rm -f $(srcdir)/split-outputs.mk.tmp + cd $(srcdir) && ./gen-split-outputs-mk >split-outputs.mk.tmp + mv -f $(srcdir)/split-outputs.mk.tmp $(srcdir)/split-outputs.mk + chmod -w $(srcdir)/split-outputs.mk ## -------------- ## @@ -942,6 +941,7 @@ regen-am: $(MAKE) $(AM_MAKEFLAGS) regen-split-examples-mk $(MAKE) $(AM_MAKEFLAGS) regen-outputs-mk $(MAKE) $(AM_MAKEFLAGS) regen-examples-outputs-mk + $(MAKE) $(AM_MAKEFLAGS) regen-split-outputs-mk ## -------------- ## diff --git a/milena/doc/gen-split-examples-mk b/milena/doc/gen-split-examples-mk index fb29a02..a049c46 100755 --- a/milena/doc/gen-split-examples-mk +++ b/milena/doc/gen-split-examples-mk @@ -18,6 +18,8 @@ # To be used from milena/doc/'s source directory. +# FIXME: Factor gen-split-examples-mk and gen-split-outputs-mk. + me=`basename $0` die () diff --git a/milena/doc/gen-split-examples-mk b/milena/doc/gen-split-outputs-mk similarity index 82% copy from milena/doc/gen-split-examples-mk copy to milena/doc/gen-split-outputs-mk index fb29a02..22d0a71 100755 --- a/milena/doc/gen-split-examples-mk +++ b/milena/doc/gen-split-outputs-mk @@ -18,6 +18,8 @@ # To be used from milena/doc/'s source directory. +# FIXME: Factor gen-split-examples-mk and gen-split-outputs-mk. + me=`basename $0` die () @@ -44,10 +46,11 @@ backslashify() # Get this list as argument? inputs() { + # FIXME: Or « find examples -name \*.cc -a \! -path examples/trash/\* » ? find examples -name \*.cc } -output_dir=examples/split +output_dir=outputs/split # Use a temporary file to dump rules at the end of the output. tempfile=`mktemp` @@ -63,11 +66,12 @@ EOF # Output target names in a variable. { - echo "SPLIT_EXAMPLES =" + echo "SPLIT_OUTPUTS =" inputs | while read file; do + # Count the number of opening and closing marks. - nopening=`grep -c '// *\\\{' "$file"` - nclosing=`grep -c '// *\\\}' "$file"` + nopening=`grep -c 'doc::begin_output' "$file"` + nclosing=`grep -c 'doc::end_output' "$file"` test "$nopening" -eq "$nclosing" \ || die "Unbalanced marks in $file ($nopening vs $nclosing)" @@ -81,15 +85,17 @@ EOF | sed -e 's,examples/,,' \ -e 'y,/,_,' \ -e 's,\.cc$,,'` - # Timestamp split examples (outputs) depend on. - timestamp="\$(srcdir)/$output_dir/$canonical_name.cc.stamp" + # Output file to be split. + output="\$(srcdir)/outputs/$canonical_name.txt" + # Timestamp split outputs depend on. + timestamp="\$(srcdir)/$output_dir/$canonical_name.txt.stamp" # List of targets associated to FILE. targets= { i=1 while test "$i" -le "$nopening"; do # i-th part of the split file. - part="\$(srcdir)/$output_dir/$canonical_name-$i.cc.raw" + part="\$(srcdir)/$output_dir/$canonical_name-$i.txt" if test -z "$targets"; then targets="$part" @@ -104,10 +110,10 @@ EOF cat >>"$tempfile" <<EOF -$timestamp: \$(srcdir)/$file +$timestamp: $output @rm -f \$@.tmp @touch \$@.tmp - \$(srcdir)/tools/split_sample.sh \$< cc raw \$(srcdir)/$output_dir + \$(srcdir)/tools/split_sample.sh \$< txt "" \$(srcdir)/$output_dir @mv -f \$@.tmp \$@ EXTRA_DIST += $timestamp MAINTAINERCLEANFILES += $timestamp diff --git a/milena/doc/split-outputs.mk b/milena/doc/split-outputs.mk new file mode 100644 index 0000000..417c25d --- /dev/null +++ b/milena/doc/split-outputs.mk @@ -0,0 +1,60 @@ +## Generated by gen-split-outputs-mk. Do not edit by hand. + +SPLIT_OUTPUTS = \ + $(srcdir)/outputs/split/graph-iter-1.txt \ + $(srcdir)/outputs/split/graph-iter-2.txt \ + $(srcdir)/outputs/split/graph-iter-3.txt \ + $(srcdir)/outputs/split/graph-iter-4.txt \ + $(srcdir)/outputs/split/tuto3_println-1.txt \ + $(srcdir)/outputs/split/tuto3_println-2.txt \ + $(srcdir)/outputs/split/tuto4_site_set_create-1.txt \ + $(srcdir)/outputs/split/tuto4_site_set_create-2.txt \ + $(srcdir)/outputs/split/tuto4_site_set_create-3.txt + + +$(srcdir)/outputs/split/graph-iter.txt.stamp: $(srcdir)/outputs/graph-iter.txt + @rm -f $@.tmp + @touch $@.tmp + $(srcdir)/tools/split_sample.sh $< txt "" $(srcdir)/outputs/split + @mv -f $@.tmp $@ +EXTRA_DIST += $(srcdir)/outputs/split/graph-iter.txt.stamp +MAINTAINERCLEANFILES += $(srcdir)/outputs/split/graph-iter.txt.stamp + +$(srcdir)/outputs/split/graph-iter-1.txt $(srcdir)/outputs/split/graph-iter-2.txt $(srcdir)/outputs/split/graph-iter-3.txt $(srcdir)/outputs/split/graph-iter-4.txt: $(srcdir)/outputs/split/graph-iter.txt.stamp +## Recover from the removal of $@ + @if test -f $@; then :; else \ + rm -f $<; \ + $(MAKE) $(AM_MAKEFLAGS) $<; \ + fi + + +$(srcdir)/outputs/split/tuto3_println.txt.stamp: $(srcdir)/outputs/tuto3_println.txt + @rm -f $@.tmp + @touch $@.tmp + $(srcdir)/tools/split_sample.sh $< txt "" $(srcdir)/outputs/split + @mv -f $@.tmp $@ +EXTRA_DIST += $(srcdir)/outputs/split/tuto3_println.txt.stamp +MAINTAINERCLEANFILES += $(srcdir)/outputs/split/tuto3_println.txt.stamp + +$(srcdir)/outputs/split/tuto3_println-1.txt $(srcdir)/outputs/split/tuto3_println-2.txt: $(srcdir)/outputs/split/tuto3_println.txt.stamp +## Recover from the removal of $@ + @if test -f $@; then :; else \ + rm -f $<; \ + $(MAKE) $(AM_MAKEFLAGS) $<; \ + fi + + +$(srcdir)/outputs/split/tuto4_site_set_create.txt.stamp: $(srcdir)/outputs/tuto4_site_set_create.txt + @rm -f $@.tmp + @touch $@.tmp + $(srcdir)/tools/split_sample.sh $< txt "" $(srcdir)/outputs/split + @mv -f $@.tmp $@ +EXTRA_DIST += $(srcdir)/outputs/split/tuto4_site_set_create.txt.stamp +MAINTAINERCLEANFILES += $(srcdir)/outputs/split/tuto4_site_set_create.txt.stamp + +$(srcdir)/outputs/split/tuto4_site_set_create-1.txt $(srcdir)/outputs/split/tuto4_site_set_create-2.txt $(srcdir)/outputs/split/tuto4_site_set_create-3.txt: $(srcdir)/outputs/split/tuto4_site_set_create.txt.stamp +## Recover from the removal of $@ + @if test -f $@; then :; else \ + rm -f $<; \ + $(MAKE) $(AM_MAKEFLAGS) $<; \ + fi -- 1.5.6.5
participants (1)
-
Roland Levillain