summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile234
1 files changed, 234 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..56f288c
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,234 @@
+########################################################################
+# Copyright 2021-2022, Alejandro Colomar <alx@kernel.org>
+# SPDX-License-Identifier: GPL-3.0-or-later
+########################################################################
+# Conventions:
+#
+# - Follow "Makefile Conventions" from the "GNU Coding Standards" closely.
+# However, when something could be improved, don't follow those.
+# - Uppercase variables, when referring files, refer to files in this repo.
+# - Lowercase variables, when referring files, refer to system files.
+# - Lowercase variables starting with '_' refer to absolute paths,
+# including $(DESTDIR).
+# - Uppercase variables starting with '_' refer to temporary files produced
+# in $builddir.
+# - Variables ending with '_' refer to a subdir of their parent dir, which
+# is in a variable of the same name but without the '_'. The subdir is
+# named after this project: <*/man>.
+# - Variables ending in '_rm' refer to files that can be removed (exist).
+# - Targets of the form '%-rm' remove their corresponding file '%'.
+#
+########################################################################
+
+
+ifndef MAKEFILE_INCLUDED
+MAKEFILE_INCLUDED := 1
+
+
+SHELL := /usr/bin/env bash -Eeuo pipefail
+
+
+MAKEFLAGS += --no-builtin-rules
+MAKEFLAGS += --no-builtin-variables
+MAKEFLAGS += --warn-undefined-variables
+
+
+srcdir := .
+DATAROOTDIR := $(srcdir)/share
+MAKEFILEDIR := $(DATAROOTDIR)/mk
+
+
+.PHONY: all
+all: build;
+
+.PHONY: help
+help:
+ $(info all Alias for "build")
+ $(info )
+ $(info clean Remove $$(builddir))
+ $(info )
+ $(info build Wrapper for build-* targets)
+ $(info )
+ $(info build-pre Preprocess man pages; alias for "build-pre-tbl")
+ $(info build-pre-preconv Preprocess man pages with preconv(1))
+ $(info build-pre-tbl Preprocess man pages with tbl(1))
+ $(info )
+ $(info build-catman Build cat pages; alias for "build-catman-grotty")
+ $(info build-catman-eqn eqn(1) step of "build-catman")
+ $(info build-catman-troff Wrapper for build-catman-troff-* targets)
+ $(info build-catman-troff-man troff(1) step of "build-catman" for man(7) pages)
+ $(info build-catman-troff-mdoc troff(1) step of "build-catman" for mdoc(7) pages)
+ $(info build-catman-grotty grotty(1) step of "build-catman")
+ $(info )
+ $(info build-html Build HTML manual pages)
+ $(info html Alias for "build-html")
+ $(info )
+ $(info build-pdf Build PDF manual pages; alias for "build-pdf-grops")
+ $(info build-pdf-eqn eqn(1) step of "build-pdf")
+ $(info build-pdf-troff Wrapper for build-pdf-troff-* targets)
+ $(info build-pdf-troff-man troff(1) step of "build-pdf" for man(7) pages)
+ $(info build-pdf-troff-mdoc troff(1) step of "build-pdf" for mdoc(7) pages)
+ $(info build-pdf-gropdf gropdf(1) step of "build-pdf")
+ $(info )
+ $(info build-ps Build PostScript manual pages; alias for "build-ps-grops")
+ $(info build-ps-eqn eqn(1) step of "build-ps")
+ $(info build-ps-troff Wrapper for build-ps-troff-* targets)
+ $(info build-ps-troff-man troff(1) step of "build-ps" for man(7) pages)
+ $(info build-ps-troff-mdoc troff(1) step of "build-ps" for mdoc(7) pages)
+ $(info build-ps-grops grops(1) step of "build-ps")
+ $(info )
+ $(info build-src Alias for "build-src-ld")
+ $(info build-src-c Extract C programs from EXAMPLES)
+ $(info build-src-cc Compile C programs from EXAMPLES)
+ $(info build-src-ld Link C programs from EXAMPLES)
+ $(info )
+ $(info lint Wrapper for "lint-c lint-man lint-mdoc")
+ $(info lint-c Wrapper for lint-c-* targets)
+ $(info lint-c-checkpatch Lint C programs from EXAMPLES with checkpatch(1))
+ $(info lint-c-clang-tidy Lint C programs from EXAMPLES with clang-tidy(1))
+ $(info lint-c-cppcheck Lint C programs from EXAMPLES with cppcheck(1))
+ $(info lint-c-cpplint Lint C programs from EXAMPLES with cpplint(1))
+ $(info lint-c-iwyu Lint C programs from EXAMPLES with iwyu(1))
+ $(info lint-man Wrapper for lint-man-* targets)
+ $(info lint-man-mandoc Lint man(7) pages with mandoc(1))
+ $(info lint-man-tbl Lint man(7) pages about '\" t' comment for tbl(1))
+ $(info lint-mdoc Wrapper for lint-mdoc-* targets)
+ $(info lint-mdoc-mandoc Lint mdoc(7) pages with mandoc(1))
+ $(info )
+ $(info check Alias for "check-catman")
+ $(info check-catman Check cat pages; alias for "check-catman-grep")
+ $(info check-catman-col Filter cat pages with col(1))
+ $(info check-catman-grep Check cat pages with grep(1))
+ $(info )
+ $(info [un]install Alias for "[un]install-man")
+ $(info [un]install-man Wrapper for [un]install-man* targets)
+ $(info [un]install-man1 [Un]install man pages in section 1)
+ $(info [un]install-man2 [Un]install man pages in section 2)
+ $(info [un]install-man2type [Un]install man pages in section 2type)
+ $(info [un]install-man3 [Un]install man pages in section 3)
+ $(info [un]install-man3const [Un]install man pages in section 3const)
+ $(info [un]install-man3head [Un]install man pages in section 3head)
+ $(info [un]install-man3type [Un]install man pages in section 3type)
+ $(info [un]install-man4 [Un]install man pages in section 4)
+ $(info [un]install-man5 [Un]install man pages in section 5)
+ $(info [un]install-man6 [Un]install man pages in section 6)
+ $(info [un]install-man7 [Un]install man pages in section 7)
+ $(info [un]install-man8 [Un]install man pages in section 8)
+ $(info )
+ $(info [un]install-html [Un]install HTML manual pages)
+ $(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 )
+ $(info help Print this help)
+ $(info help-variables Print all variables available, and their default values)
+ $(info )
+
+
+.SECONDEXPANSION:
+
+
+MK := \
+ $(srcdir)/Makefile \
+ $(wildcard $(addprefix $(MAKEFILEDIR)/, *.mk */*.mk */*/*.mk))
+include $(MK)
+$(MK):: ;
+
+
+.PHONY: help-variables
+help-variables:
+ $(info V Define to non-empty string for verbose output)
+ $(info )
+ $(info LINK_PAGES How to install link pages. [".so", "symlink"])
+ $(info Z Install pages compressed. ["", ".bz2", ".gz", ".lz", ".xz"])
+ $(info )
+ $(info DISTNAME $$(git describe))
+ $(info DISTVERSION /$$DISTNAME/s/man-pages-//)
+ $(info )
+ $(info # Directory variables:)
+ $(info )
+ $(info builddir .tmp)
+ $(info DESTDIR )
+ $(info prefix /usr/local)
+ $(info mandir $$(datarootdir)/man)
+ $(info docdir $$(datarootdir)/doc)
+ $(info )
+ $(info man1dir $$(mandir)/man1)
+ $(info man2dir $$(mandir)/man2)
+ $(info man2typedir $$(mandir)/man2type)
+ $(info man3dir $$(mandir)/man3)
+ $(info man3constdir $$(mandir)/man3const)
+ $(info man3headdir $$(mandir)/man3head)
+ $(info man3typedir $$(mandir)/man3type)
+ $(info man4dir $$(mandir)/man4)
+ $(info man5dir $$(mandir)/man5)
+ $(info man6dir $$(mandir)/man6)
+ $(info man7dir $$(mandir)/man7)
+ $(info man8dir $$(mandir)/man8)
+ $(info )
+ $(info htmldir $$(docdir))
+ $(info htmlext .html)
+ $(info )
+ $(info # Command variables (and flags):)
+ $(info )
+ $(info - MANWIDTH)
+ $(info - NROFF_OUT_DEVICE)
+ $(info PRECONV {EXTRA_,}PRECONVFLAGS)
+ $(info TBL)
+ $(info EQN {EXTRA_,}EQNFLAGS)
+ $(info TROFF {EXTRA_,}TROFFFLAGS{,_MAN,_MDOC} {EXTRA_,}NROFFFLAGS)
+ $(info GROPDF {EXTRA_,}GROPDFFLAGS)
+ $(info GROPS {EXTRA_,}GROPSFLAGS)
+ $(info GROTTY {EXTRA_,}GROTTYFLAGS)
+ $(info COL {EXTRA_,}COLFLAGS)
+ $(info )
+ $(info MANDOC {EXTRA_,}MANDOCFLAGS)
+ $(info MAN2HTML {EXTRA_,}MAN2HTMLFLAGS)
+ $(info )
+ $(info BZIP2 {EXTRA_,}BZIP2FLAGS)
+ $(info CP)
+ $(info ECHO)
+ $(info EXPR)
+ $(info FIND)
+ $(info GIT)
+ $(info GZIP {EXTRA_,}GZIPFLAGS)
+ $(info HEAD)
+ $(info LN)
+ $(info LOCALE)
+ $(info LZIP {EXTRA_,}LZIPFLAGS)
+ $(info PKGCONF)
+ $(info SED)
+ $(info SORT)
+ $(info SPONGE)
+ $(info TAC)
+ $(info TAIL)
+ $(info TAR)
+ $(info TEST)
+ $(info XARGS)
+ $(info XZ {EXTRA_,}XZFLAGS)
+ $(info )
+ $(info INSTALL)
+ $(info INSTALL_DATA)
+ $(info MKDIR)
+ $(info RM)
+ $(info )
+ $(info - {EXTRA_,}CPPFLAGS)
+ $(info CC {EXTRA_,}CFLAGS)
+ $(info LD {EXTRA_,}LDFLAGS {EXTRA_,}LDLIBS)
+ $(info )
+ $(info CHECKPATCH {EXTRA_,}CHECKPATCHFLAGS)
+ $(info CLANG-TIDY {EXTRA_,}CLANG-TIDYFLAGS)
+ $(info CPPCHECK {EXTRA_,}CPPCHECKFLAGS)
+ $(info CPPLINT {EXTRA_,}CPPLINTFLAGS)
+ $(info IWYU {EXTRA_,}IWYUFLAGS)
+ $(info )
+
+
+.DELETE_ON_ERROR:
+
+
+endif #include guard