]> git.ipfire.org Git - thirdparty/man-pages.git/blob - share/mk/dist.mk
*.mk: Use empty recipes for .PHONY targets
[thirdparty/man-pages.git] / share / mk / dist.mk
1 ########################################################################
2 # Copyright 2021-2022, Alejandro Colomar <alx@kernel.org>
3 # SPDX-License-Identifier: GPL-3.0-or-later
4 ########################################################################
5
6
7 ifndef MAKEFILE_DIST_INCLUDED
8 MAKEFILE_DIST_INCLUDED := 1
9
10
11 include $(MAKEFILEDIR)/build/_.mk
12 include $(MAKEFILEDIR)/cmd.mk
13 include $(MAKEFILEDIR)/compress.mk
14 include $(MAKEFILEDIR)/install/_.mk
15 include $(MAKEFILEDIR)/version.mk
16 include $(MAKEFILEDIR)/verbose.mk
17
18
19 _DISTDIR := $(builddir)/dist
20
21
22 DEFAULT_TARFLAGS := --sort=name
23 DEFAULT_TARFLAGS += --owner=root:0
24 DEFAULT_TARFLAGS += --group=root:0
25 DEFAULT_TARFLAGS += --mtime='$(DISTDATE)'
26 EXTRA_TARFLAGS :=
27 TARFLAGS := $(DEFAULT_TARFLAGS) $(EXTRA_TARFLAGS)
28
29
30 DISTFILES := $(shell $(GIT) ls-files $(HIDE_ERR) | $(SED) 's,^,$(srcdir)/,')
31 _DISTFILES := $(patsubst $(srcdir)/%,$(_DISTDIR)/%,$(DISTFILES))
32 _DISTPAGES := $(filter $(_DISTDIR)/man%,$(_DISTFILES))
33 _DISTOTHERS := $(filter-out $(_DISTDIR)/man%,$(_DISTFILES))
34
35 DISTFILE := $(builddir)/$(DISTNAME).tar
36 compression := bz2 gz lz xz
37 dist := $(foreach x,$(compression),dist-$(x))
38
39
40 $(builddir)/dist/%/:
41 +$(info INSTALL $@)
42 +$(INSTALL_DIR) $@
43
44
45 $(_DISTPAGES): $(_DISTDIR)/man%: $(srcdir)/man% | $$(@D)/
46 $(info INSTALL $@)
47 $(INSTALL_DATA) -T $< $@
48 $(SED) -i '/^.TH/s/(unreleased)/$(DISTVERSION)/' $@
49 $(SED) -i "/^.TH/s/(date)/$$(git log --format=%cs -1 -- $< $(HIDE_ERR))/" $@
50
51 $(_DISTOTHERS): $(_DISTDIR)/%: $(srcdir)/% | $$(@D)/
52 $(info CP $@)
53 $(CP) -T $< $@
54
55
56 $(DISTFILE): $(_DISTFILES) | $$(@D)/
57 $(info TAR $@)
58 $(TAR) $(TARFLAGS) -cf $@ -T /dev/null
59 $(GIT) ls-files \
60 | $(SED) 's,^,$(_DISTDIR)/,' \
61 | $(XARGS) $(TAR) $(TARFLAGS) -rf $@ -C $(srcdir) \
62 --transform 's,^$(_DISTDIR),$(DISTNAME),'
63
64 $(DISTFILE).bz2: %.bz2: % | $$(@D)/
65 $(info BZIP2 $@)
66 $(BZIP2) $(BZIP2FLAGS) -kf $<
67 touch $@
68
69 $(DISTFILE).gz: %.gz: % | $$(@D)/
70 $(info GZIP $@)
71 $(GZIP) $(GZIPFLAGS) -knf $<
72
73 $(DISTFILE).lz: %.lz: % | $$(@D)/
74 $(info LZIP $@)
75 $(LZIP) $(LZIPFLAGS) -kf $<
76 touch $@
77
78 $(DISTFILE).xz: %.xz: % | $$(@D)/
79 $(info XZ $@)
80 $(XZ) $(XZFLAGS) -kf $<
81
82
83 .PHONY: dist-tar
84 dist-tar: $(DISTFILE);
85
86 .PHONY: $(dist)
87 $(dist): dist-%: $(DISTFILE).%;
88
89 .PHONY: dist
90 dist: $(dist);
91
92
93 endif # include guard