aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlejandro Colomar <alx@kernel.org>2024-02-14 14:22:29 +0100
committerAlejandro Colomar <alx@kernel.org>2024-02-17 02:38:31 +0100
commit0dbc1ea96d39a16d76c0220806121f06f68367ec (patch)
treeb1ab29d8e48077f7e2e5cb548a82e0826f9f1a1f
parentb54f8b1e1088642bd126b8182bd5076f9e61511c (diff)
downloadman-pages-0dbc1ea96d39a16d76c0220806121f06f68367ec.tar.gz
share/mk/: Reorganize build system
Signed-off-by: Alejandro Colomar <alx@kernel.org>
-rw-r--r--GNUmakefile9
-rw-r--r--share/mk/build/_.mk2
-rw-r--r--share/mk/build/catman.mk69
-rw-r--r--share/mk/build/catman/_.mk13
-rw-r--r--share/mk/build/catman/eqn.mk27
-rw-r--r--share/mk/build/catman/grotty.mk25
-rw-r--r--share/mk/build/catman/troff.mk47
-rw-r--r--share/mk/build/examples/_.mk28
-rw-r--r--share/mk/build/examples/cc.mk26
-rw-r--r--share/mk/build/examples/ld.mk25
-rw-r--r--share/mk/build/examples/src.mk53
-rw-r--r--share/mk/build/pdf.mk63
-rw-r--r--share/mk/build/pdf/_.mk13
-rw-r--r--share/mk/build/pdf/eqn.mk27
-rw-r--r--share/mk/build/pdf/gropdf.mk25
-rw-r--r--share/mk/build/pdf/troff.mk41
-rw-r--r--share/mk/build/pre.mk39
-rw-r--r--share/mk/build/pre/_.mk13
-rw-r--r--share/mk/build/pre/preconv.mk27
-rw-r--r--share/mk/build/pre/tbl.mk25
-rw-r--r--share/mk/build/ps/_.mk13
-rw-r--r--share/mk/build/ps/eqn.mk27
-rw-r--r--share/mk/build/ps/grops.mk25
-rw-r--r--share/mk/build/ps/troff.mk (renamed from share/mk/build/ps.mk)31
-rw-r--r--share/mk/build/src.mk81
-rw-r--r--share/mk/check/_.mk5
-rw-r--r--share/mk/check/catman.mk44
-rw-r--r--share/mk/check/catman/_.mk13
-rw-r--r--share/mk/check/catman/col.mk25
-rw-r--r--share/mk/check/catman/grep.mk27
-rw-r--r--share/mk/configure/build-depends/coreutils.mk1
-rw-r--r--share/mk/dist.mk91
-rw-r--r--share/mk/dist/_.mk25
-rw-r--r--share/mk/dist/files.mk37
-rw-r--r--share/mk/dist/tar.mk34
-rw-r--r--share/mk/dist/z.mk44
-rw-r--r--share/mk/install/_.mk2
-rw-r--r--share/mk/install/html.mk3
-rw-r--r--share/mk/install/man.mk1
-rw-r--r--share/mk/lint/_.mk11
-rw-r--r--share/mk/lint/c.mk76
-rw-r--r--share/mk/lint/c/_.mk29
-rw-r--r--share/mk/lint/c/checkpatch.mk20
-rw-r--r--share/mk/lint/c/clang-tidy.mk24
-rw-r--r--share/mk/lint/c/cppcheck.mk20
-rw-r--r--share/mk/lint/c/cpplint.mk20
-rw-r--r--share/mk/lint/c/iwyu.mk31
-rw-r--r--share/mk/lint/man/_.mk31
-rw-r--r--share/mk/lint/man/man.mk71
-rw-r--r--share/mk/lint/man/mandoc.mk30
-rw-r--r--share/mk/lint/man/tbl.mk39
-rw-r--r--share/mk/lint/mdoc/_.mk (renamed from share/mk/lint/man/mdoc.mk)22
-rw-r--r--share/mk/lint/mdoc/mandoc.mk32
53 files changed, 984 insertions, 598 deletions
diff --git a/GNUmakefile b/GNUmakefile
index 84d4155124..a7382b562b 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -108,10 +108,11 @@ help:
$(info )
$(info dist Wrapper for dist-* targets)
$(info dist-tar Create a tarball of the repository)
- $(info dist-bz2 Create a compressed tarball (.tar.bz2))
- $(info dist-gz Create a compressed tarball (.tar.gz))
- $(info dist-lz Create a compressed tarball (.tar.lz))
- $(info dist-xz Create a compressed tarball (.tar.xz))
+ $(info dist-z Wrapper for dist-z-* targets)
+ $(info dist-z-bz2 Create a compressed tarball (.tar.bz2))
+ $(info dist-z-gz Create a compressed tarball (.tar.gz))
+ $(info dist-z-lz Create a compressed tarball (.tar.lz))
+ $(info dist-z-xz Create a compressed tarball (.tar.xz))
$(info )
$(info help Print this help)
$(info help-variables Print all variables available, and their default values)
diff --git a/share/mk/build/_.mk b/share/mk/build/_.mk
index 7dae6f70ab..91fbb68277 100644
--- a/share/mk/build/_.mk
+++ b/share/mk/build/_.mk
@@ -16,7 +16,7 @@ _MANDIR := $(builddir)/man
.PHONY: build
-build: build-book build-catman build-html build-pdf build-ps build-src;
+build: build-book build-catman build-html build-pdf build-ps build-ex;
.PHONY: clean
clean:
diff --git a/share/mk/build/catman.mk b/share/mk/build/catman.mk
deleted file mode 100644
index 2e6cdcb900..0000000000
--- a/share/mk/build/catman.mk
+++ /dev/null
@@ -1,69 +0,0 @@
-########################################################################
-# Copyright 2021-2023, Alejandro Colomar <alx@kernel.org>
-# SPDX-License-Identifier: GPL-3.0-or-later
-########################################################################
-
-
-ifndef MAKEFILE_BUILD_CATMAN_INCLUDED
-MAKEFILE_BUILD_CATMAN_INCLUDED := 1
-
-
-include $(MAKEFILEDIR)/build/_.mk
-include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
-include $(MAKEFILEDIR)/configure/build-depends/grep.mk
-include $(MAKEFILEDIR)/configure/build-depends/groff-base.mk
-include $(MAKEFILEDIR)/src.mk
-
-
-groff_man_ignore_grep := $(DATAROOTDIR)/lint/groff/man.ignore.grep
-
-
-_CATMAN_troff := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.cat.troff,$(NONSO_MAN) $(NONSO_MDOC))
-_CATMAN_MAN_set := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.cat.set,$(NONSO_MAN))
-_CATMAN_MDOC_set:= $(patsubst $(MANDIR)/%,$(_MANDIR)/%.cat.set,$(NONSO_MDOC))
-_CATMAN := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.cat,$(NONSO_MAN) $(NONSO_MDOC))
-
-
-$(_CATMAN_troff): %.cat.troff: %.eqn $(MK) | $$(@D)/
- $(info EQN $@)
- ! ($(EQN) -T$(NROFF_OUT_DEVICE) $(EQNFLAGS) <$< 2>&1 >$@) \
- | $(GREP) ^ >&2
-
-$(_CATMAN_MAN_set): %.cat.set: %.cat.troff $(groff_man_ignore_grep) $(MK) | $$(@D)/
- $(info TROFF $@)
- ! ($(TROFF) -man $(TROFFFLAGS) $(NROFFFLAGS) <$< 2>&1 >$@ \
- | $(GREP) -v -f '$(groff_man_ignore_grep)' \
- ||:; \
- ) \
- | $(GREP) ^ >&2
-
-$(_CATMAN_MDOC_set): %.cat.set: %.cat.troff $(MK) | $$(@D)/
- $(info TROFF $@)
- ! ($(TROFF) -mdoc $(TROFFFLAGS) $(NROFFFLAGS) <$< 2>&1 >$@) \
- | $(GREP) ^ >&2
-
-$(_CATMAN): %.cat: %.cat.set $(MK) | $$(@D)/
- $(info GROTTY $@)
- $(GROTTY) $(GROTTYFLAGS) <$< >$@
-
-
-.PHONY: build-catman-eqn
-build-catman-eqn: $(_CATMAN_troff);
-
-.PHONY: build-catman-troff-man
-build-catman-troff-man: $(_CATMAN_MAN_set);
-
-.PHONY: build-catman-troff-mdoc
-build-catman-troff-mdoc: $(_CATMAN_MDOC_set);
-
-.PHONY: build-catman-troff
-build-catman-troff: build-catman-troff-man build-catman-troff-mdoc;
-
-.PHONY: build-catman-grotty
-build-catman-grotty: $(_CATMAN);
-
-.PHONY: build-catman
-build-catman: build-catman-grotty;
-
-
-endif # include guard
diff --git a/share/mk/build/catman/_.mk b/share/mk/build/catman/_.mk
new file mode 100644
index 0000000000..78aa862531
--- /dev/null
+++ b/share/mk/build/catman/_.mk
@@ -0,0 +1,13 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_CATMAN_INCLUDED
+MAKEFILE_BUILD_CATMAN_INCLUDED := 1
+
+
+.PHONY: build-catman
+build-catman: build-catman-grotty;
+
+
+endif # include guard
diff --git a/share/mk/build/catman/eqn.mk b/share/mk/build/catman/eqn.mk
new file mode 100644
index 0000000000..373036665f
--- /dev/null
+++ b/share/mk/build/catman/eqn.mk
@@ -0,0 +1,27 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_CATMAN_EQN_INCLUDED
+MAKEFILE_BUILD_CATMAN_EQN_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/pre/tbl.mk
+include $(MAKEFILEDIR)/configure/build-depends/grep.mk
+include $(MAKEFILEDIR)/configure/build-depends/groff-base.mk
+
+
+_CATMAN_troff := $(patsubst %.eqn,%.cat.troff,$(_MAN_eqn))
+
+
+$(_CATMAN_troff): %.cat.troff: %.eqn $(MK) | $$(@D)/
+ $(info EQN $@)
+ ! ($(EQN) -T$(NROFF_OUT_DEVICE) $(EQNFLAGS) <$< 2>&1 >$@) \
+ | $(GREP) ^ >&2
+
+
+.PHONY: build-catman-eqn
+build-catman-eqn: $(_CATMAN_troff);
+
+
+endif # include guard
diff --git a/share/mk/build/catman/grotty.mk b/share/mk/build/catman/grotty.mk
new file mode 100644
index 0000000000..da4a2d26b4
--- /dev/null
+++ b/share/mk/build/catman/grotty.mk
@@ -0,0 +1,25 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_CATMAN_GROTTY_INCLUDED
+MAKEFILE_BUILD_CATMAN_GROTTY_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/catman/troff.mk
+include $(MAKEFILEDIR)/configure/build-depends/groff-base.mk
+
+
+_CATMAN := $(patsubst %.cat.set,%.cat,$(_CATMAN_MAN_set) $(_CATMAN_MDOC_set))
+
+
+$(_CATMAN): %.cat: %.cat.set $(MK) | $$(@D)/
+ $(info GROTTY $@)
+ $(GROTTY) $(GROTTYFLAGS) <$< >$@
+
+
+.PHONY: build-catman-grotty
+build-catman-grotty: $(_CATMAN);
+
+
+endif # include guard
diff --git a/share/mk/build/catman/troff.mk b/share/mk/build/catman/troff.mk
new file mode 100644
index 0000000000..cbfe76604f
--- /dev/null
+++ b/share/mk/build/catman/troff.mk
@@ -0,0 +1,47 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_CATMAN_TROFF_INCLUDED
+MAKEFILE_BUILD_CATMAN_TROFF_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/_.mk
+include $(MAKEFILEDIR)/configure/build-depends/grep.mk
+include $(MAKEFILEDIR)/configure/build-depends/groff-base.mk
+include $(MAKEFILEDIR)/configure/src.mk
+include $(MAKEFILEDIR)/src.mk
+
+
+groff_man_ignore_grep := $(DATAROOTDIR)/lint/groff/man.ignore.grep
+
+
+_CATMAN_MAN_set := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.cat.set,$(NONSO_MAN))
+_CATMAN_MDOC_set := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.cat.set,$(NONSO_MDOC))
+
+
+$(_CATMAN_MAN_set): %.cat.set: %.cat.troff $(groff_man_ignore_grep) $(MK) | $$(@D)/
+ $(info TROFF $@)
+ ! ($(TROFF) -man $(TROFFFLAGS) $(NROFFFLAGS) <$< 2>&1 >$@ \
+ | $(GREP) -v -f '$(groff_man_ignore_grep)' \
+ ||:; \
+ ) \
+ | $(GREP) ^ >&2
+
+$(_CATMAN_MDOC_set): %.cat.set: %.cat.troff $(MK) | $$(@D)/
+ $(info TROFF $@)
+ ! ($(TROFF) -mdoc $(TROFFFLAGS) $(NROFFFLAGS) <$< 2>&1 >$@) \
+ | $(GREP) ^ >&2
+
+
+.PHONY: build-catman-troff-man
+build-catman-troff-man: $(_CATMAN_MAN_set);
+
+.PHONY: build-catman-troff-mdoc
+build-catman-troff-mdoc: $(_CATMAN_MDOC_set);
+
+.PHONY: build-catman-troff
+build-catman-troff: build-catman-troff-man build-catman-troff-mdoc;
+
+
+endif # include guard
diff --git a/share/mk/build/examples/_.mk b/share/mk/build/examples/_.mk
new file mode 100644
index 0000000000..96de0a31bf
--- /dev/null
+++ b/share/mk/build/examples/_.mk
@@ -0,0 +1,28 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_EX_DIR_INCLUDED
+MAKEFILE_BUILD_EX_DIR_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/_.mk
+include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
+include $(MAKEFILEDIR)/configure/src.mk
+include $(MAKEFILEDIR)/src.mk
+
+
+_PAGEEXDIRS := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.d/,$(NONSO_MAN))
+
+
+$(_PAGEEXDIRS):
+ +$(info MKDIR $@)
+ +$(MKDIR) -p $@
+ +$(TOUCH) $@
+
+
+.PHONY: build-ex
+build-ex: build-ex-ld;
+
+
+endif # include guard
diff --git a/share/mk/build/examples/cc.mk b/share/mk/build/examples/cc.mk
new file mode 100644
index 0000000000..edadf22db3
--- /dev/null
+++ b/share/mk/build/examples/cc.mk
@@ -0,0 +1,26 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_EX_CC_INCLUDED
+MAKEFILE_BUILD_EX_CC_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/examples/src.mk
+include $(MAKEFILEDIR)/configure/build-depends/cc.mk
+include $(MAKEFILEDIR)/configure/build-depends/cpp.mk
+
+
+_UNITS_ex_o := $(patsubst %.c,%.o,$(_UNITS_ex_c))
+
+
+$(_UNITS_ex_o): %.o: %.c $(MK)
+ $(info CC $@)
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
+
+
+.PHONY: build-ex-cc
+build-ex-cc: $(_UNITS_ex_o);
+
+
+endif # include guard
diff --git a/share/mk/build/examples/ld.mk b/share/mk/build/examples/ld.mk
new file mode 100644
index 0000000000..0dbb4b2df6
--- /dev/null
+++ b/share/mk/build/examples/ld.mk
@@ -0,0 +1,25 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_EX_LD_INCLUDED
+MAKEFILE_BUILD_EX_LD_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/examples/cc.mk
+include $(MAKEFILEDIR)/configure/build-depends/ld.mk
+
+
+_UNITS_ex_bin := $(patsubst %.o,%,$(_UNITS_ex_o))
+
+
+$(_UNITS_ex_bin): %: %.o $(MK)
+ $(info LD $@)
+ $(LD) $(LDFLAGS) -o $@ $< $(LDLIBS)
+
+
+.PHONY: build-ex-ld
+build-ex-ld: $(_UNITS_ex_bin);
+
+
+endif # include guard
diff --git a/share/mk/build/examples/src.mk b/share/mk/build/examples/src.mk
new file mode 100644
index 0000000000..cd3246d421
--- /dev/null
+++ b/share/mk/build/examples/src.mk
@@ -0,0 +1,53 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_EX_SRC_INCLUDED
+MAKEFILE_BUILD_EX_SRC_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/_.mk
+include $(MAKEFILEDIR)/configure/build-depends/findutils.mk
+include $(MAKEFILEDIR)/configure/build-depends/grep.mk
+include $(MAKEFILEDIR)/configure/build-depends/mandoc.mk
+include $(MAKEFILEDIR)/configure/build-depends/sed.mk
+include $(MAKEFILEDIR)/configure/directory_variables.mk
+include $(MAKEFILEDIR)/src.mk
+
+
+_UNITS_ex_src := \
+ $(patsubst $(MANDIR)/%, $(_MANDIR)/%, \
+ $(shell \
+ $(FIND) $(MANDIR)/* -type f \
+ | $(GREP) '$(MANEXT)' \
+ | $(XARGS) $(GREP) -H '^\.\\" SRC BEGIN ' \
+ | $(SED) 's,:\.\\" SRC BEGIN (,.d/,' \
+ | $(SED) 's/)//' \
+ | $(SORTMAN) \
+ | $(SED) 's,:,\\:,g' \
+ ) \
+ )
+_UNITS_ex_h := $(filter %.h,$(_UNITS_ex_src))
+_UNITS_ex_c := $(filter %.c,$(_UNITS_ex_src))
+
+
+$(_UNITS_ex_src): $$(patsubst $(_MANDIR)/%.d,$(MANDIR)/%,$$(@D)) $(MK) | $$(@D)/
+$(_UNITS_ex_c): $$(filter $$(@D)/%.h,$(_UNITS_ex_h))
+$(_UNITS_ex_src):
+ $(info SED $@)
+ <$< \
+ $(SED) -n \
+ -e '/^\.TH/,/^\.SH/{/^\.SH/!p}' \
+ -e '/^\.SH EXAMPLES/p' \
+ -e "/^\... SRC BEGIN ($(@F))$$/,/^\... SRC END$$/p" \
+ | $(MANDOC) -Tutf8 \
+ | $(SED) '/^[^ ]/d' \
+ | $(SED) 's/^ //' \
+ >$@
+
+
+.PHONY: build-ex-src
+build-ex-src: $(_UNITS_ex_src);
+
+
+endif # include guard
diff --git a/share/mk/build/pdf.mk b/share/mk/build/pdf.mk
deleted file mode 100644
index aebd6358b9..0000000000
--- a/share/mk/build/pdf.mk
+++ /dev/null
@@ -1,63 +0,0 @@
-########################################################################
-# Copyright 2023, Alejandro Colomar <alx@kernel.org>
-# SPDX-License-Identifier: GPL-3.0-or-later
-########################################################################
-
-
-ifndef MAKEFILE_BUILD_PDF_INCLUDED
-MAKEFILE_BUILD_PDF_INCLUDED := 1
-
-
-include $(MAKEFILEDIR)/build/_.mk
-include $(MAKEFILEDIR)/configure/build-depends/grep.mk
-include $(MAKEFILEDIR)/configure/build-depends/groff-base.mk
-include $(MAKEFILEDIR)/configure/build-depends/groff.mk
-include $(MAKEFILEDIR)/src.mk
-
-
-_PDFMAN_troff := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.pdf.troff,$(NONSO_MAN) $(NONSO_MDOC))
-_PDFMAN_MAN_set := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.pdf.set,$(NONSO_MAN))
-_PDFMAN_MDOC_set:= $(patsubst $(MANDIR)/%,$(_MANDIR)/%.pdf.set,$(NONSO_MDOC))
-_PDFMAN := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.pdf,$(NONSO_MAN) $(NONSO_MDOC))
-
-
-$(_PDFMAN_troff): %.pdf.troff: %.eqn $(MK) | $$(@D)/
- $(info EQN $@)
- ! ($(EQN) -Tpdf $(EQNFLAGS) <$< 2>&1 >$@) \
- | $(GREP) ^ >&2
-
-$(_PDFMAN_MAN_set): %.pdf.set: %.pdf.troff $(MK) | $$(@D)/
- $(info TROFF $@)
- ! ($(TROFF) -man -Tpdf $(TROFFFLAGS) <$< 2>&1 >$@) \
- | $(GREP) ^ >&2
-
-$(_PDFMAN_MDOC_set): %.pdf.set: %.pdf.troff $(MK) | $$(@D)/
- $(info TROFF $@)
- ! ($(TROFF) -mdoc -Tpdf $(TROFFFLAGS) <$< 2>&1 >$@) \
- | $(GREP) ^ >&2
-
-$(_PDFMAN): %.pdf: %.pdf.set $(MK) | $$(@D)/
- $(info GROPDF $@)
- $(GROPDF) $(GROPDFFLAGS) <$< >$@
-
-
-.PHONY: build-pdf-eqn
-build-pdf-eqn: $(_PDFMAN_troff);
-
-.PHONY: build-pdf-troff-man
-build-pdf-troff-man: $(_PDFMAN_MAN_set);
-
-.PHONY: build-pdf-troff-mdoc
-build-pdf-troff-mdoc: $(_PDFMAN_MDOC_set);
-
-.PHONY: build-pdf-troff
-build-pdf-troff: build-pdf-troff-man build-pdf-troff-mdoc;
-
-.PHONY: build-pdf-gropdf
-build-pdf-gropdf: $(_PDFMAN);
-
-.PHONY: build-pdf
-build-pdf: build-pdf-gropdf;
-
-
-endif # include guard
diff --git a/share/mk/build/pdf/_.mk b/share/mk/build/pdf/_.mk
new file mode 100644
index 0000000000..f6660aa51b
--- /dev/null
+++ b/share/mk/build/pdf/_.mk
@@ -0,0 +1,13 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_PDF_INCLUDED
+MAKEFILE_BUILD_PDF_INCLUDED := 1
+
+
+.PHONY: build-pdf
+build-pdf: build-pdf-gropdf;
+
+
+endif # include guard
diff --git a/share/mk/build/pdf/eqn.mk b/share/mk/build/pdf/eqn.mk
new file mode 100644
index 0000000000..d3dda1305e
--- /dev/null
+++ b/share/mk/build/pdf/eqn.mk
@@ -0,0 +1,27 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_PDF_EQN_INCLUDED
+MAKEFILE_BUILD_PDF_EQN_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/pre/tbl.mk
+include $(MAKEFILEDIR)/configure/build-depends/grep.mk
+include $(MAKEFILEDIR)/configure/build-depends/groff-base.mk
+
+
+_PDFMAN_troff := $(patsubst %.eqn,%.pdf.troff,$(_MAN_eqn))
+
+
+$(_PDFMAN_troff): %.pdf.troff: %.eqn $(MK) | $$(@D)/
+ $(info EQN $@)
+ ! ($(EQN) -Tpdf $(EQNFLAGS) <$< 2>&1 >$@) \
+ | $(GREP) ^ >&2
+
+
+.PHONY: build-pdf-eqn
+build-pdf-eqn: $(_PDFMAN_troff);
+
+
+endif # include guard
diff --git a/share/mk/build/pdf/gropdf.mk b/share/mk/build/pdf/gropdf.mk
new file mode 100644
index 0000000000..2a088f7633
--- /dev/null
+++ b/share/mk/build/pdf/gropdf.mk
@@ -0,0 +1,25 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_PDF_GROPDF_INCLUDED
+MAKEFILE_BUILD_PDF_GROPDF_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/pdf/troff.mk
+include $(MAKEFILEDIR)/configure/build-depends/groff.mk
+
+
+_PDFMAN := $(patsubst %.pdf.set,%.pdf,$(_PDFMAN_MAN_set) $(_PDFMAN_MDOC_set))
+
+
+$(_PDFMAN): %.pdf: %.pdf.set $(MK) | $$(@D)/
+ $(info GROPDF $@)
+ $(GROPDF) $(GROPDFFLAGS) <$< >$@
+
+
+.PHONY: build-pdf-gropdf
+build-pdf-gropdf: $(_PDFMAN);
+
+
+endif # include guard
diff --git a/share/mk/build/pdf/troff.mk b/share/mk/build/pdf/troff.mk
new file mode 100644
index 0000000000..424cf33277
--- /dev/null
+++ b/share/mk/build/pdf/troff.mk
@@ -0,0 +1,41 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_PDF_TROFF_INCLUDED
+MAKEFILE_BUILD_PDF_TROFF_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/_.mk
+include $(MAKEFILEDIR)/configure/build-depends/grep.mk
+include $(MAKEFILEDIR)/configure/build-depends/groff-base.mk
+include $(MAKEFILEDIR)/configure/src.mk
+include $(MAKEFILEDIR)/src.mk
+
+
+_PDFMAN_MAN_set := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.pdf.set,$(NONSO_MAN))
+_PDFMAN_MDOC_set := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.pdf.set,$(NONSO_MDOC))
+
+
+$(_PDFMAN_MAN_set): %.pdf.set: %.pdf.troff $(MK) | $$(@D)/
+ $(info TROFF $@)
+ ! ($(TROFF) -man -Tpdf $(TROFFFLAGS) <$< 2>&1 >$@) \
+ | $(GREP) ^ >&2
+
+$(_PDFMAN_MDOC_set): %.pdf.set: %.pdf.troff $(MK) | $$(@D)/
+ $(info TROFF $@)
+ ! ($(TROFF) -mdoc -Tpdf $(TROFFFLAGS) <$< 2>&1 >$@) \
+ | $(GREP) ^ >&2
+
+
+.PHONY: build-pdf-troff-man
+build-pdf-troff-man: $(_PDFMAN_MAN_set);
+
+.PHONY: build-pdf-troff-mdoc
+build-pdf-troff-mdoc: $(_PDFMAN_MDOC_set);
+
+.PHONY: build-pdf-troff
+build-pdf-troff: build-pdf-troff-man build-pdf-troff-mdoc;
+
+
+endif # include guard
diff --git a/share/mk/build/pre.mk b/share/mk/build/pre.mk
deleted file mode 100644
index 126278d333..0000000000
--- a/share/mk/build/pre.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-########################################################################
-# Copyright 2021-2023, Alejandro Colomar <alx@kernel.org>
-# SPDX-License-Identifier: GPL-3.0-or-later
-########################################################################
-
-
-ifndef MAKEFILE_BUILD_PRE_INCLUDED
-MAKEFILE_BUILD_PRE_INCLUDED := 1
-
-
-include $(MAKEFILEDIR)/build/_.mk
-include $(MAKEFILEDIR)/configure/build-depends/groff-base.mk
-include $(MAKEFILEDIR)/src.mk
-
-
-_MAN_tbl := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.tbl,$(NONSO_MAN) $(NONSO_MDOC))
-_MAN_eqn := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.eqn,$(NONSO_MAN) $(NONSO_MDOC))
-
-
-$(_MAN_tbl): $(_MANDIR)/%.tbl: $(MANDIR)/% $(MK) | $$(@D)/
- $(info PRECONV $@)
- $(PRECONV) $(PRECONVFLAGS) $< >$@
-
-$(_MAN_eqn): %.eqn: %.tbl $(MK) | $$(@D)/
- $(info TBL $@)
- $(TBL) <$< >$@
-
-
-.PHONY: build-pre-preconv
-build-pre-preconv: $(_MAN_tbl);
-
-.PHONY: build-pre-tbl
-build-pre-tbl: $(_MAN_eqn);
-
-.PHONY: build-pre
-build-pre: build-pre-tbl;
-
-
-endif # include guard
diff --git a/share/mk/build/pre/_.mk b/share/mk/build/pre/_.mk
new file mode 100644
index 0000000000..f0e86f4b1d
--- /dev/null
+++ b/share/mk/build/pre/_.mk
@@ -0,0 +1,13 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_PRE_INCLUDED
+MAKEFILE_BUILD_PRE_INCLUDED := 1
+
+
+.PHONY: build-pre
+build-pre: build-pre-tbl;
+
+
+endif # include guard
diff --git a/share/mk/build/pre/preconv.mk b/share/mk/build/pre/preconv.mk
new file mode 100644
index 0000000000..436c4a362d
--- /dev/null
+++ b/share/mk/build/pre/preconv.mk
@@ -0,0 +1,27 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_PRE_PRECONV_INCLUDED
+MAKEFILE_BUILD_PRE_PRECONV_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/_.mk
+include $(MAKEFILEDIR)/configure/build-depends/groff-base.mk
+include $(MAKEFILEDIR)/configure/src.mk
+include $(MAKEFILEDIR)/src.mk
+
+
+_MAN_tbl := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.tbl,$(NONSO_MAN) $(NONSO_MDOC))
+
+
+$(_MAN_tbl): $(_MANDIR)/%.tbl: $(MANDIR)/% $(MK) | $$(@D)/
+ $(info PRECONV $@)
+ $(PRECONV) $(PRECONVFLAGS) $< >$@
+
+
+.PHONY: build-pre-preconv
+build-pre-preconv: $(_MAN_tbl);
+
+
+endif # include guard
diff --git a/share/mk/build/pre/tbl.mk b/share/mk/build/pre/tbl.mk
new file mode 100644
index 0000000000..58f9d74594
--- /dev/null
+++ b/share/mk/build/pre/tbl.mk
@@ -0,0 +1,25 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_PRE_TBL_INCLUDED
+MAKEFILE_BUILD_PRE_TBL_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/pre/preconv.mk
+include $(MAKEFILEDIR)/configure/build-depends/groff-base.mk
+
+
+_MAN_eqn := $(patsubst %.tbl,%.eqn,$(_MAN_tbl))
+
+
+$(_MAN_eqn): %.eqn: %.tbl $(MK) | $$(@D)/
+ $(info TBL $@)
+ $(TBL) <$< >$@
+
+
+.PHONY: build-pre-tbl
+build-pre-tbl: $(_MAN_eqn);
+
+
+endif # include guard
diff --git a/share/mk/build/ps/_.mk b/share/mk/build/ps/_.mk
new file mode 100644
index 0000000000..b92ebfc0be
--- /dev/null
+++ b/share/mk/build/ps/_.mk
@@ -0,0 +1,13 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_PS_INCLUDED
+MAKEFILE_BUILD_PS_INCLUDED := 1
+
+
+.PHONY: build-ps
+build-ps: build-ps-grops;
+
+
+endif # include guard
diff --git a/share/mk/build/ps/eqn.mk b/share/mk/build/ps/eqn.mk
new file mode 100644
index 0000000000..3bf9fd1a85
--- /dev/null
+++ b/share/mk/build/ps/eqn.mk
@@ -0,0 +1,27 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_PS_EQN_INCLUDED
+MAKEFILE_BUILD_PS_EQN_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/pre/tbl.mk
+include $(MAKEFILEDIR)/configure/build-depends/grep.mk
+include $(MAKEFILEDIR)/configure/build-depends/groff-base.mk
+
+
+_PSMAN_troff := $(patsubst %.eqn,%.ps.troff,$(_MAN_eqn))
+
+
+$(_PSMAN_troff): %.ps.troff: %.eqn $(MK) | $$(@D)/
+ $(info EQN $@)
+ ! ($(EQN) -Tps $(EQNFLAGS) <$< 2>&1 >$@) \
+ | $(GREP) ^ >&2
+
+
+.PHONY: build-ps-eqn
+build-ps-eqn: $(_PSMAN_troff);
+
+
+endif # include guard
diff --git a/share/mk/build/ps/grops.mk b/share/mk/build/ps/grops.mk
new file mode 100644
index 0000000000..e31096d943
--- /dev/null
+++ b/share/mk/build/ps/grops.mk
@@ -0,0 +1,25 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_BUILD_PS_GROPS_INCLUDED
+MAKEFILE_BUILD_PS_GROPS_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/ps/troff.mk
+include $(MAKEFILEDIR)/configure/build-depends/groff-base.mk
+
+
+_PSMAN := $(patsubst %.ps.set,%.ps,$(_PSMAN_MAN_set) $(_PSMAN_MDOC_set))
+
+
+$(_PSMAN): %.ps: %.ps.set $(MK) | $$(@D)/
+ $(info GROPS $@)
+ $(GROPS) $(GROPSFLAGS) <$< >$@
+
+
+.PHONY: build-ps-grops
+build-ps-grops: $(_PSMAN);
+
+
+endif # include guard
diff --git a/share/mk/build/ps.mk b/share/mk/build/ps/troff.mk
index 8a9c434e2b..b271b6ac1e 100644
--- a/share/mk/build/ps.mk
+++ b/share/mk/build/ps/troff.mk
@@ -1,30 +1,22 @@
-########################################################################
-# Copyright 2023, Alejandro Colomar <alx@kernel.org>
-# SPDX-License-Identifier: GPL-3.0-or-later
-########################################################################
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
-ifndef MAKEFILE_BUILD_PS_INCLUDED
-MAKEFILE_BUILD_PS_INCLUDED := 1
+ifndef MAKEFILE_BUILD_PS_TROFF_INCLUDED
+MAKEFILE_BUILD_PS_TROFF_INCLUDED := 1
include $(MAKEFILEDIR)/build/_.mk
include $(MAKEFILEDIR)/configure/build-depends/grep.mk
include $(MAKEFILEDIR)/configure/build-depends/groff-base.mk
+include $(MAKEFILEDIR)/configure/src.mk
include $(MAKEFILEDIR)/src.mk
-_PSMAN_troff := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.ps.troff,$(NONSO_MAN) $(NONSO_MDOC))
_PSMAN_MAN_set := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.ps.set,$(NONSO_MAN))
_PSMAN_MDOC_set:= $(patsubst $(MANDIR)/%,$(_MANDIR)/%.ps.set,$(NONSO_MDOC))
-_PSMAN := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.ps,$(NONSO_MAN) $(NONSO_MDOC))
-$(_PSMAN_troff): %.ps.troff: %.eqn $(MK) | $$(@D)/
- $(info EQN $@)
- ! ($(EQN) -Tps $(EQNFLAGS) <$< 2>&1 >$@) \
- | $(GREP) ^ >&2
-
$(_PSMAN_MAN_set): %.ps.set: %.ps.troff $(MK) | $$(@D)/
$(info TROFF $@)
! ($(TROFF) -man -Tps $(TROFFFLAGS) <$< 2>&1 >$@) \
@@ -35,13 +27,6 @@ $(_PSMAN_MDOC_set): %.ps.set: %.ps.troff $(MK) | $$(@D)/
! ($(TROFF) -mdoc -Tps $(TROFFFLAGS) <$< 2>&1 >$@) \
| $(GREP) ^ >&2
-$(_PSMAN): %.ps: %.ps.set $(MK) | $$(@D)/
- $(info GROPS $@)
- $(GROPS) $(GROPSFLAGS) <$< >$@
-
-
-.PHONY: build-ps-eqn
-build-ps-eqn: $(_PSMAN_troff);
.PHONY: build-ps-troff-man
build-ps-troff-man: $(_PSMAN_MAN_set);
@@ -52,11 +37,5 @@ build-ps-troff-mdoc: $(_PSMAN_MDOC_set);
.PHONY: build-ps-troff
build-ps-troff: build-ps-troff-man build-ps-troff-mdoc;
-.PHONY: build-ps-grops
-build-ps-grops: $(_PSMAN);
-
-.PHONY: build-ps
-build-ps: build-ps-grops;
-
endif # include guard
diff --git a/share/mk/build/src.mk b/share/mk/build/src.mk
deleted file mode 100644
index 7d0e281cc5..0000000000
--- a/share/mk/build/src.mk
+++ /dev/null
@@ -1,81 +0,0 @@
-########################################################################
-# Copyright 2021-2023, Alejandro Colomar <alx@kernel.org>
-# SPDX-License-Identifier: GPL-3.0-or-later
-########################################################################
-
-
-ifndef MAKEFILE_BUILD_SRC_INCLUDED
-MAKEFILE_BUILD_SRC_INCLUDED := 1
-
-
-include $(MAKEFILEDIR)/build/_.mk
-include $(MAKEFILEDIR)/configure/build-depends/cc.mk
-include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
-include $(MAKEFILEDIR)/configure/build-depends/cpp.mk
-include $(MAKEFILEDIR)/configure/build-depends/findutils.mk
-include $(MAKEFILEDIR)/configure/build-depends/grep.mk
-include $(MAKEFILEDIR)/configure/build-depends/ld.mk
-include $(MAKEFILEDIR)/configure/build-depends/mandoc.mk
-include $(MAKEFILEDIR)/configure/build-depends/sed.mk
-include $(MAKEFILEDIR)/configure/verbose.mk
-include $(MAKEFILEDIR)/src.mk
-
-
-_SRCPAGEDIRS := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.d/,$(NONSO_MAN))
-
-_UNITS_src_src := $(patsubst $(MANDIR)/%,$(_MANDIR)/%,$(shell \
- $(FIND) $(MANDIR)/* -type f \
- | $(GREP) '$(MANEXT)' \
- | $(XARGS) $(GREP) -H '^\.\\" SRC BEGIN ' \
- | $(SED) 's,:\.\\" SRC BEGIN (,.d/,' \
- | $(SED) 's/)//' \
- | $(SORTMAN) \
- | $(SED) 's,:,\\:,g'))
-_UNITS_src_h := $(filter %.h,$(_UNITS_src_src))
-_UNITS_src_c := $(filter %.c,$(_UNITS_src_src))
-_UNITS_src_o := $(patsubst %.c,%.o,$(_UNITS_src_c))
-_UNITS_src_bin := $(patsubst %.c,%,$(_UNITS_src_c))
-
-
-$(_SRCPAGEDIRS): $(_MANDIR)/%.d/: $(MANDIR)/%
- +$(info MKDIR $@)
- +$(MKDIR) $@
- +$(TOUCH) $@
-
-$(_UNITS_src_src): $$(patsubst $(_MANDIR)/%.d,$(MANDIR)/%,$$(@D)) $(MK) | $$(@D)/
-$(_UNITS_src_c): $$(filter $$(@D)/%.h,$(_UNITS_src_h))
-$(_UNITS_src_src):
- $(info SED $@)
- <$< \
- $(SED) -n \
- -e '/^\.TH/,/^\.SH/{/^\.SH/!p}' \
- -e '/^\.SH EXAMPLES/p' \
- -e "/^\... SRC BEGIN ($(@F))$$/,/^\... SRC END$$/p" \
- | $(MANDOC) -Tutf8 \
- | $(SED) '/^[^ ]/d' \
- | $(SED) 's/^ //' \
- >$@
-
-$(_UNITS_src_o): %.o: %.c $(MK)
- $(info CC $@)
- $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
-
-$(_UNITS_src_bin): %: %.o $(MK)
- $(info LD $@)
- $(LD) $(LDFLAGS) -o $@ $< $(LDLIBS)
-
-
-.PHONY: build-src-c
-build-src-c: $(_UNITS_src_c);
-
-.PHONY: build-src-cc
-build-src-cc: $(_UNITS_src_o);
-
-.PHONY: build-src-ld
-build-src-ld: $(_UNITS_src_bin);
-
-.PHONY: build-src
-build-src: build-src-ld
-
-
-endif # include guard
diff --git a/share/mk/check/_.mk b/share/mk/check/_.mk
index 6326d1f89e..1c978a8c2e 100644
--- a/share/mk/check/_.mk
+++ b/share/mk/check/_.mk
@@ -8,11 +8,8 @@ ifndef MAKEFILE_CHECK_INCLUDED
MAKEFILE_CHECK_INCLUDED := 1
-check := check-catman
-
-
.PHONY: check
-check: $(check);
+check: check-catman;
endif # include guard
diff --git a/share/mk/check/catman.mk b/share/mk/check/catman.mk
deleted file mode 100644
index 609540ba9e..0000000000
--- a/share/mk/check/catman.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-########################################################################
-# Copyright 2021-2023, Alejandro Colomar <alx@kernel.org>
-# SPDX-License-Identifier: GPL-3.0-or-later
-########################################################################
-
-
-ifndef MAKEFILE_CHECK_CATMAN_INCLUDED
-MAKEFILE_CHECK_CATMAN_INCLUDED := 1
-
-
-include $(MAKEFILEDIR)/build/_.mk
-include $(MAKEFILEDIR)/build/catman.mk
-include $(MAKEFILEDIR)/check/_.mk
-include $(MAKEFILEDIR)/configure/build-depends/bsdextrautils.mk
-include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
-include $(MAKEFILEDIR)/configure/build-depends/grep.mk
-include $(MAKEFILEDIR)/src.mk
-
-
-_CHECK_catman_grep := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.cat.grep,$(NONSO_MAN) $(NONSO_MDOC))
-_CHECK_catman := $(patsubst $(MANDIR)/%,$(_MANDIR)/%.check-catman.touch,$(NONSO_MAN) $(NONSO_MDOC))
-
-
-$(_CHECK_catman_grep): %.grep: % $(MK) | $$(@D)/
- $(info COL $@)
- $(COL) $(COLFLAGS) <$< >$@
-
-$(_CHECK_catman): %.check-catman.touch: %.cat.grep $(MK) | $$(@D)/
- $(info GREP $@)
- ! $(GREP) -n '.\{$(MANWIDTH)\}.' $< /dev/null >&2
- $(TOUCH) $@
-
-
-.PHONY: check-catman-col
-check-catman-col: $(_CHECK_catman_grep);
-
-.PHONY: check-catman-grep
-check-catman-grep: $(_CHECK_catman);
-
-.PHONY: check-catman
-check-catman: check-catman-grep;
-
-
-endif # include guard
diff --git a/share/mk/check/catman/_.mk b/share/mk/check/catman/_.mk
new file mode 100644
index 0000000000..b9bf5a14ea
--- /dev/null
+++ b/share/mk/check/catman/_.mk
@@ -0,0 +1,13 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_CHECK_CATMAN_INCLUDED
+MAKEFILE_CHECK_CATMAN_INCLUDED := 1
+
+
+.PHONY: check-catman
+check-catman: check-catman-grep;
+
+
+endif # include guard
diff --git a/share/mk/check/catman/col.mk b/share/mk/check/catman/col.mk
new file mode 100644
index 0000000000..c1563a2c4d
--- /dev/null
+++ b/share/mk/check/catman/col.mk
@@ -0,0 +1,25 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_CHECK_CATMAN_COL_INCLUDED
+MAKEFILE_CHECK_CATMAN_COL_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/catman/grotty.mk
+include $(MAKEFILEDIR)/configure/build-depends/bsdextrautils.mk
+
+
+_CHECK_catman_grep := $(patsubst %.cat,%.cat.grep,$(_CATMAN))
+
+
+$(_CHECK_catman_grep): %.grep: % $(MK) | $$(@D)/
+ $(info COL $@)
+ $(COL) $(COLFLAGS) <$< >$@
+
+
+.PHONY: check-catman-col
+check-catman-col: $(_CHECK_catman_grep);
+
+
+endif # include guard
diff --git a/share/mk/check/catman/grep.mk b/share/mk/check/catman/grep.mk
new file mode 100644
index 0000000000..702b3142c7
--- /dev/null
+++ b/share/mk/check/catman/grep.mk
@@ -0,0 +1,27 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_CHECK_CATMAN_GREP_INCLUDED
+MAKEFILE_CHECK_CATMAN_GREP_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
+include $(MAKEFILEDIR)/configure/build-depends/grep.mk
+include $(MAKEFILEDIR)/configure/build-depends/man.mk
+
+
+_CHECK_catman := $(patsubst %.cat.grep,%.check-catman.touch,$(_CHECK_catman_grep))
+
+
+$(_CHECK_catman): %.check-catman.touch: %.cat.grep $(MK) | $$(@D)/
+ $(info GREP $@)
+ ! $(GREP) -n '.\{$(MANWIDTH)\}.' $< /dev/null >&2
+ $(TOUCH) $@
+
+
+.PHONY: check-catman-grep
+check-catman-grep: $(_CHECK_catman);
+
+
+endif # include guard
diff --git a/share/mk/configure/build-depends/coreutils.mk b/share/mk/configure/build-depends/coreutils.mk
index 140ba13f2f..1f1dedadf5 100644
--- a/share/mk/configure/build-depends/coreutils.mk
+++ b/share/mk/configure/build-depends/coreutils.mk
@@ -12,6 +12,7 @@ EXPR := expr
HEAD := head
INSTALL := install
LN := ln
+MKDIR := mkdir
MKTEMP := mktemp
RM := rm
SORT := sort
diff --git a/share/mk/dist.mk b/share/mk/dist.mk
deleted file mode 100644
index 0e8209d965..0000000000
--- a/share/mk/dist.mk
+++ /dev/null
@@ -1,91 +0,0 @@
-########################################################################
-# Copyright 2021-2023, Alejandro Colomar <alx@kernel.org>
-# SPDX-License-Identifier: GPL-3.0-or-later
-########################################################################
-
-
-ifndef MAKEFILE_DIST_INCLUDED
-MAKEFILE_DIST_INCLUDED := 1
-
-
-include $(MAKEFILEDIR)/build/_.mk
-include $(MAKEFILEDIR)/configure/build-depends/bzip2.mk
-include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
-include $(MAKEFILEDIR)/configure/build-depends/findutils.mk
-include $(MAKEFILEDIR)/configure/build-depends/git.mk
-include $(MAKEFILEDIR)/configure/build-depends/gzip.mk
-include $(MAKEFILEDIR)/configure/build-depends/lzip.mk
-include $(MAKEFILEDIR)/configure/build-depends/sed.mk
-include $(MAKEFILEDIR)/configure/build-depends/tar.mk
-include $(MAKEFILEDIR)/configure/build-depends/xz-utils.mk
-include $(MAKEFILEDIR)/configure/directory_variables.mk
-include $(MAKEFILEDIR)/configure/verbose.mk
-include $(MAKEFILEDIR)/configure/version.mk
-include $(MAKEFILEDIR)/install/_.mk
-
-
-_DISTDIR := $(builddir)/dist
-
-
-DISTFILES := $(shell $(GIT) ls-files $(HIDE_ERR) \
- | $(SED) 's,^,$(srcdir)/,' \
- | $(SED) 's,:,\\:,g')
-_DISTFILES := $(patsubst $(srcdir)/%,$(_DISTDIR)/%,$(DISTFILES))
-_DISTPAGES := $(filter $(_DISTDIR)/man%,$(_DISTFILES))
-_DISTOTHERS := $(filter-out $(_DISTDIR)/man%,$(_DISTFILES))
-
-DISTFILE := $(builddir)/$(DISTNAME).tar
-compression := bz2 gz lz xz
-
-
-$(builddir)/dist/%/:
- +$(info INSTALL $@)
- +$(INSTALL_DIR) $@
-
-
-$(_DISTPAGES): $(_DISTDIR)/man%: $(srcdir)/man% $(MK) | $$(@D)/
- $(info INSTALL $@)
- <$< \
- $(SED) "/^.TH/s/(date)/$$(git log --format=%cs -1 -- $< $(HIDE_ERR))/" \
- | $(SED) '/^.TH/s/(unreleased)/$(DISTVERSION)/' \
- | $(INSTALL_DATA) -T /dev/stdin $@
-
-$(_DISTOTHERS): $(_DISTDIR)/%: $(srcdir)/% $(MK) | $$(@D)/
- $(info CP $@)
- $(CP) -T $< $@
-
-
-$(DISTFILE): $(_DISTFILES) $(MK) | $$(@D)/
- $(info TAR $@)
- $(TAR) $(TARFLAGS) -cf $@ -T /dev/null
- $(GIT) ls-files \
- | $(SED) 's,^,$(_DISTDIR)/,' \
- | $(XARGS) $(TAR) $(TARFLAGS) -rf $@ -C $(srcdir) \
- --transform 's,^$(_DISTDIR),$(DISTNAME),'
-
-define DISTFILE_z_rule
-$(DISTFILE).$(2): %.$(2): % $(MK) | $$$$(@D)/
- $$(info $(1) $$@)
- $($(1)) $($(1)FLAGS) -kf $$<
- $(TOUCH) $$@
-endef
-
-$(eval $(call DISTFILE_z_rule,BZIP2,bz2))
-$(eval $(call DISTFILE_z_rule,GZIP,gz))
-$(eval $(call DISTFILE_z_rule,LZIP,lz))
-$(eval $(call DISTFILE_z_rule,XZ,xz))
-
-
-.PHONY: dist-tar
-dist-tar: $(DISTFILE);
-
-
-$(foreach z, $(compression), \
- $(eval .PHONY: dist-$(z)))
-$(foreach z, $(compression), \
- $(eval dist-$(z): $(DISTFILE).$(z);))
-.PHONY: dist
-dist: $(foreach z, $(compression), dist-$(z));
-
-
-endif # include guard
diff --git a/share/mk/dist/_.mk b/share/mk/dist/_.mk
new file mode 100644
index 0000000000..b0d5682f15
--- /dev/null
+++ b/share/mk/dist/_.mk
@@ -0,0 +1,25 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_DIST_INCLUDED
+MAKEFILE_DIST_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
+include $(MAKEFILEDIR)/configure/directory_variables.mk
+
+
+_DISTDIR := $(builddir)/dist
+
+
+$(builddir)/dist/%/:
+ +$(info INSTALL $@)
+ +$(INSTALL_DIR) $@
+
+
+.PHONY: dist
+dist: dist-tar dist-z;
+
+
+endif # include guard
diff --git a/share/mk/dist/files.mk b/share/mk/dist/files.mk
new file mode 100644
index 0000000000..74a1eb77a8
--- /dev/null
+++ b/share/mk/dist/files.mk
@@ -0,0 +1,37 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_DIST_FILES_INCLUDED
+MAKEFILE_DIST_FILES_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
+include $(MAKEFILEDIR)/configure/build-depends/git.mk
+include $(MAKEFILEDIR)/configure/build-depends/sed.mk
+include $(MAKEFILEDIR)/configure/verbose.mk
+include $(MAKEFILEDIR)/configure/version.mk
+include $(MAKEFILEDIR)/dist/_.mk
+
+
+DISTFILES := $(shell $(GIT) ls-files $(HIDE_ERR) \
+ | $(SED) 's,^,$(srcdir)/,' \
+ | $(SED) 's,:,\\:,g')
+_DISTFILES := $(patsubst $(srcdir)/%,$(_DISTDIR)/%,$(DISTFILES))
+_DISTPAGES := $(filter $(_DISTDIR)/man%,$(_DISTFILES))
+_DISTOTHERS := $(filter-out $(_DISTDIR)/man%,$(_DISTFILES))
+
+
+$(_DISTPAGES): $(_DISTDIR)/man%: $(srcdir)/man% $(MK) | $$(@D)/
+ $(info INSTALL $@)
+ <$< \
+ $(SED) "/^.TH/s/(date)/$$(git log --format=%cs -1 -- $< $(HIDE_ERR))/" \
+ | $(SED) '/^.TH/s/(unreleased)/$(DISTVERSION)/' \
+ | $(INSTALL_DATA) -T /dev/stdin $@
+
+$(_DISTOTHERS): $(_DISTDIR)/%: $(srcdir)/% $(MK) | $$(@D)/
+ $(info CP $@)
+ $(CP) -T $< $@
+
+
+endif # include guard
diff --git a/share/mk/dist/tar.mk b/share/mk/dist/tar.mk
new file mode 100644
index 0000000000..fc01edba3f
--- /dev/null
+++ b/share/mk/dist/tar.mk
@@ -0,0 +1,34 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_DIST_TAR_INCLUDED
+MAKEFILE_DIST_TAR_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/configure/build-depends/findutils.mk
+include $(MAKEFILEDIR)/configure/build-depends/git.mk
+include $(MAKEFILEDIR)/configure/build-depends/sed.mk
+include $(MAKEFILEDIR)/configure/build-depends/tar.mk
+include $(MAKEFILEDIR)/configure/version.mk
+include $(MAKEFILEDIR)/dist/_.mk
+include $(MAKEFILEDIR)/dist/files.mk
+
+
+DISTFILE := $(builddir)/$(DISTNAME).tar
+
+
+$(DISTFILE): $(_DISTFILES) $(MK) | $$(@D)/
+ $(info TAR $@)
+ $(TAR) $(TARFLAGS) -cf $@ -T /dev/null
+ $(GIT) ls-files \
+ | $(SED) 's,^,$(_DISTDIR)/,' \
+ | $(XARGS) $(TAR) $(TARFLAGS) -rf $@ -C $(srcdir) \
+ --transform 's,^$(_DISTDIR),$(DISTNAME),'
+
+
+.PHONY: dist-tar
+dist-tar: $(DISTFILE);
+
+
+endif # include guard
diff --git a/share/mk/dist/z.mk b/share/mk/dist/z.mk
new file mode 100644
index 0000000000..791cd03fe4
--- /dev/null
+++ b/share/mk/dist/z.mk
@@ -0,0 +1,44 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_DIST_Z_INCLUDED
+MAKEFILE_DIST_Z_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/configure/build-depends/bzip2.mk
+include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
+include $(MAKEFILEDIR)/configure/build-depends/gzip.mk
+include $(MAKEFILEDIR)/configure/build-depends/lzip.mk
+include $(MAKEFILEDIR)/configure/build-depends/xz-utils.mk
+include $(MAKEFILEDIR)/dist/tar.mk
+
+
+compression := bz2 gz lz xz
+
+
+define DISTFILE_z_rule
+$(DISTFILE).$(2): %.$(2): % $(MK) | $$$$(@D)/
+ $$(info $(1) $$@)
+ $($(1)) $($(1)FLAGS) -kf $$<
+ $(TOUCH) $$@
+endef
+
+
+$(eval $(call DISTFILE_z_rule,BZIP2,bz2))
+$(eval $(call DISTFILE_z_rule,GZIP,gz))
+$(eval $(call DISTFILE_z_rule,LZIP,lz))
+$(eval $(call DISTFILE_z_rule,XZ,xz))
+
+
+$(foreach z, $(compression), \
+ $(eval .PHONY: dist-z-$(z)))
+$(foreach z, $(compression), \
+ $(eval dist-z-$(z): $(DISTFILE).$(z);))
+
+
+.PHONY: dist-z
+dist-z: $(foreach z, $(compression), dist-z-$(z));
+
+
+endif # include guard
diff --git a/share/mk/install/_.mk b/share/mk/install/_.mk
index 1fb5b1690f..bddaff25e2 100644
--- a/share/mk/install/_.mk
+++ b/share/mk/install/_.mk
@@ -16,7 +16,7 @@ include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
+$(INSTALL_DIR) $@
%-rm:
- $(info RM $*)
+ $(info RM $*)
$(RM) $*
diff --git a/share/mk/install/html.mk b/share/mk/install/html.mk
index 6252b2fa6d..a0b71d7515 100644
--- a/share/mk/install/html.mk
+++ b/share/mk/install/html.mk
@@ -10,6 +10,7 @@ MAKEFILE_INSTALL_HTML_INCLUDED := 1
include $(MAKEFILEDIR)/build/html.mk
include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
+include $(MAKEFILEDIR)/configure/directory_variables.mk
include $(MAKEFILEDIR)/install/_.mk
@@ -21,7 +22,7 @@ _htmlpages_rm := $(addsuffix -rm,$(wildcard $(_htmlpages)))
$(_htmlpages): $(_htmldir)/%: $(_HTMLDIR)/% $(MK) | $$(@D)/
- $(info INSTALL $@)
+ $(info INSTALL $@)
$(INSTALL_DATA) -T $< $@
diff --git a/share/mk/install/man.mk b/share/mk/install/man.mk
index aade04b704..be10d7df2f 100644
--- a/share/mk/install/man.mk
+++ b/share/mk/install/man.mk
@@ -17,6 +17,7 @@ include $(MAKEFILEDIR)/configure/build-depends/lzip.mk
include $(MAKEFILEDIR)/configure/build-depends/moreutils.mk
include $(MAKEFILEDIR)/configure/build-depends/sed.mk
include $(MAKEFILEDIR)/configure/build-depends/xz-utils.mk
+include $(MAKEFILEDIR)/configure/directory_variables.mk
include $(MAKEFILEDIR)/configure/z.mk
include $(MAKEFILEDIR)/install/_.mk
include $(MAKEFILEDIR)/src.mk
diff --git a/share/mk/lint/_.mk b/share/mk/lint/_.mk
index 9d93bd3809..48d02fa359 100644
--- a/share/mk/lint/_.mk
+++ b/share/mk/lint/_.mk
@@ -1,18 +1,13 @@
-########################################################################
-# Copyright 2021-2023, Alejandro Colomar <alx@kernel.org>
-# SPDX-License-Identifier: GPL-3.0-or-later
-########################################################################
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
ifndef MAKEFILE_LINT_INCLUDED
MAKEFILE_LINT_INCLUDED := 1
-lint := lint-c lint-man lint-mdoc
-
-
.PHONY: lint
-lint: $(lint);
+lint: lint-c lint-man lint-mdoc;
endif # include guard
diff --git a/share/mk/lint/c.mk b/share/mk/lint/c.mk
deleted file mode 100644
index 1877f01042..0000000000
--- a/share/mk/lint/c.mk
+++ /dev/null
@@ -1,76 +0,0 @@
-########################################################################
-# Copyright 2021-2022, Alejandro Colomar <alx@kernel.org>
-# SPDX-License-Identifier: GPL-3.0-or-later
-########################################################################
-
-
-ifndef MAKEFILE_LINT_C_INCLUDED
-MAKEFILE_LINT_C_INCLUDED := 1
-
-
-include $(MAKEFILEDIR)/build/src.mk
-include $(MAKEFILEDIR)/configure/build-depends/checkpatch.mk
-include $(MAKEFILEDIR)/configure/build-depends/clang.mk
-include $(MAKEFILEDIR)/configure/build-depends/clang-tidy.mk
-include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
-include $(MAKEFILEDIR)/configure/build-depends/cpp.mk
-include $(MAKEFILEDIR)/configure/build-depends/cppcheck.mk
-include $(MAKEFILEDIR)/configure/build-depends/cpplint.mk
-include $(MAKEFILEDIR)/configure/build-depends/grep.mk
-include $(MAKEFILEDIR)/configure/build-depends/iwyu.mk
-include $(MAKEFILEDIR)/configure/build-depends/sed.mk
-include $(MAKEFILEDIR)/lint/_.mk
-
-
-linters_c := checkpatch clang-tidy cppcheck cpplint iwyu
-
-
-$(foreach l, $(linters_c), \
- $(eval _LINT_c_$(l) := \
- $(patsubst %.c, %.lint-c.$(l).touch, \
- $(_UNITS_src_c))))
-
-
-$(_LINT_c_checkpatch): %.lint-c.checkpatch.touch: %.c $(MK)
- $(info LINT (checkpatch) $@)
- $(CHECKPATCH) $(CHECKPATCHFLAGS) -f $< >&2
- $(TOUCH) $@
-
-$(_LINT_c_clang-tidy): %.lint-c.clang-tidy.touch: %.c $(MK)
- $(info LINT (clang-tidy) $@)
- $(CLANG_TIDY) $(CLANG_TIDYFLAGS) $< -- $(CPPFLAGS) $(CLANGFLAGS) 2>&1 \
- | $(SED) '/generated\.$$/d' >&2
- $(TOUCH) $@
-
-$(_LINT_c_cppcheck): %.lint-c.cppcheck.touch: %.c $(MK)
- $(info LINT (cppcheck) $@)
- $(CPPCHECK) $(CPPCHECKFLAGS) $<
- $(TOUCH) $@
-
-$(_LINT_c_cpplint): %.lint-c.cpplint.touch: %.c $(MK)
- $(info LINT (cpplint) $@)
- $(CPPLINT) $(CPPLINTFLAGS) $< >/dev/null
- $(TOUCH) $@
-
-$(_LINT_c_iwyu): %.lint-c.iwyu.touch: %.c $(MK)
- $(info LINT (iwyu) $@)
- ! ($(IWYU) $(IWYUFLAGS) $(CPPFLAGS) $(CLANGFLAGS) $< 2>&1 \
- | $(SED) -n '/should add these lines:/,$$p' \
- | $(TAC) \
- | $(SED) '/correct/{N;d}' \
- | $(TAC) \
- ||:; \
- ) \
- | $(GREP) ^ >&2
- $(TOUCH) $@
-
-
-$(foreach l, $(linters_c), \
- $(eval .PHONY: lint-c-$(l)))
-$(foreach l, $(linters_c), \
- $(eval lint-c-$(l): $(_LINT_c_$(l));))
-.PHONY: lint-c
-lint-c: $(foreach l, $(linters_c), lint-c-$(l));
-
-
-endif # include guard
diff --git a/share/mk/lint/c/_.mk b/share/mk/lint/c/_.mk
new file mode 100644
index 0000000000..334ff97db6
--- /dev/null
+++ b/share/mk/lint/c/_.mk
@@ -0,0 +1,29 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_LINT_C_INCLUDED
+MAKEFILE_LINT_C_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/examples/src.mk
+
+
+linters_c := checkpatch clang-tidy cppcheck cpplint iwyu
+
+
+$(foreach l, $(linters_c), \
+ $(eval _LINT_c_$(l) := \
+ $(patsubst %.c, %.lint-c.$(l).touch, \
+ $(_UNITS_ex_c))))
+
+
+$(foreach l, $(linters_c), \
+ $(eval .PHONY: lint-c-$(l)))
+$(foreach l, $(linters_c), \
+ $(eval lint-c-$(l): $(_LINT_c_$(l));))
+.PHONY: lint-c
+lint-c: $(foreach l, $(linters_c), lint-c-$(l));
+
+
+endif # include guard
diff --git a/share/mk/lint/c/checkpatch.mk b/share/mk/lint/c/checkpatch.mk
new file mode 100644
index 0000000000..f465f5592e
--- /dev/null
+++ b/share/mk/lint/c/checkpatch.mk
@@ -0,0 +1,20 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_LINT_C_CHECKPATCH_INCLUDED
+MAKEFILE_LINT_C_CHECKPATCH_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/configure/build-depends/checkpatch.mk
+include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
+include $(MAKEFILEDIR)/lint/_.mk
+
+
+$(_LINT_c_checkpatch): %.lint-c.checkpatch.touch: %.c $(MK)
+ $(info CHECKPATCH $@)
+ $(CHECKPATCH) $(CHECKPATCHFLAGS) -f $< >&2
+ $(TOUCH) $@
+
+
+endif # include guard
diff --git a/share/mk/lint/c/clang-tidy.mk b/share/mk/lint/c/clang-tidy.mk
new file mode 100644
index 0000000000..c48fb85aff
--- /dev/null
+++ b/share/mk/lint/c/clang-tidy.mk
@@ -0,0 +1,24 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_LINT_C_CLANG_TIDY_INCLUDED
+MAKEFILE_LINT_C_CLANG_TIDY_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/configure/build-depends/clang.mk
+include $(MAKEFILEDIR)/configure/build-depends/clang-tidy.mk
+include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
+include $(MAKEFILEDIR)/configure/build-depends/cpp.mk
+include $(MAKEFILEDIR)/configure/build-depends/sed.mk
+include $(MAKEFILEDIR)/lint/_.mk
+
+
+$(_LINT_c_clang-tidy): %.lint-c.clang-tidy.touch: %.c $(MK)
+ $(info CLANG_TIDY $@)
+ $(CLANG_TIDY) $(CLANG_TIDYFLAGS) $< -- $(CPPFLAGS) $(CLANGFLAGS) 2>&1 \
+ | $(SED) '/generated\.$$/d' >&2
+ $(TOUCH) $@
+
+
+endif # include guard
diff --git a/share/mk/lint/c/cppcheck.mk b/share/mk/lint/c/cppcheck.mk
new file mode 100644
index 0000000000..b326dc05fd
--- /dev/null
+++ b/share/mk/lint/c/cppcheck.mk
@@ -0,0 +1,20 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_LINT_C_CPPCHECK_INCLUDED
+MAKEFILE_LINT_C_CPPCHECK_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
+include $(MAKEFILEDIR)/configure/build-depends/cppcheck.mk
+include $(MAKEFILEDIR)/lint/_.mk
+
+
+$(_LINT_c_cppcheck): %.lint-c.cppcheck.touch: %.c $(MK)
+ $(info CPPCHECK $@)
+ $(CPPCHECK) $(CPPCHECKFLAGS) $<
+ $(TOUCH) $@
+
+
+endif # include guard
diff --git a/share/mk/lint/c/cpplint.mk b/share/mk/lint/c/cpplint.mk
new file mode 100644
index 0000000000..89036eddbd
--- /dev/null
+++ b/share/mk/lint/c/cpplint.mk
@@ -0,0 +1,20 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_LINT_C_CPPLINT_INCLUDED
+MAKEFILE_LINT_C_CPPLINT_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
+include $(MAKEFILEDIR)/configure/build-depends/cpplint.mk
+include $(MAKEFILEDIR)/lint/_.mk
+
+
+$(_LINT_c_cpplint): %.lint-c.cpplint.touch: %.c $(MK)
+ $(info CPPLINT $@)
+ $(CPPLINT) $(CPPLINTFLAGS) $< >/dev/null
+ $(TOUCH) $@
+
+
+endif # include guard
diff --git a/share/mk/lint/c/iwyu.mk b/share/mk/lint/c/iwyu.mk
new file mode 100644
index 0000000000..a177936d3e
--- /dev/null
+++ b/share/mk/lint/c/iwyu.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_LINT_C_IWYU_INCLUDED
+MAKEFILE_LINT_C_IWYU_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/configure/build-depends/clang.mk
+include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
+include $(MAKEFILEDIR)/configure/build-depends/cpp.mk
+include $(MAKEFILEDIR)/configure/build-depends/grep.mk
+include $(MAKEFILEDIR)/configure/build-depends/iwyu.mk
+include $(MAKEFILEDIR)/configure/build-depends/sed.mk
+include $(MAKEFILEDIR)/lint/_.mk
+
+
+$(_LINT_c_iwyu): %.lint-c.iwyu.touch: %.c $(MK)
+ $(info LINT (iwyu) $@)
+ ! ($(IWYU) $(IWYUFLAGS) $(CPPFLAGS) $(CLANGFLAGS) $< 2>&1 \
+ | $(SED) -n '/should add these lines:/,$$p' \
+ | $(TAC) \
+ | $(SED) '/correct/{N;d}' \
+ | $(TAC) \
+ ||:; \
+ ) \
+ | $(GREP) ^ >&2
+ $(TOUCH) $@
+
+
+endif # include guard
diff --git a/share/mk/lint/man/_.mk b/share/mk/lint/man/_.mk
new file mode 100644
index 0000000000..d81d999b8b
--- /dev/null
+++ b/share/mk/lint/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_LINT_MAN_INCLUDED
+MAKEFILE_LINT_MAN_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/_.mk
+include $(MAKEFILEDIR)/configure/directory_variables.mk
+include $(MAKEFILEDIR)/src.mk
+
+
+linters_man := mandoc tbl
+
+
+$(foreach l, $(linters_man), \
+ $(eval _LINT_man_$(l) := \
+ $(patsubst $(MANDIR)/%, $(_MANDIR)/%.lint-man.$(l).touch, \
+ $(NONSO_MAN))))
+
+
+$(foreach l, $(linters_man), \
+ $(eval .PHONY: lint-man-$(l)))
+$(foreach l, $(linters_man), \
+ $(eval lint-man-$(l): $(_LINT_man_$(l));))
+.PHONY: lint-man
+lint-man: $(foreach l, $(linters_man), lint-man-$(l));
+
+
+endif # include guard
diff --git a/share/mk/lint/man/man.mk b/share/mk/lint/man/man.mk
deleted file mode 100644
index 135ac397d4..0000000000
--- a/share/mk/lint/man/man.mk
+++ /dev/null
@@ -1,71 +0,0 @@
-########################################################################
-# Copyright 2021-2023, Alejandro Colomar <alx@kernel.org>
-# SPDX-License-Identifier: GPL-3.0-or-later
-########################################################################
-
-
-ifndef MAKEFILE_LINT_MAN_MAN_INCLUDED
-MAKEFILE_LINT_MAN_MAN_INCLUDED := 1
-
-
-include $(MAKEFILEDIR)/build/_.mk
-include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
-include $(MAKEFILEDIR)/configure/build-depends/grep.mk
-include $(MAKEFILEDIR)/configure/build-depends/mandoc.mk
-include $(MAKEFILEDIR)/lint/_.mk
-include $(MAKEFILEDIR)/src.mk
-
-
-mandoc_man_ignore_grep := $(DATAROOTDIR)/lint/mandoc/man.ignore.grep
-
-
-linters_man := mandoc tbl
-
-
-$(foreach l, $(linters_man), \
- $(eval _LINT_man_$(l) := \
- $(patsubst $(MANDIR)/%, $(_MANDIR)/%.lint-man.$(l).touch, \
- $(NONSO_MAN))))
-
-
-$(_LINT_man_mandoc): $(_MANDIR)/%.lint-man.mandoc.touch: $(MANDIR)/% $(mandoc_man_ignore_grep) $(MK) | $$(@D)/
- $(info LINT (mandoc) $@)
- ! ($(MANDOC) -man $(MANDOCFLAGS) $< 2>&1 \
- | $(GREP) -v -f '$(mandoc_man_ignore_grep)' \
- ||:; \
- ) \
- | $(GREP) ^ >&2
- $(TOUCH) $@
-
-$(_LINT_man_tbl): $(_MANDIR)/%.lint-man.tbl.touch: $(MANDIR)/% $(MK) | $$(@D)/
- $(info LINT (tbl comment) $@)
- if $(GREP) -q '^\.TS$$' $< && ! $(HEAD) -n1 $< | $(GREP) -q '\\" t$$'; \
- then \
- >&2 $(ECHO) "$<:1: missing '\\\" t' comment:"; \
- >&2 $(HEAD) -n1 <$<; \
- exit 1; \
- fi
- if $(HEAD) -n1 $< | $(GREP) -q '\\" t$$' && ! $(GREP) -q '^\.TS$$' $<; \
- then \
- >&2 $(ECHO) "$<:1: spurious '\\\" t' comment:"; \
- >&2 $(HEAD) -n1 <$<; \
- exit 1; \
- fi
- if $(TAIL) -n+2 <$< | $(GREP) -q '\\" t$$'; \
- then \
- >&2 $(ECHO) "$<: spurious '\\\" t' not in first line:"; \
- >&2 $(GREP) -n '\\" t$$' $< /dev/null; \
- exit 1; \
- fi
- $(TOUCH) $@
-
-
-$(foreach l, $(linters_man), \
- $(eval .PHONY: lint-man-$(l)))
-$(foreach l, $(linters_man), \
- $(eval lint-man-$(l): $(_LINT_man_$(l));))
-.PHONY: lint-man
-lint-man: $(foreach l, $(linters_man), lint-man-$(l));
-
-
-endif # include guard
diff --git a/share/mk/lint/man/mandoc.mk b/share/mk/lint/man/mandoc.mk
new file mode 100644
index 0000000000..ca25890afe
--- /dev/null
+++ b/share/mk/lint/man/mandoc.mk
@@ -0,0 +1,30 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_LINT_MAN_MANDOC_INCLUDED
+MAKEFILE_LINT_MAN_MANDOC_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/_.mk
+include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
+include $(MAKEFILEDIR)/configure/build-depends/grep.mk
+include $(MAKEFILEDIR)/configure/build-depends/mandoc.mk
+include $(MAKEFILEDIR)/configure/directory_variables.mk
+include $(MAKEFILEDIR)/lint/man/_.mk
+
+
+mandoc_man_ignore_grep := $(DATAROOTDIR)/lint/mandoc/man.ignore.grep
+
+
+$(_LINT_man_mandoc): $(_MANDIR)/%.lint-man.mandoc.touch: $(MANDIR)/% $(mandoc_man_ignore_grep) $(MK) | $$(@D)/
+ $(info LINT (mandoc) $@)
+ ! ($(MANDOC) -man $(MANDOCFLAGS) $< 2>&1 \
+ | $(GREP) -v -f '$(mandoc_man_ignore_grep)' \
+ ||:; \
+ ) \
+ | $(GREP) ^ >&2
+ $(TOUCH) $@
+
+
+endif # include guard
diff --git a/share/mk/lint/man/tbl.mk b/share/mk/lint/man/tbl.mk
new file mode 100644
index 0000000000..27ffa49be3
--- /dev/null
+++ b/share/mk/lint/man/tbl.mk
@@ -0,0 +1,39 @@
+# Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
+
+
+ifndef MAKEFILE_LINT_MAN_TBL_INCLUDED
+MAKEFILE_LINT_MAN_TBL_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/_.mk
+include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
+include $(MAKEFILEDIR)/configure/build-depends/grep.mk
+include $(MAKEFILEDIR)/configure/directory_variables.mk
+include $(MAKEFILEDIR)/lint/man/_.mk
+
+
+$(_LINT_man_tbl): $(_MANDIR)/%.lint-man.tbl.touch: $(MANDIR)/% $(MK) | $$(@D)/
+ $(info LINT (tbl comment) $@)
+ if $(GREP) -q '^\.TS$$' $< && ! $(HEAD) -n1 $< | $(GREP) -q '\\" t$$'; \
+ then \
+ >&2 $(ECHO) "$<:1: missing '\\\" t' comment:"; \
+ >&2 $(HEAD) -n1 <$<; \
+ exit 1; \
+ fi
+ if $(HEAD) -n1 $< | $(GREP) -q '\\" t$$' && ! $(GREP) -q '^\.TS$$' $<; \
+ then \
+ >&2 $(ECHO) "$<:1: spurious '\\\" t' comment:"; \
+ >&2 $(HEAD) -n1 <$<; \
+ exit 1; \
+ fi
+ if $(TAIL) -n+2 <$< | $(GREP) -q '\\" t$$'; \
+ then \
+ >&2 $(ECHO) "$<: spurious '\\\" t' not in first line:"; \
+ >&2 $(GREP) -n '\\" t$$' $< /dev/null; \
+ exit 1; \
+ fi
+ $(TOUCH) $@
+
+
+endif # include guard
diff --git a/share/mk/lint/man/mdoc.mk b/share/mk/lint/mdoc/_.mk
index 8df8a04fbe..170dec1c2c 100644
--- a/share/mk/lint/man/mdoc.mk
+++ b/share/mk/lint/mdoc/_.mk
@@ -4,21 +4,15 @@
########################################################################
-ifndef MAKEFILE_LINT_MAN_MDOC_INCLUDED
-MAKEFILE_LINT_MAN_MDOC_INCLUDED := 1
+ifndef MAKEFILE_LINT_MDOC_INCLUDED
+MAKEFILE_LINT_MDOC_INCLUDED := 1
-include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
-include $(MAKEFILEDIR)/configure/build-depends/grep.mk
-include $(MAKEFILEDIR)/configure/build-depends/mandoc.mk
include $(MAKEFILEDIR)/build/_.mk
-include $(MAKEFILEDIR)/lint/_.mk
+include $(MAKEFILEDIR)/configure/directory_variables.mk
include $(MAKEFILEDIR)/src.mk
-mandoc_mdoc_ignore_grep := $(DATAROOTDIR)/lint/mandoc/mdoc.ignore.grep
-
-
linters_mdoc := mandoc
@@ -28,16 +22,6 @@ $(foreach l, $(linters_mdoc), \
$(NONSO_MDOC))))
-$(_LINT_mdoc_mandoc): $(_MANDIR)/%.lint-mdoc.mandoc.touch: $(MANDIR)/% $(mandoc_mdoc_ignore_grep) | $$(@D)/
- $(info LINT (mandoc) $@)
- ! ($(MANDOC) -mdoc $(MANDOCFLAGS) $< 2>&1 \
- | $(GREP) -v -f '$(mandoc_mdoc_ignore_grep)' \
- ||:; \
- ) \
- | $(GREP) ^ >&2
- $(TOUCH) $@
-
-
$(foreach l, $(linters_mdoc), \
$(eval .PHONY: lint-mdoc-$(l)))
$(foreach l, $(linters_mdoc), \
diff --git a/share/mk/lint/mdoc/mandoc.mk b/share/mk/lint/mdoc/mandoc.mk
new file mode 100644
index 0000000000..2221452875
--- /dev/null
+++ b/share/mk/lint/mdoc/mandoc.mk
@@ -0,0 +1,32 @@
+########################################################################
+# Copyright 2023, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: GPL-3.0-or-later
+########################################################################
+
+
+ifndef MAKEFILE_LINT_MDOC_MANDOC_INCLUDED
+MAKEFILE_LINT_MDOC_MANDOC_INCLUDED := 1
+
+
+include $(MAKEFILEDIR)/build/_.mk
+include $(MAKEFILEDIR)/configure/build-depends/coreutils.mk
+include $(MAKEFILEDIR)/configure/build-depends/grep.mk
+include $(MAKEFILEDIR)/configure/build-depends/mandoc.mk
+include $(MAKEFILEDIR)/lint/mdoc/_.mk
+include $(MAKEFILEDIR)/src.mk
+
+
+mandoc_mdoc_ignore_grep := $(DATAROOTDIR)/lint/mandoc/mdoc.ignore.grep
+
+
+$(_LINT_mdoc_mandoc): $(_MANDIR)/%.lint-mdoc.mandoc.touch: $(MANDIR)/% $(mandoc_mdoc_ignore_grep) | $$(@D)/
+ $(info LINT (mandoc) $@)
+ ! ($(MANDOC) -mdoc $(MANDOCFLAGS) $< 2>&1 \
+ | $(GREP) -v -f '$(mandoc_mdoc_ignore_grep)' \
+ ||:; \
+ ) \
+ | $(GREP) ^ >&2
+ $(TOUCH) $@
+
+
+endif # include guard