]> 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 c2c83598f2379c64b296415dfdd0369a42e88b80..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
 
@@ -255,6 +255,8 @@ check: $(checks)
 $(checks): all
 check-smoke:
        @echo "Warning: smoke test is immature and needs work." >&2
+       $(srcdir)/tests/files-test $(srcdir)
+       $(srcdir)/tests/fairland-test $(srcdir)
 ifeq ($(empthread),LWP)
        $(srcdir)/tests/smoke-test $(srcdir)
 else
@@ -320,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))
        >$@
@@ -387,7 +391,7 @@ $(srcdir)/configure: configure.ac aclocal.m4
        cd $(srcdir) && autoconf
 
 # autoheader might not change config.h.in, so touch a stamp file.
-$(srcdir)/config.h.in: stamp-h.in
+$(srcdir)/config.h.in: stamp-h.in ;
 $(srcdir)/stamp-h.in: configure.ac aclocal.m4
        cd $(srcdir) && autoheader
        touch $@
@@ -396,7 +400,7 @@ $(srcdir)/aclocal.m4: $(filter m4/%.m4, $(src))
        cd $(srcdir) && aclocal -I m4
 
 # config.status might not change config.h; use the stamp file.
-config.h: stamp-h
+config.h: stamp-h ;
 stamp-h: config.h.in config.status
        ./config.status config.h stamp-h