]>
Commit | Line | Data |
---|---|---|
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 | ||
7 | ifndef MAKEFILE_INSTALL_MAN_INCLUDED | |
8 | MAKEFILE_INSTALL_MAN_INCLUDED := 1 | |
9 | ||
10 | ||
335acbfb | 11 | include $(srcdir)/lib/cmd.mk |
8bb88d5f | 12 | include $(srcdir)/lib/install.mk |
cb60a7be | 13 | include $(srcdir)/lib/src.mk |
8bb88d5f AC |
14 | |
15 | ||
335acbfb AC |
16 | LINK_PAGES := .so |
17 | ifeq ($(LINK_PAGES),.so) | |
18 | else ifeq ($(LINK_PAGES),symlink) | |
19 | else | |
20 | $(warning "LINK_PAGES": "$(LINK_PAGES)") | |
21 | $(error Valid values for "LINK_PAGES": [".so", "symlink"]) | |
22 | endif | |
23 | ||
1a35f5b7 AC |
24 | Z := |
25 | ifeq ($(Z),) | |
26 | else ifeq ($(Z),.gz) | |
27 | else | |
28 | $(warning "Z": "$(Z)") | |
29 | $(error Valid values for "Z": ["", ".gz"]) | |
30 | endif | |
31 | ||
335acbfb | 32 | |
451a27a7 | 33 | mandir := $(datarootdir)/man |
451a27a7 AC |
34 | man1dir := $(mandir)/man1 |
35 | man2dir := $(mandir)/man2 | |
36 | man2typedir := $(mandir)/man2type | |
37 | man3dir := $(mandir)/man3 | |
23461f53 | 38 | man3constdir:= $(mandir)/man3const |
5f836211 | 39 | man3headdir := $(mandir)/man3head |
451a27a7 AC |
40 | man3typedir := $(mandir)/man3type |
41 | man4dir := $(mandir)/man4 | |
42 | man5dir := $(mandir)/man5 | |
43 | man6dir := $(mandir)/man6 | |
44 | man7dir := $(mandir)/man7 | |
45 | man8dir := $(mandir)/man8 | |
1a35f5b7 AC |
46 | man1ext := .1$(Z) |
47 | man2ext := .2$(Z) | |
48 | man2typeext := .2type$(Z) | |
49 | man3ext := .3$(Z) | |
50 | man3constext:= .3const$(Z) | |
51 | man3headext := .3head$(Z) | |
52 | man3typeext := .3type$(Z) | |
53 | man4ext := .4$(Z) | |
54 | man5ext := .5$(Z) | |
55 | man6ext := .6$(Z) | |
56 | man7ext := .7$(Z) | |
57 | man8ext := .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 | 131 | MAN_SECTIONS := 1 2 2type 3 3const 3head 3type 4 5 6 7 8 |
0110da57 AC |
132 | install_manX := $(foreach x,$(MAN_SECTIONS),install-man$(x)) |
133 | installdirs_manX := $(foreach x,$(MAN_SECTIONS),installdirs-man$(x)) | |
134 | uninstall_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 |
168 | ifeq ($(LINK_PAGES),symlink) |
169 | if $(GREP) '^\.so ' <$@ >/dev/null; then \ | |
170 | $(SED) 's,^\.so \(.*\),../\1,' <$@ \ | |
171 | | $(XARGS) -I tgt $(LN) -fsT tgt $@; \ | |
172 | fi | |
173 | endif | |
1a35f5b7 AC |
174 | ifeq ($(Z),.gz) |
175 | if ! $(TEST) -L $@; then \ | |
176 | $(GZIP) - <$@ \ | |
177 | | $(SPONGE) $@; \ | |
178 | fi | |
179 | endif | |
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 | |
192 | install-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 | |
200 | uninstall-man: $(_mandir_rmdir) $(uninstall_manX) | |
201 | @: | |
202 | ||
203 | ||
204 | endif # MAKEFILE_INSTALL_MAN_INCLUDED |