chiark / gitweb /
changelog: start 9.12
[dgit.git] / Makefile
1 # dgit
2 # Integration between git and Debian-style archives
3 #
4 # Copyright (C)2013-2018 Ian Jackson
5 # Copyright (C)2019      Sean Whitton
6 #
7 # This program is free software: you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation, either version 3 of the License, or
10 # (at your option) any later version.
11 #
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
20 INSTALL=install
21 INSTALL_DIR=$(INSTALL) -d
22 INSTALL_PROGRAM=$(INSTALL) -m 755
23 INSTALL_DATA=$(INSTALL) -m 644
24
25 prefix?=/usr/local
26
27 bindir=$(prefix)/bin
28 mandir=$(prefix)/share/man
29 perldir=$(prefix)/share/perl5
30 man1dir=$(mandir)/man1
31 man5dir=$(mandir)/man5
32 man7dir=$(mandir)/man7
33 infraexamplesdir=$(prefix)/share/doc/dgit-infrastructure/examples
34 txtdocdir=$(prefix)/share/doc/dgit
35 absurddir=$(prefix)/share/dgit/absurd
36
37 PROGRAMS=dgit dgit-badcommit-fixup git-playtree-setup
38 MAN1PAGES=dgit.1
39
40 MAN7PAGES=dgit.7                                \
41         dgit-user.7 dgit-nmu-simple.7           \
42         dgit-maint-native.7                     \
43         dgit-maint-merge.7 dgit-maint-gbp.7     \
44         dgit-maint-debrebase.7                  \
45         dgit-downstream-dsc.7                   \
46         dgit-sponsorship.7                      \
47         dgit-maint-bpo.7
48
49 TXTDOCS=README.dsc-import
50 PERLMODULES= \
51         Debian/Dgit.pm \
52         Debian/Dgit/ExitStatus.pm \
53         Debian/Dgit/I18n.pm
54 ABSURDITIES=git
55
56 GDR_PROGRAMS=git-debrebase
57 GDR_PERLMODULES= \
58         Debian/Dgit.pm \
59         Debian/Dgit/GDR.pm \
60         Debian/Dgit/ExitStatus.pm \
61         Debian/Dgit/I18n.pm
62 GDR_MAN1PAGES=git-debrebase.1
63 GDR_MAN5PAGES=git-debrebase.5
64
65 GDP_PROGRAMS=git-debpush
66 GDP_MAN1PAGES=git-debpush.1
67
68 INFRA_PROGRAMS=dgit-repos-server dgit-ssh-dispatch dgit-mirror-ssh-wrap \
69         dgit-repos-policy-debian dgit-repos-admin-debian \
70         dgit-repos-policy-trusting dgit-mirror-rsync
71 INFRA_EXAMPLES=get-dm-txt ssh-wrap drs-cron-wrap get-suites
72 INFRA_PERLMODULES= \
73         Debian/Dgit.pm \
74         Debian/Dgit/Infra.pm \
75         Debian/Dgit/Policy/Debian.pm
76
77 MANPAGES=$(MAN1PAGES) $(MAN5PAGES) $(MAN7PAGES) \
78         $(GDR_MAN1PAGES) $(GDR_MAN5PAGES) \
79         $(GDP_MAN1PAGES)
80
81 all:    $(MANPAGES) $(addprefix substituted/,$(PROGRAMS))
82
83 substituted/%:  %
84         mkdir -p substituted
85         perl -pe 's{\bundef\b}{'\''$(absurddir)'\''} if m/###substituted###/' \
86                 <$< >$@
87
88 install:        installdirs all
89         $(INSTALL_PROGRAM) $(addprefix substituted/,$(PROGRAMS)) \
90                 $(DESTDIR)$(bindir)
91         $(INSTALL_PROGRAM) $(addprefix absurd/,$(ABSURDITIES)) \
92                 $(DESTDIR)$(absurddir)
93         $(INSTALL_DATA) $(MAN1PAGES) $(DESTDIR)$(man1dir)
94         $(INSTALL_DATA) $(MAN7PAGES) $(DESTDIR)$(man7dir)
95         $(INSTALL_DATA) $(TXTDOCS) $(DESTDIR)$(txtdocdir)
96         set -e; for m in $(PERLMODULES); do \
97                 $(INSTALL_DATA) $$m $(DESTDIR)$(perldir)/$${m%/*}; \
98         done
99
100 installdirs:
101         $(INSTALL_DIR) $(DESTDIR)$(bindir) \
102                 $(DESTDIR)$(man1dir) $(DESTDIR)$(man5dir) \
103                 $(DESTDIR)$(man7dir) \
104                 $(DESTDIR)$(txtdocdir) $(DESTDIR)$(absurddir) \
105                 $(addprefix $(DESTDIR)$(perldir)/, $(dir $(PERLMODULES)))
106
107 install-gdp:    installdirs-gdp
108         $(INSTALL_PROGRAM) $(GDP_PROGRAMS) $(DESTDIR)$(bindir)
109         $(INSTALL_DATA) $(GDP_MAN1PAGES) $(DESTDIR)$(man1dir)
110
111 install-gdr:    installdirs-gdr
112         $(INSTALL_PROGRAM) $(GDR_PROGRAMS) $(DESTDIR)$(bindir)
113         $(INSTALL_DATA) $(GDR_MAN1PAGES) $(DESTDIR)$(man1dir)
114         $(INSTALL_DATA) $(GDR_MAN5PAGES) $(DESTDIR)$(man5dir)
115         set -e; for m in $(GDR_PERLMODULES); do \
116                 $(INSTALL_DATA) $$m $(DESTDIR)$(perldir)/$${m%/*}; \
117         done
118
119 install-infra:  installdirs-infra
120         $(INSTALL_PROGRAM) $(addprefix infra/, $(INFRA_PROGRAMS)) \
121                 $(DESTDIR)$(bindir)
122         $(INSTALL_PROGRAM) $(addprefix infra/, $(INFRA_EXAMPLES)) \
123                 $(DESTDIR)$(infraexamplesdir)
124         set -e; for m in $(INFRA_PERLMODULES); do \
125                 $(INSTALL_DATA) $$m $(DESTDIR)$(perldir)/$${m%/*}; \
126         done
127
128 installdirs-gdp:
129         $(INSTALL_DIR) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir)
130
131 installdirs-gdr:
132         $(INSTALL_DIR) $(DESTDIR)$(bindir) \
133                 $(DESTDIR)$(man1dir) $(DESTDIR)$(man5dir) \
134                 $(addprefix $(DESTDIR)$(perldir)/, $(dir $(GDR_PERLMODULES)))
135
136 installdirs-infra:
137         $(INSTALL_DIR) $(DESTDIR)$(bindir) $(DESTDIR)$(infraexamplesdir) \
138                 $(addprefix $(DESTDIR)$(perldir)/, $(dir $(INFRA_PERLMODULES)))
139
140 list-manpages:
141         @echo $(MANPAGES)
142
143 i18n i18n-update:
144         $(MAKE) -C po update
145         $(MAKE) -C po4a update
146
147 i18n-commit:
148         set -e; x=$$(git status --porcelain); set -x; test "x$$x" = x
149         $(MAKE) i18n-update
150         git commit -a -m 'i18n-commit - autogenerated'
151
152 check installcheck:
153
154 clean distclean mostlyclean maintainer-clean:
155         rm -rf tests/tmp substituted
156         set -e; for m in $(MANPAGES); do \
157                 test -e $$m.pod && rm -f $$m; \
158         done
159
160 dgit%: dgit%.pod
161         m=$@; pod2man --section=$${m##*.} --date="Debian Project" \
162                 --center="dgit" --name=$${m%.*} \
163                 $^ $@
164
165 git-debrebase.%: git-debrebase.%.pod
166         pod2man --section=$* --date="Debian Project" --center="git-debrebase" \
167                 --name=$(subst .$*,,$@) \
168                 $^ $@
169
170 git-debpush.1: git-debpush.1.pod
171         pod2man --section=1 --date="Debian Project" --center="git-debpush" \
172                 --name git-debpush \
173                 $^ $@
174
175 %.view: %
176         man -l $*