]> git.ipfire.org Git - thirdparty/man-pages.git/blob - share/mk/install/man.mk
share/mk/: Read files before 'if'
[thirdparty/man-pages.git] / share / mk / install / man.mk
1 # Copyright 2021-2024, Alejandro Colomar <alx@kernel.org>
2 # SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
3
4
5 ifndef MAKEFILE_INSTALL_MAN_INCLUDED
6 MAKEFILE_INSTALL_MAN_INCLUDED := 1
7
8
9 include $(MAKEFILEDIR)/configure/build-depends/coreutils/cat.mk
10 include $(MAKEFILEDIR)/configure/build-depends/coreutils/install.mk
11 include $(MAKEFILEDIR)/configure/build-depends/coreutils/ln.mk
12 include $(MAKEFILEDIR)/configure/build-depends/coreutils/test.mk
13 include $(MAKEFILEDIR)/configure/build-depends/findutils/xargs.mk
14 include $(MAKEFILEDIR)/configure/build-depends/grep/grep.mk
15 include $(MAKEFILEDIR)/configure/build-depends/moreutils/sponge.mk
16 include $(MAKEFILEDIR)/configure/build-depends/sed/sed.mk
17 include $(MAKEFILEDIR)/configure/directory_variables/install.mk
18 include $(MAKEFILEDIR)/configure/directory_variables/src.mk
19 include $(MAKEFILEDIR)/configure/man/link_pages.mk
20 include $(MAKEFILEDIR)/install/_.mk
21 include $(MAKEFILEDIR)/src/man.mk
22
23
24 _mandir := $(DESTDIR)$(mandir)
25 $(foreach s, $(MANSECTIONS), \
26 $(eval _man$(s)dir := $(DESTDIR)$(man$(s)dir)))
27
28 $(foreach s, $(MANSECTIONS), \
29 $(eval _man$(s)pages := \
30 $(patsubst $(MAN$(s)DIR)/%.$(s), $(_man$(s)dir)/%$(man$(s)ext), \
31 $(MAN$(s)PAGES))))
32 $(foreach s, $(MANSECTIONS), \
33 $(eval _man$(s)intropage := \
34 $(patsubst $(MAN$(s)DIR)/%.$(s), $(_man$(s)dir)/%$(man$(s)ext), \
35 $(MAN$(s)INTROPAGE))))
36 _manintropages := $(foreach s, $(MANSECTIONS), $(_man$(s)intropage))
37 _manpages := $(_manintropages) $(foreach s, $(MANSECTIONS), $(_man$(s)pages))
38
39 _manintropages_rm := $(addsuffix -rm, $(wildcard $(_manintropages)))
40 $(foreach s, $(MANSECTIONS), \
41 $(eval _man$(s)pages_rm := \
42 $(addsuffix -rm, \
43 $(wildcard $(_man$(s)pages)))))
44
45
46 $(foreach s, $(MANSECTIONS), \
47 $(eval $(_man$(s)pages) $(_man$(s)intropage): \
48 $(_man$(s)dir)/%$(man$(s)ext): \
49 $(_MANDIR)/man$(s)/%.$(s) $(MK) | $$$$(@D)/))
50
51
52 $(_manpages):
53 $(info $(INFO_)INSTALL $@)
54 $(INSTALL_DATA) -T $< $@
55 $(SED) -i $(foreach s, $(MANSECTIONS), \
56 -e '/^\.so /s, man$(s)/\(.*\)\.$(s)$$, $(notdir $(man$(s)dir))/\1$(man$(s)ext),') \
57 $@
58 ifeq ($(LINK_PAGES),symlink)
59 $(CAT) <$@ \
60 | if $(GREP) '^\.so ' >/dev/null; then \
61 $(GREP) '^\.so ' <$@ \
62 | $(SED) 's,^\.so \(.*\),../\1,' \
63 | $(XARGS) -I tgt $(LN) -fsT tgt $@; \
64 fi
65 endif
66
67
68 .PHONY: install-manintro
69 install-manintro: $(_manintropages);
70 $(foreach s, $(MANSECTIONS), \
71 $(eval .PHONY: install-man$(s)))
72 $(foreach s, $(MANSECTIONS), \
73 $(eval install-man$(s): $(_man$(s)pages);))
74 .PHONY: install-man
75 install-man: install-manintro $(foreach s, $(MANSECTIONS), install-man$(s));
76
77 .PHONY: uninstall-manintro
78 uninstall-manintro: $(_manintropages_rm);
79 $(foreach s, $(MANSECTIONS), \
80 $(eval .PHONY: uninstall-man$(s)))
81 $(foreach s, $(MANSECTIONS), \
82 $(eval uninstall-man$(s): $(_man$(s)pages_rm);))
83 .PHONY: uninstall-man
84 uninstall-man: uninstall-manintro $(foreach s, $(MANSECTIONS), uninstall-man$(s));
85
86
87 endif # include guard