blob: 7dc08071ee6d382bbde15024b6f6cbc4d4ce27e6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
########################################################################
# Copyright (C) 2021, 2022 Alejandro Colomar <alx.manpages@gmail.com>
# SPDX-License-Identifier: GPL-2.0 OR LGPL-2.0
########################################################################
# 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).
# - Variables ending in '_rmdir' refer to dirs that can be removed (exist).
# - Targets of the form '%-rm' remove their corresponding file '%'.
# - Targets of the form '%/.-rmdir' remove their corresponding dir '%/'.
# - Targets of the form '%/.' create their corresponding directory '%/'.
# - Every file or directory to be created depends on its parent directory.
# This avoids race conditions caused by `mkdir -p`. Only the root
# directories are created with parents.
# - The 'FORCE' target is used to make phony some variables that can't be
# .PHONY to avoid some optimizations.
#
########################################################################
SHELL := /usr/bin/env bash -Eeuo pipefail
MAKEFLAGS += --no-builtin-rules
MAKEFLAGS += --no-builtin-variables
MAKEFLAGS += --no-print-directory
MAKEFLAGS += --warn-undefined-variables
srcdir := .
include $(srcdir)/lib/cmd.mk
.PHONY: all
all: build
@:
.PHONY: help
help:
$(info all Alias for "build")
$(info )
$(info clean Remove $$(builddir))
$(info )
$(info build Alias for "build-html")
$(info )
$(info build-html Build HTML manual pages)
$(info html Alias for "build-html")
$(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")
$(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-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-groff Lint man pages with groff(1))
$(info lint-man-mandoc Lint man pages with mandoc(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-gz Create a compressed tarball (.tar.gz))
$(info dist-xz Create a compressed tarball (.tar.xz))
$(info )
$(info builddirs-dist Create directories needed by "dist")
$(info builddirs-html Create directories needed by "build-html")
$(info builddirs-src Create directories needed by "build-src")
$(info lintdirs Create directories needed by "lint")
$(info installdirs Create directories needed by "install")
$(info installdirs-html Create directories needed by "install-html")
$(info installdirs-man Create directories needed by "install-man")
$(info installdirs-man1 Create directories needed by "install-man1")
$(info installdirs-man2 Create directories needed by "install-man2")
$(info installdirs-man2type Create directories needed by "install-man2type")
$(info installdirs-man3 Create directories needed by "install-man3")
$(info installdirs-man3const Create directories needed by "install-man3const")
$(info installdirs-man3head Create directories needed by "install-man3head")
$(info installdirs-man3type Create directories needed by "install-man3type")
$(info installdirs-man4 Create directories needed by "install-man4")
$(info installdirs-man5 Create directories needed by "install-man5")
$(info installdirs-man6 Create directories needed by "install-man6")
$(info installdirs-man7 Create directories needed by "install-man7")
$(info installdirs-man8 Create directories needed by "install-man8")
$(info )
$(info help Print this help)
.SECONDEXPANSION:
include $(srcdir)/lib/build.mk
include $(srcdir)/lib/build-html.mk
include $(srcdir)/lib/build-src.mk
include $(srcdir)/lib/dist.mk
include $(srcdir)/lib/install.mk
include $(srcdir)/lib/install-html.mk
include $(srcdir)/lib/install-man.mk
include $(srcdir)/lib/lint.mk
include $(srcdir)/lib/lint-c.mk
include $(srcdir)/lib/lint-man.mk
$(V).SILENT:
FORCE:
|