build-system: update for split man pages
authorDavid Bremner <bremner@debian.org>
Tue, 20 Dec 2011 20:35:13 +0000 (16:35 -0400)
committerDavid Bremner <bremner@debian.org>
Sat, 31 Dec 2011 19:16:32 +0000 (15:16 -0400)
- We have to remove the installation of notmuch.1.gz from the top
level Makefile.local.

- Man pages with multiple names are handled by making relative
  symlinks in the install-man target.

- update version tests and convenience rules for split man pages

  The man page version test still only checks notmuch.1, but the
  location is updated.

  update-man-versions is longer than the one-line previously in
  update-versions mainly because I decided to take the high road and
  stick to POSIX sed (thus, no sed -i). The sed regex itself is more
  complicated to cope with variations in the headers.

Makefile
Makefile.local
man/Makefile [new file with mode: 0644]
man/Makefile.local [new file with mode: 0644]

index 2fb2a61354c7bbd3ca75219150e7ebaf1b0e7944..e5e2e3a3ac67a9e515411c7e03d449db59d9a5c0 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
 all:
 
 # List all subdirectories here. Each contains its own Makefile.local
-subdirs = compat completion emacs lib util test
+subdirs = compat completion emacs lib man util test
 
 # We make all targets depend on the Makefiles themselves.
 global_deps = Makefile Makefile.config Makefile.local \
index 516f26e8c3501e4f039a9bcbb4a1236fdb7a13be..d3bf9478b3f75ac165693c03522436de8efcafde 100644 (file)
@@ -53,7 +53,7 @@ endif
 FINAL_LIBNOTMUCH_LDFLAGS = $(LDFLAGS) $(AS_NEEDED_LDFLAGS) $(CONFIGURE_LDFLAGS)
 
 .PHONY: all
-all: notmuch notmuch-shared notmuch.1.gz
+all: notmuch notmuch-shared
 ifeq ($(MAKECMDGOALS),)
 ifeq ($(shell cat .first-build-message 2>/dev/null),)
        @NOTMUCH_FIRST_BUILD=1 $(MAKE) --no-print-directory all
@@ -95,8 +95,7 @@ dist: $(TAR_FILE)
 
 .PHONY: update-versions
 
-update-versions:
-       sed -i "s/^.TH NOTMUCH 1.*$$/.TH NOTMUCH 1 ${DATE} \"Notmuch ${VERSION}\"/" notmuch.1
+update-versions: update-man-versions
        sed -i "s/^__VERSION__[[:blank:]]*=.*$$/__VERSION__ = \'${VERSION}\'/" $(PV_FILE)
 
 # We invoke make recursively only to force ordering of our phony
@@ -221,14 +220,6 @@ verify-version-python: verify-version-components
                 echo "Please edit version and $(PV_FILE) to have consistent versions." && false)
        @echo "Good."
 
-.PHONY: verify-version-manpage
-verify-version-manpage: verify-version-components
-       @echo -n "Checking that manual page version is $(VERSION)..."
-       @[ "$(VERSION)" = $$(sed -n '/^[.]TH NOTMUCH 1/{s/.*"Notmuch //;s/".*//p;}' notmuch.1) ] || \
-               (echo "No." && \
-                echo "Please edit version and notmuch.1 to have consistent versions." && false)
-       @echo "Good."
-
 .PHONY: verify-version-components
 verify-version-components:
        @echo -n "Checking that $(VERSION) consists only of digits and periods..."
@@ -326,13 +317,8 @@ notmuch: $(notmuch_client_modules) lib/libnotmuch.a util/libutil.a
 notmuch-shared: $(notmuch_client_modules) lib/$(LINKER_NAME)
        $(call quiet,$(FINAL_NOTMUCH_LINKER) $(CFLAGS)) $(notmuch_client_modules) $(FINAL_NOTMUCH_LDFLAGS) -o $@
 
-notmuch.1.gz: notmuch.1
-       gzip --stdout $^ > $@
-
 .PHONY: install
-install: all notmuch.1.gz
-       mkdir -p "$(DESTDIR)$(mandir)/man1"
-       install -m0644 notmuch.1.gz "$(DESTDIR)$(mandir)/man1/"
+install: all install-man
        mkdir -p "$(DESTDIR)$(prefix)/bin/"
        install notmuch-shared "$(DESTDIR)$(prefix)/bin/notmuch"
 ifeq ($(MAKECMDGOALS), install)
@@ -363,4 +349,4 @@ install-desktop:
        desktop-file-install --mode 0644 --dir "$(DESTDIR)$(desktop_dir)" notmuch.desktop
 
 SRCS  := $(SRCS) $(notmuch_client_srcs)
-CLEAN := $(CLEAN) notmuch notmuch-shared $(notmuch_client_modules) notmuch.elc notmuch.1.gz
+CLEAN := $(CLEAN) notmuch notmuch-shared $(notmuch_client_modules) notmuch.elc
diff --git a/man/Makefile b/man/Makefile
new file mode 100644 (file)
index 0000000..fa25832
--- /dev/null
@@ -0,0 +1,5 @@
+all:
+       $(MAKE) -C .. all
+
+.DEFAULT:
+       $(MAKE) -C .. $@
diff --git a/man/Makefile.local b/man/Makefile.local
new file mode 100644 (file)
index 0000000..234ae89
--- /dev/null
@@ -0,0 +1,61 @@
+# -*- Makefile -*-
+
+dir := man
+
+# this variable seems to be needed to prevent lazy evaluation causing
+# problems with $(dir) changing values.
+MAIN_PAGE := $(dir)/man1/notmuch.1
+
+MAN1 := \
+       $(MAIN_PAGE) \
+       $(dir)/man1/notmuch-config.1 \
+       $(dir)/man1/notmuch-count.1 \
+       $(dir)/man1/notmuch-dump.1 \
+       $(dir)/man1/notmuch-new.1 \
+       $(dir)/man1/notmuch-part.1 \
+       $(dir)/man1/notmuch-reply.1 \
+       $(dir)/man1/notmuch-search.1 \
+       $(dir)/man1/notmuch-show.1 \
+       $(dir)/man1/notmuch-tag.1
+
+MAN5 := $(dir)/man5/notmuch-hooks.5
+MAN7 := $(dir)/man7/notmuch-search-terms.7
+
+MAN1_GZ := $(addsuffix .gz,$(MAN1))
+MAN5_GZ := $(addsuffix .gz,$(MAN5))
+MAN7_GZ := $(addsuffix .gz,$(MAN7))
+
+MAN_SOURCE := $(MAN1) $(MAN5) $(MAN7)
+MAN_BACKUP := $(addsuffix .bak,$(MAN_SOURCE))
+COMPRESSED_MAN := $(MAN1_GZ) $(MAN5_GZ) $(MAN7_GZ)
+
+%.gz: %
+       gzip --stdout $^ > $@
+
+.PHONY: install-man update-man-versions verify-version-manpage
+
+install-man: $(COMPRESSED_MAN)
+       mkdir -p "$(DESTDIR)$(mandir)/man1"
+       mkdir -p "$(DESTDIR)$(mandir)/man5"
+       mkdir -p "$(DESTDIR)$(mandir)/man7"
+       install -m0644 $(MAN1_GZ) $(DESTDIR)/$(mandir)/man1
+       install -m0644 $(MAN5_GZ) $(DESTDIR)/$(mandir)/man5
+       install -m0644 $(MAN7_GZ) $(DESTDIR)/$(mandir)/man7
+       cd $(DESTDIR)/$(mandir)/man1 && ln -s notmuch.1.gz notmuch-setup.1.gz
+       cd $(DESTDIR)/$(mandir)/man1 && ln -s notmuch-dump.1.gz notmuch-restore.1.gz
+
+verify-version-manpage: verify-version-components
+       @echo -n "Checking that manual page version is $(VERSION)..."
+       @[ "$(VERSION)" = $$(sed -n '/^[.]TH NOTMUCH 1/{s/.*"Notmuch //;s/".*//p;}' $(MAIN_PAGE)) ] || \
+               (echo "No." && \
+                echo "Please edit version and notmuch.1 to have consistent versions." && false)
+       @echo "Good."
+
+update-man-versions: $(MAN_SOURCE)
+       for file in $(MAN_SOURCE); do \
+           cp $$file $$file.bak ; \
+           sed "s/^.TH NOTMUCH\([^[:blank:]]*\) \([1-9]\) .*$$/.TH NOTMUCH\1 \2 ${DATE} \"Notmuch ${VERSION}\"/" \
+               < $$file.bak > $$file; \
+       done
+
+CLEAN := $(CLEAN) $(COMPRESSED_MAN) $(MAN_BACKUP)