aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlejandro Colomar <alx@kernel.org>2024-03-20 15:56:21 +0100
committerAlejandro Colomar <alx@kernel.org>2024-03-21 00:03:20 +0100
commit63d245abf67fc182bd29e2a2c0972a02d93de1fb (patch)
tree108eae635574e9741216ecafe3a6705bd1fd1a45
parent1bd48bd90b7af5f3cd908c6ad0ed226ec153b081 (diff)
downloadman-pages-63d245abf67fc182bd29e2a2c0972a02d93de1fb.tar.gz
share/mk/: build-book, build-man, install-man: Specify version and date
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>
-rw-r--r--GNUmakefile5
-rw-r--r--share/mk/build/book.mk13
-rw-r--r--share/mk/build/man.mk31
-rw-r--r--share/mk/install/man.mk2
-rw-r--r--share/mk/src.mk2
5 files changed, 43 insertions, 10 deletions
diff --git a/GNUmakefile b/GNUmakefile
index 9e869c0381..740121cee5 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -13,8 +13,7 @@ MAKEFLAGS += --warn-undefined-variables
srcdir := .
-DATAROOTDIR := $(srcdir)/share
-MAKEFILEDIR := $(DATAROOTDIR)/mk
+MAKEFILEDIR := $(CURDIR)/share/mk
INFO_ :=
@@ -28,7 +27,7 @@ all: build;
MK_ := $(wildcard $(addprefix $(MAKEFILEDIR)/, *.mk */*.mk */*/*.mk */*/*/*.mk))
-MK := $(srcdir)/GNUmakefile $(MK_)
+MK := $(CURDIR)/GNUmakefile $(MK_)
include $(MK_)
$(MK):: ;
diff --git a/share/mk/build/book.mk b/share/mk/build/book.mk
index 49a5f39a1e..baf70d8e46 100644
--- a/share/mk/build/book.mk
+++ b/share/mk/build/book.mk
@@ -7,6 +7,7 @@ MAKEFILE_BUILD_BOOK_INCLUDED := 1
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
@@ -15,18 +16,20 @@ include $(MAKEFILEDIR)/configure/build-depends/groff-base/preconv.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)' \
@@ -35,7 +38,7 @@ $(_LMB): $(MANPAGES) $(wildcard $(LMBDIR)/* $(LMBDIR)/*/*) | $$(@D)/
EQN='$(EQN)' \
TROFF='$(TROFF)' \
GROPDF='$(GROPDF)' \
- $(BUILDLMB) $(MANDIR) \
+ $(BUILDLMB) $(_MANDIR) \
| $(SPONGE) $@
diff --git a/share/mk/build/man.mk b/share/mk/build/man.mk
new file mode 100644
index 0000000000..ec96a20079
--- /dev/null
+++ b/share/mk/build/man.mk
@@ -0,0 +1,31 @@
+# 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
diff --git a/share/mk/install/man.mk b/share/mk/install/man.mk
index 8f1f3fc707..05e5bf43a5 100644
--- a/share/mk/install/man.mk
+++ b/share/mk/install/man.mk
@@ -48,7 +48,7 @@ $(foreach s, $(MANSECTIONS), \
$(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):
diff --git a/share/mk/src.mk b/share/mk/src.mk
index 36b9e8cec3..fecf2f1fc3 100644
--- a/share/mk/src.mk
+++ b/share/mk/src.mk
@@ -13,7 +13,7 @@ include $(MAKEFILEDIR)/configure/build-depends/sed/sed.mk
include $(MAKEFILEDIR)/configure/src.mk
-SORTMAN := $(srcdir)/scripts/sortman
+SORTMAN := $(CURDIR)/scripts/sortman
MANEXT := \(\.[[:digit:]]\([[:alpha:]][[:alnum:]]*\)\?\>\|\.man\)\+\(\.man\|\.in\)*$