]> git.ipfire.org Git - thirdparty/man-pages.git/blob - share/mk/install/man.mk
128f20833305067da98d581566fbf89b568e02eb
[thirdparty/man-pages.git] / share / mk / install / man.mk
1 ########################################################################
2 # Copyright 2021-2023, Alejandro Colomar <alx@kernel.org>
3 # SPDX-License-Identifier: GPL-3.0-or-later
4 ########################################################################
5
6
7 ifndef MAKEFILE_INSTALL_MAN_INCLUDED
8 MAKEFILE_INSTALL_MAN_INCLUDED := 1
9
10
11 include $(MAKEFILEDIR)/cmd.mk
12 include $(MAKEFILEDIR)/compress.mk
13 include $(MAKEFILEDIR)/install/_.mk
14 include $(MAKEFILEDIR)/src.mk
15
16
17 LINK_PAGES := .so
18 ifeq ($(LINK_PAGES),.so)
19 else ifeq ($(LINK_PAGES),symlink)
20 else
21 $(warning "LINK_PAGES": "$(LINK_PAGES)")
22 $(error Valid values for "LINK_PAGES": [".so", "symlink"])
23 endif
24
25
26 mandir := $(datarootdir)/man
27 man1dir := $(mandir)/man1
28 man2dir := $(mandir)/man2
29 man2typedir := $(mandir)/man2type
30 man3dir := $(mandir)/man3
31 man3constdir:= $(mandir)/man3const
32 man3headdir := $(mandir)/man3head
33 man3typedir := $(mandir)/man3type
34 man4dir := $(mandir)/man4
35 man5dir := $(mandir)/man5
36 man6dir := $(mandir)/man6
37 man7dir := $(mandir)/man7
38 man8dir := $(mandir)/man8
39 man1ext := .1$(Z)
40 man2ext := .2$(Z)
41 man2typeext := .2type$(Z)
42 man3ext := .3$(Z)
43 man3constext:= .3const$(Z)
44 man3headext := .3head$(Z)
45 man3typeext := .3type$(Z)
46 man4ext := .4$(Z)
47 man5ext := .5$(Z)
48 man6ext := .6$(Z)
49 man7ext := .7$(Z)
50 man8ext := .8$(Z)
51
52
53 _mandir := $(DESTDIR)$(mandir)
54 _man1dir := $(DESTDIR)$(man1dir)
55 _man2dir := $(DESTDIR)$(man2dir)
56 _man2typedir := $(DESTDIR)$(man2typedir)
57 _man3dir := $(DESTDIR)$(man3dir)
58 _man3constdir := $(DESTDIR)$(man3constdir)
59 _man3headdir := $(DESTDIR)$(man3headdir)
60 _man3typedir := $(DESTDIR)$(man3typedir)
61 _man4dir := $(DESTDIR)$(man4dir)
62 _man5dir := $(DESTDIR)$(man5dir)
63 _man6dir := $(DESTDIR)$(man6dir)
64 _man7dir := $(DESTDIR)$(man7dir)
65 _man8dir := $(DESTDIR)$(man8dir)
66 _mandirs := $(_man1dir)/ \
67 $(_man2dir)/ $(_man2typedir)/ \
68 $(_man3dir)/ $(_man3constdir)/ $(_man3headdir)/ $(_man3typedir)/ \
69 $(_man4dir)/ \
70 $(_man5dir)/ \
71 $(_man6dir)/ \
72 $(_man7dir)/ \
73 $(_man8dir)/ \
74
75 _man1pages := $(patsubst $(MANDIR)/man1/%,$(_man1dir)/%$(Z),$(MAN1PAGES))
76 _man2pages := $(patsubst $(MANDIR)/man2/%,$(_man2dir)/%$(Z),$(MAN2PAGES))
77 _man2typepages := $(patsubst $(MANDIR)/man2type/%,$(_man2typedir)/%$(Z),$(MAN2TYPEPAGES))
78 _man3pages := $(patsubst $(MANDIR)/man3/%,$(_man3dir)/%$(Z),$(MAN3PAGES))
79 _man3constpages := $(patsubst $(MANDIR)/man3const/%,$(_man3constdir)/%$(Z),$(MAN3CONSTPAGES))
80 _man3headpages := $(patsubst $(MANDIR)/man3head/%,$(_man3headdir)/%$(Z),$(MAN3HEADPAGES))
81 _man3typepages := $(patsubst $(MANDIR)/man3type/%,$(_man3typedir)/%$(Z),$(MAN3TYPEPAGES))
82 _man4pages := $(patsubst $(MANDIR)/man4/%,$(_man4dir)/%$(Z),$(MAN4PAGES))
83 _man5pages := $(patsubst $(MANDIR)/man5/%,$(_man5dir)/%$(Z),$(MAN5PAGES))
84 _man6pages := $(patsubst $(MANDIR)/man6/%,$(_man6dir)/%$(Z),$(MAN6PAGES))
85 _man7pages := $(patsubst $(MANDIR)/man7/%,$(_man7dir)/%$(Z),$(MAN7PAGES))
86 _man8pages := $(patsubst $(MANDIR)/man8/%,$(_man8dir)/%$(Z),$(MAN8PAGES))
87 _manpages := $(_man1pages) \
88 $(_man2pages) $(_man2typepages) \
89 $(_man3pages) $(_man3constpages) $(_man3headpages) $(_man3typepages) \
90 $(_man4pages) \
91 $(_man5pages) \
92 $(_man6pages) \
93 $(_man7pages) \
94 $(_man8pages)
95
96 _man1pages_rm := $(addsuffix -rm,$(wildcard $(_man1pages)))
97 _man2pages_rm := $(addsuffix -rm,$(wildcard $(_man2pages)))
98 _man2typepages_rm := $(addsuffix -rm,$(wildcard $(_man2typepages)))
99 _man3pages_rm := $(addsuffix -rm,$(wildcard $(_man3pages)))
100 _man3constpages_rm:= $(addsuffix -rm,$(wildcard $(_man3constpages)))
101 _man3headpages_rm := $(addsuffix -rm,$(wildcard $(_man3headpages)))
102 _man3typepages_rm := $(addsuffix -rm,$(wildcard $(_man3typepages)))
103 _man4pages_rm := $(addsuffix -rm,$(wildcard $(_man4pages)))
104 _man5pages_rm := $(addsuffix -rm,$(wildcard $(_man5pages)))
105 _man6pages_rm := $(addsuffix -rm,$(wildcard $(_man6pages)))
106 _man7pages_rm := $(addsuffix -rm,$(wildcard $(_man7pages)))
107 _man8pages_rm := $(addsuffix -rm,$(wildcard $(_man8pages)))
108
109 _mandirs_rmdir := $(addsuffix -rmdir,$(wildcard $(_mandirs)))
110 _man1dir_rmdir := $(addsuffix -rmdir,$(wildcard $(_man1dir)))
111 _man2dir_rmdir := $(addsuffix -rmdir,$(wildcard $(_man2dir)))
112 _man2typedir_rmdir := $(addsuffix -rmdir,$(wildcard $(_man2typedir)))
113 _man3dir_rmdir := $(addsuffix -rmdir,$(wildcard $(_man3dir)))
114 _man3constdir_rmdir:= $(addsuffix -rmdir,$(wildcard $(_man3constdir)))
115 _man3headdir_rmdir := $(addsuffix -rmdir,$(wildcard $(_man3headdir)))
116 _man3typedir_rmdir := $(addsuffix -rmdir,$(wildcard $(_man3typedir)))
117 _man4dir_rmdir := $(addsuffix -rmdir,$(wildcard $(_man4dir)))
118 _man5dir_rmdir := $(addsuffix -rmdir,$(wildcard $(_man5dir)))
119 _man6dir_rmdir := $(addsuffix -rmdir,$(wildcard $(_man6dir)))
120 _man7dir_rmdir := $(addsuffix -rmdir,$(wildcard $(_man7dir)))
121 _man8dir_rmdir := $(addsuffix -rmdir,$(wildcard $(_man8dir)))
122 _mandir_rmdir := $(addsuffix -rmdir,$(wildcard $(_mandir)/))
123
124 MAN_SECTIONS := 1 2 2type 3 3const 3head 3type 4 5 6 7 8
125 install_manX := $(foreach x,$(MAN_SECTIONS),install-man$(x))
126 installdirs_manX := $(foreach x,$(MAN_SECTIONS),installdirs-man$(x))
127 uninstall_manX := $(foreach x,$(MAN_SECTIONS),uninstall-man$(x))
128
129
130 $(_man1pages): $(_man1dir)/%$(Z): $(MANDIR)/man1/% | $$(@D)/
131 $(_man2pages): $(_man2dir)/%$(Z): $(MANDIR)/man2/% | $$(@D)/
132 $(_man2typepages): $(_man2typedir)/%$(Z): $(MANDIR)/man2type/% | $$(@D)/
133 $(_man3pages): $(_man3dir)/%$(Z): $(MANDIR)/man3/% | $$(@D)/
134 $(_man3constpages): $(_man3constdir)/%$(Z): $(MANDIR)/man3const/% | $$(@D)/
135 $(_man3headpages): $(_man3headdir)/%$(Z): $(MANDIR)/man3head/% | $$(@D)/
136 $(_man3typepages): $(_man3typedir)/%$(Z): $(MANDIR)/man3type/% | $$(@D)/
137 $(_man4pages): $(_man4dir)/%$(Z): $(MANDIR)/man4/% | $$(@D)/
138 $(_man5pages): $(_man5dir)/%$(Z): $(MANDIR)/man5/% | $$(@D)/
139 $(_man6pages): $(_man6dir)/%$(Z): $(MANDIR)/man6/% | $$(@D)/
140 $(_man7pages): $(_man7dir)/%$(Z): $(MANDIR)/man7/% | $$(@D)/
141 $(_man8pages): $(_man8dir)/%$(Z): $(MANDIR)/man8/% | $$(@D)/
142
143
144 $(_manpages):
145 $(info INSTALL $@)
146 $(INSTALL_DATA) -T $< $@
147 $(SED) -i \
148 -e '/^\.so /s, man1/\(.*\)\.1$$, $(notdir $(man1dir))/\1$(man1ext),' \
149 -e '/^\.so /s, man2/\(.*\)\.2$$, $(notdir $(man2dir))/\1$(man2ext),' \
150 -e '/^\.so /s, man2type/\(.*\)\.2type$$, $(notdir $(man2typedir))/\1$(man2typeext),' \
151 -e '/^\.so /s, man3/\(.*\)\.3$$, $(notdir $(man3dir))/\1$(man3ext),' \
152 -e '/^\.so /s, man3const/\(.*\)\.3const$$, $(notdir $(man3constdir))/\1$(man3constext),' \
153 -e '/^\.so /s, man3head/\(.*\)\.3head$$, $(notdir $(man3headdir))/\1$(man3headext),' \
154 -e '/^\.so /s, man3type/\(.*\)\.3type$$, $(notdir $(man3typedir))/\1$(man3typeext),' \
155 -e '/^\.so /s, man4/\(.*\)\.4$$, $(notdir $(man4dir))/\1$(man4ext),' \
156 -e '/^\.so /s, man5/\(.*\)\.5$$, $(notdir $(man5dir))/\1$(man5ext),' \
157 -e '/^\.so /s, man6/\(.*\)\.6$$, $(notdir $(man6dir))/\1$(man6ext),' \
158 -e '/^\.so /s, man7/\(.*\)\.7$$, $(notdir $(man7dir))/\1$(man7ext),' \
159 -e '/^\.so /s, man8/\(.*\)\.8$$, $(notdir $(man8dir))/\1$(man8ext),' \
160 $@
161 ifeq ($(LINK_PAGES),symlink)
162 if $(GREP) '^\.so ' <$@ >/dev/null; then \
163 $(GREP) '^\.so ' <$@ \
164 | $(SED) 's,^\.so \(.*\),../\1,' \
165 | $(XARGS) -I tgt $(LN) -fsT tgt $@; \
166 fi
167 endif
168 ifeq ($(Z),.bz2)
169 if ! $(TEST) -L $@; then \
170 $(BZIP2) $(BZIP2FLAGS) <$@ \
171 | $(SPONGE) $@; \
172 fi
173 else ifeq ($(Z),.gz)
174 if ! $(TEST) -L $@; then \
175 $(GZIP) $(GZIPFLAGS) - <$@ \
176 | $(SPONGE) $@; \
177 fi
178 else ifeq ($(Z),.lz)
179 if ! $(TEST) -L $@; then \
180 $(LZIP) $(LZIPFLAGS) - <$@ \
181 | $(SPONGE) $@; \
182 fi
183 else ifeq ($(Z),.xz)
184 if ! $(TEST) -L $@; then \
185 $(XZ) $(XZFLAGS) - <$@ \
186 | $(SPONGE) $@; \
187 fi
188 endif
189
190 $(_mandirs_rmdir): $(_mandir)/man%/-rmdir: $$(_man%pages_rm) FORCE
191 $(_mandir_rmdir): $(uninstall_manX) FORCE
192
193
194 .PHONY: $(install_manX)
195 $(install_manX): install-man%: $$(_man%pages)
196 @:
197
198 .PHONY: install-man
199 install-man: $(install_manX)
200 @:
201
202 .PHONY: $(uninstall_manX)
203 $(uninstall_manX): uninstall-man%: $$(_man%pages_rm) $$(_man%dir_rmdir)
204 @:
205
206 .PHONY: uninstall-man
207 uninstall-man: $(_mandir_rmdir) $(uninstall_manX)
208 @:
209
210
211 endif # include guard