diff --git a/Make.mk b/Make.mk index bfe62cb6..2fb4bbbb 100644 --- a/Make.mk +++ b/Make.mk @@ -321,15 +321,15 @@ $(libs) $(empth_lib): # Info formatting -# mksubj.pl reads $(tsrc) and writes $(tsubj). The naive rule -# $(ttop) $(tsubj): $(tsrc) +# mksubj.pl reads $(tsrc) and writes $(tsubj). A naive rule +# $(tsubj): $(tsrc) # COMMAND # runs COMMAND once for each target. That's because multiple targets # in an explicit rule is just a shorthand for one rule per target, # each with the same prerequisites and commands. Use a stamp file. -$(tsubj): info/stamp-subj ; +$(tsubj) info/toc: info/stamp-subj ; info/stamp-subj: info/mksubj.pl $(tsrc) - $(call quiet-command,perl $(srcdir)/info/mksubj.pl $(subjects) $(filter %.t, $^),GEN '$(tsubj)') + $(call quiet-command,perl $(srcdir)/info/mksubj.pl $(subjects) $(filter %.t, $^),GEN '$(tsubj) info/toc') >$@ $(ttop): info/mktop.pl info/subjects.mk diff --git a/info/mksubj.pl b/info/mksubj.pl index 614b035b..2681463d 100644 --- a/info/mksubj.pl +++ b/info/mksubj.pl @@ -77,6 +77,8 @@ for (keys %Subjects) { update_subj($_); } +write_toc(); + sub fn2topic { my ($fn) = @_; $fn =~ s,.*/([^/]*)\.t$,$1,; @@ -249,6 +251,17 @@ sub same_contents { return $contents eq $old; } +sub write_toc { + my @toc; + for (keys %chapter) { + push @toc, "$chapter{$_} $_"; + } + open(TOC, ">info/toc") + or die "Can't open info/toc for writing: $!"; + print TOC join("\n", sort @toc); + close TOC; +} + # Print an integrity error message and exit with code 1 sub error { my ($error) = @_;