Each page has its own date.
Add new 'build-man' target, which stamps the date and version in the
pages (in $builddir, not the source ones).
Build-system internal stuff:
$CURDIR will be used for the build system, while $srcdir will be
used for the project root of the repository. This helps use
this build system in other projects.
Signed-off-by: Alejandro Colomar <alx@kernel.org>
srcdir := .
-DATAROOTDIR := $(srcdir)/share
-MAKEFILEDIR := $(DATAROOTDIR)/mk
+MAKEFILEDIR := $(CURDIR)/share/mk
INFO_ :=
MK_ := $(wildcard $(addprefix $(MAKEFILEDIR)/, *.mk */*.mk */*/*.mk */*/*/*.mk))
-MK := $(srcdir)/GNUmakefile $(MK_)
+MK := $(CURDIR)/GNUmakefile $(MK_)
include $(MK_)
$(MK):: ;
include $(MAKEFILEDIR)/build/_.mk
+include $(MAKEFILEDIR)/build/man.mk
include $(MAKEFILEDIR)/configure/build-depends/coreutils/cat.mk
include $(MAKEFILEDIR)/configure/build-depends/groff/gropdf.mk
include $(MAKEFILEDIR)/configure/build-depends/groff-base/eqn.mk
include $(MAKEFILEDIR)/configure/build-depends/groff-base/tbl.mk
include $(MAKEFILEDIR)/configure/build-depends/groff-base/troff.mk
include $(MAKEFILEDIR)/configure/build-depends/moreutils/sponge.mk
-include $(MAKEFILEDIR)/configure/src.mk
+include $(MAKEFILEDIR)/configure/version.mk
include $(MAKEFILEDIR)/src.mk
-LMBDIR := $(srcdir)/scripts/LinuxManBook
+LMBDIR := $(CURDIR)/scripts/LinuxManBook
BUILDLMB := $(LMBDIR)/build.sh
-_LMB := $(_MANDIR)/man-pages.pdf
+LMB := $(DISTNAME).pdf
+_LMBDIR := $(builddir)
+_LMB := $(_LMBDIR)/$(LMB)
-$(_LMB): $(MANPAGES) $(wildcard $(LMBDIR)/* $(LMBDIR)/*/*) | $$(@D)/
+$(_LMB): $(_MANPAGES) $(wildcard $(LMBDIR)/* $(LMBDIR)/*/*) | $$(@D)/
$(info $(INFO_)Build $@)
CAT='$(CAT)' \
PRECONV='$(PRECONV)' \
EQN='$(EQN)' \
TROFF='$(TROFF)' \
GROPDF='$(GROPDF)' \
- $(BUILDLMB) $(MANDIR) \
+ $(BUILDLMB) $(_MANDIR) \
| $(SPONGE) $@
--- /dev/null
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_MAN_MAN_INCLUDED
+MAKEFILE_BUILD_MAN_MAN_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/configure/build-depends/git/git.mk
+include $(MAKEFILEDIR)/configure/build-depends/sed/sed.mk
+include $(MAKEFILEDIR)/configure/src.mk
+include $(MAKEFILEDIR)/configure/verbose.mk
+include $(MAKEFILEDIR)/configure/version.mk
+include $(MAKEFILEDIR)/src.mk
+
+
+_MANPAGES := $(patsubst $(MANDIR)/%,$(_MANDIR)/%,$(MANPAGES))
+
+
+$(_MANPAGES): $(_MANDIR)/%: $(MANDIR)/% $(MK) | $$(@D)/
+ $(info $(INFO_)SED $@)
+ <$< \
+ $(SED) "/^.TH/s/(date)/$$($(GIT) log --format=%cs -1 -- $< $(HIDE_ERR))/" \
+ | $(SED) '/^.TH/s/(unreleased)/$(DISTVERSION)/' >$@
+
+
+.PHONY: build-man
+build-man: $(_MANPAGES)
+
+
+endif # include guard
$(foreach s, $(MANSECTIONS), \
$(eval $(_man$(s)pages) $(_man$(s)intropage): \
$(_man$(s)dir)/%$(man$(s)ext)$(Z): \
- $(MAN$(s)DIR)/%.$(s) $(MK) | $$$$(@D)/))
+ $(_MANDIR)/man$(s)/%.$(s) $(MK) | $$$$(@D)/))
$(_manpages):
include $(MAKEFILEDIR)/configure/src.mk
-SORTMAN := $(srcdir)/scripts/sortman
+SORTMAN := $(CURDIR)/scripts/sortman
MANEXT := \(\.[[:digit:]]\([[:alpha:]][[:alnum:]]*\)\?\>\|\.man\)\+\(\.man\|\.in\)*$