summaryrefslogtreecommitdiff
path: root/man/Makefile.am
diff options
context:
space:
mode:
authorGuillem Jover <guillem@debian.org>2016-10-05 04:30:17 +0200
committerGuillem Jover <guillem@debian.org>2016-10-30 04:43:27 +0100
commit75439a326729192b9ceeee0021956bda7e89158d (patch)
treef9d868bbe27d166519ae5c323d702ab6e81bc758 /man/Makefile.am
parent6db5b664cd164a553c6c7d2960cc93e83a5ef689 (diff)
downloaddpkg-75439a326729192b9ceeee0021956bda7e89158d.tar.gz
man: Generate the man pages at build time
This makes it possible to filter them and update several variable strings such as system and package pathnames, the release date and the dpkg suite version. And will make it possible to use UTF-8 in the source and convert to the more conservative groff escape sequences on the output.
Diffstat (limited to 'man/Makefile.am')
-rw-r--r--man/Makefile.am130
1 files changed, 115 insertions, 15 deletions
diff --git a/man/Makefile.am b/man/Makefile.am
index a8687c080..bf468a250 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -1,6 +1,6 @@
## Process this file with automake to produce Makefile.in
-dist_man_MANS = \
+man_MANS = \
deb-changelog.5 \
deb-changes.5 \
deb-conffiles.5 \
@@ -52,22 +52,77 @@ dist_man_MANS = \
$(nil)
if BUILD_DSELECT
-dist_man_MANS += \
+man_MANS += \
dselect.1 \
dselect.cfg.5
endif
if BUILD_START_STOP_DAEMON
-dist_man_MANS += \
+man_MANS += \
start-stop-daemon.8
endif
if BUILD_UPDATE_ALTERNATIVES
-dist_man_MANS += \
+man_MANS += \
update-alternatives.1
endif
+CLEANFILES = $(man_MANS)
+
EXTRA_DIST = \
+ deb-changelog.man \
+ deb-changes.man \
+ deb-conffiles.man \
+ deb-control.man \
+ deb-extra-override.man \
+ deb-old.man \
+ deb-origin.man \
+ deb-override.man \
+ deb-postinst.man \
+ deb-postrm.man \
+ deb-preinst.man \
+ deb-prerm.man \
+ deb-shlibs.man \
+ deb-split.man \
+ deb-src-control.man \
+ deb-src-files.man \
+ deb-substvars.man \
+ deb-symbols.man \
+ deb-triggers.man \
+ deb-version.man \
+ deb.man \
+ deb822.man \
+ dpkg-architecture.man \
+ dpkg-buildflags.man \
+ dpkg-buildpackage.man \
+ dpkg-checkbuilddeps.man \
+ dpkg-deb.man \
+ dpkg-distaddfile.man \
+ dpkg-divert.man \
+ dpkg-genchanges.man \
+ dpkg-gencontrol.man \
+ dpkg-gensymbols.man \
+ dpkg-maintscript-helper.man \
+ dpkg-mergechangelogs.man \
+ dpkg-name.man \
+ dpkg-parsechangelog.man \
+ dpkg-query.man \
+ dpkg-scanpackages.man \
+ dpkg-scansources.man \
+ dpkg-shlibdeps.man \
+ dpkg-source.man \
+ dpkg-split.man \
+ dpkg-statoverride.man \
+ dpkg-trigger.man \
+ dpkg-vendor.man \
+ dpkg.man \
+ dpkg.cfg.man \
+ dsc.man \
+ dselect.man \
+ dselect.cfg.man \
+ start-stop-daemon.man \
+ update-alternatives.man \
+ utf8toman.sed \
po/ChangeLog.old \
po/po4a.cfg \
po/dpkg-man.pot
@@ -93,7 +148,25 @@ PO4A_OPTS = --previous --srcdir $(srcdir) --destdir $(builddir) --no-backups \
all-local: all-local-@USE_PO4A@
all-local-no:
-all-local-yes: man.stamp
+all-local-yes: gen-man
+
+# We use the man-once target to guarantee there is never an empty call in
+# gen-man, that starts recursing infinitely.
+.PHONY: gen-man man-once
+
+gen-man: man.stamp
+ for lang in $(LINGUAS); do \
+ files=""; \
+ for man in $(man_MANS); do \
+ trans="$${man%%.[0-9]}.man"; \
+ if [ -f $(builddir)/$$lang/$$trans ]; then \
+ files="$$files $(builddir)/$$lang/$$man"; \
+ elif [ -f $(srcdir)/$$lang/$$trans ]; then \
+ files="$$files $(srcdir)/$$lang/$$man"; \
+ fi; \
+ done; \
+ $(MAKE) mandir="$(mandir)/$$lang" man_MANS="" man-once $$files; \
+ done
# FIXME: Use a stamp file until po4a supports them internally.
man.stamp:
@@ -112,21 +185,48 @@ clean-local-yes:
update-po:
$(PO4A_V) $(PO4A) $(PO4A_OPTS) --force $(srcdir)/po/po4a.cfg
+SUFFIXES = .man
+
+MANGEN_V = $(MANGEN_V_@AM_V@)
+MANGEN_V_ = $(MANGEN_V_@AM_DEFAULT_V@)
+MANGEN_V_0 = @echo " MANGEN $@";
+
+MANGEN = $(MANGEN_V) sed \
+ -f $(srcdir)/utf8toman.sed \
+ -e 's/%PACKAGE%/$(PACKAGE)/g' \
+ -e 's/%VERSION%/$(PACKAGE_VERSION)/g' \
+ -e 's/%RELEASE_DATE%/$(PACKAGE_RELEASE_DATE)/g' \
+ -e 's:%CONFDIR%:$(sysconfdir):g' \
+ -e 's:%LOGDIR%:$(logdir):g' \
+ -e 's:%ADMINDIR%:$(admindir):g' \
+ -e 's:%PKGDOCDIR%:$(docdir):g' \
+ -e 's:%PKGCONFDIR%:$(pkgconfdir):g' \
+ -e 's:%PKGLIBDIR%:$(pkglibdir):g' \
+ -e 's:%PKGDATADIR%:$(pkgdatadir):g'
+ $(nil)
+
+.man.1: Makefile
+ $(MANGEN) $< >$@
+.man.5: Makefile
+ $(MANGEN) $< >$@
+.man.8: Makefile
+ $(MANGEN) $< >$@
+
install-data-local: install-data-local-@USE_PO4A@
install-data-local-no:
install-data-local-yes:
for lang in $(LINGUAS); do \
files=""; \
- for trans in $(dist_man_MANS); do \
+ for man in $(man_MANS); do \
+ trans="$${man%%.[0-9]}.man"; \
if [ -f $(builddir)/$$lang/$$trans ]; then \
- files="$$files $(builddir)/$$lang/$$trans"; \
+ files="$$files $(builddir)/$$lang/$$man"; \
elif [ -f $(srcdir)/$$lang/$$trans ]; then \
- files="$$files $(srcdir)/$$lang/$$trans"; \
+ files="$$files $(srcdir)/$$lang/$$man"; \
fi; \
done; \
- $(MAKE) install-man mandir="$(mandir)/$$lang" man_MANS="" \
- dist_man_MANS="$$files"; \
+ $(MAKE) install-man mandir="$(mandir)/$$lang" man_MANS="$$files"; \
done
uninstall-local: uninstall-local-@USE_PO4A@
@@ -135,15 +235,15 @@ uninstall-local-no:
uninstall-local-yes:
for lang in $(LINGUAS); do \
files=""; \
- for trans in $(dist_man_MANS); do \
+ for man in $(man_MANS); do \
+ trans="$${man%%.[0-9]}.man"; \
if [ -f $(builddir)/$$lang/$$trans ]; then \
- files="$$files $(builddir)/$$lang/$$trans"; \
+ files="$$files $(builddir)/$$lang/$$man"; \
elif [ -f $(srcdir)/$$lang/$$trans ]; then \
- files="$$files $(srcdir)/$$lang/$$trans"; \
+ files="$$files $(srcdir)/$$lang/$$man"; \
fi; \
done; \
- $(MAKE) uninstall-man mandir="$(mandir)/$$lang" man_MANS="" \
- dist_man_MANS="$$files"; \
+ $(MAKE) uninstall-man mandir="$(mandir)/$$lang" man_MANS="$$files"; \
done
dist-hook: man.stamp