]> git.pond.sub.org Git - empserver/blobdiff - Make.mk
Rearrange produce() and prod() a bit to make them more similar
[empserver] / Make.mk
diff --git a/Make.mk b/Make.mk
index 656c81f57d5e50ae9a006a801549c4dd264cc3eb..4a1b2328d0fe9a46f879879986d5c6ddb26fe369 100644 (file)
--- a/Make.mk
+++ b/Make.mk
@@ -56,8 +56,8 @@ tsrc := $(filter %.t, $(src))
 man6 := $(filter man/%.6, $(src))
 builtins := $(filter src/lib/global/%.config, $(src))
 
-# Info subjects (automatically generated)
--include subjects.mk
+# Info subjects
+include $(srcdir)/info/subjects.mk
 
 # Abbreviations
 topics := $(patsubst %.t,%,$(notdir $(tsrc)))
@@ -102,7 +102,7 @@ subst.in = sed \
 
 # Generated files
 # See `Cleanliness' below
-mk := subjects.mk
+mk :=
 ifeq ($(revctrl),git)
 mk += $(srcdir)/sources.mk
 endif
@@ -130,7 +130,7 @@ ttop := info/TOP.t
 # Formatted info:
 info.nr := $(addprefix info.nr/, $(info))
 info.html := $(addprefix info.html/, $(addsuffix .html, $(info)))
-info.all := $(info.nr) $(info.html) info.ps
+info.all := $(info.nr) $(info.html) info.ps info/stamp-subj
 # Tests
 # sandbox
 
@@ -322,17 +322,19 @@ $(libs) $(empth_lib):
 
 # Info formatting
 
-# FIXME Remaking subjects doesn't work correctly when info sources get
-# removed or subjects get dropped.
-
-subjects.mk: info/findsubj.pl $(tsrc)
-       perl $(srcdir)/info/findsubj.pl $(filter %.t, $^)
-
-$(tsubj): info/mksubj.pl
-       perl $(srcdir)/info/mksubj.pl $@ $(filter %.t, $^)
+# mksubj.pl reads $(tsrc) and writes $(tsubj).  The naive rule
+#     $(ttop) $(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 ;
+info/stamp-subj: info/mksubj.pl $(tsrc)
+       $(call quiet-command,perl $(srcdir)/info/mksubj.pl $(subjects) $(filter %.t, $^),GEN '$$(subjects)')
+       >$@
 
-$(ttop): $(tsubj)
-       perl $(srcdir)/info/mktop.pl $@ $(filter %.t, $^)
+$(ttop): info/mktop.pl info/subjects.mk
+       $(call quiet-command,perl $(srcdir)/info/mktop.pl $@ $(subjects),GEN $@)
 
 info.nr/all: $(filter-out info.nr/all, $(info.nr))
        >$@