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