1 ########################################################################
2 # Copyright 2021-2023, Alejandro Colomar <alx@kernel.org>
3 # SPDX-License-Identifier: GPL-3.0-or-later
4 ########################################################################
7 ifndef MAKEFILE_INSTALL_MAN_INCLUDED
8 MAKEFILE_INSTALL_MAN_INCLUDED
:= 1
11 include $(MAKEFILEDIR
)/cmd.mk
12 include $(MAKEFILEDIR
)/compress.mk
13 include $(MAKEFILEDIR
)/install/_.mk
14 include $(MAKEFILEDIR
)/src.mk
18 ifeq ($(LINK_PAGES
),.so
)
19 else ifeq ($(LINK_PAGES
),symlink
)
21 $(warning
"LINK_PAGES": "$(LINK_PAGES)")
22 $(error Valid values for
"LINK_PAGES": [".so", "symlink"])
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
41 man2typeext
:= .2type
$(Z
)
43 man3constext
:= .3const
$(Z
)
44 man3headext
:= .3head
$(Z
)
45 man3typeext
:= .3type
$(Z
)
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
)/ \
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
) \
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
)))
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
)/))
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
))
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
)/
146 $(INSTALL_DATA
) -T
$< $@
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),' \
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
$@
; \
169 if
! $(TEST
) -L
$@
; then \
170 $(BZIP2
) $(BZIP2FLAGS
) <$@ \
174 if
! $(TEST
) -L
$@
; then \
175 $(GZIP
) $(GZIPFLAGS
) - <$@ \
179 if
! $(TEST
) -L
$@
; then \
180 $(LZIP
) $(LZIPFLAGS
) - <$@ \
184 if
! $(TEST
) -L
$@
; then \
185 $(XZ
) $(XZFLAGS
) - <$@ \
190 $(_mandirs_rmdir
): $(_mandir
)/man
%/-rmdir
: $$(_man
%pages_rm
) FORCE
191 $(_mandir_rmdir
): $(uninstall_manX
) FORCE
194 .PHONY
: $(install_manX
)
195 $(install_manX
): install-man
%: $$(_man
%pages
)
199 install-man
: $(install_manX
)
202 .PHONY
: $(uninstall_manX
)
203 $(uninstall_manX
): uninstall-man
%: $$(_man
%pages_rm
) $$(_man
%dir_rmdir
)
206 .PHONY
: uninstall-man
207 uninstall-man
: $(_mandir_rmdir
) $(uninstall_manX
)
211 endif # include guard