chiark / gitweb /
Update copyright notices in many files
[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
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
48 TXTDOCS=README.dsc-import
49 PERLMODULES= \
50         Debian/Dgit.pm \
51         Debian/Dgit/ExitStatus.pm \
52         Debian/Dgit/I18n.pm
53 ABSURDITIES=git
54
55 GDR_PROGRAMS=git-debrebase
56 GDR_PERLMODULES= \
57         Debian/Dgit.pm \
58         Debian/Dgit/GDR.pm \
59         Debian/Dgit/ExitStatus.pm \
60         Debian/Dgit/I18n.pm
61 GDR_MAN1PAGES=git-debrebase.1
62 GDR_MAN5PAGES=git-debrebase.5
63
64 GDP_PROGRAMS=git-debpush
65 GDP_MAN1PAGES=git-debpush.1
66
67 INFRA_PROGRAMS=dgit-repos-server dgit-ssh-dispatch \
68         dgit-repos-policy-debian dgit-repos-admin-debian \
69         dgit-repos-policy-trusting dgit-mirror-rsync
70 INFRA_EXAMPLES=get-dm-txt ssh-wrap drs-cron-wrap get-suites
71 INFRA_PERLMODULES= \
72         Debian/Dgit.pm \
73         Debian/Dgit/Infra.pm \
74         Debian/Dgit/Policy/Debian.pm
75
76 MANPAGES=$(MAN1PAGES) $(MAN5PAGES) $(MAN7PAGES) \
77         $(GDR_MAN1PAGES) $(GDR_MAN5PAGES) \
78         $(GDP_MAN1PAGES)
79
80 all:    $(MANPAGES) $(addprefix substituted/,$(PROGRAMS))
81
82 substituted/%:  %
83         mkdir -p substituted
84         perl -pe 's{\bundef\b}{'\''$(absurddir)'\''} if m/###substituted###/' \
85                 <$< >$@
86
87 install:        installdirs all
88         $(INSTALL_PROGRAM) $(addprefix substituted/,$(PROGRAMS)) \
89                 $(DESTDIR)$(bindir)
90         $(INSTALL_PROGRAM) $(addprefix absurd/,$(ABSURDITIES)) \
91                 $(DESTDIR)$(absurddir)
92         $(INSTALL_DATA) $(MAN1PAGES) $(DESTDIR)$(man1dir)
93         $(INSTALL_DATA) $(MAN7PAGES) $(DESTDIR)$(man7dir)
94         $(INSTALL_DATA) $(TXTDOCS) $(DESTDIR)$(txtdocdir)
95         set -e; for m in $(PERLMODULES); do \
96                 $(INSTALL_DATA) $$m $(DESTDIR)$(perldir)/$${m%/*}; \
97         done
98
99 installdirs:
100         $(INSTALL_DIR) $(DESTDIR)$(bindir) \
101                 $(DESTDIR)$(man1dir) $(DESTDIR)$(man5dir) \
102                 $(DESTDIR)$(man7dir) \
103                 $(DESTDIR)$(txtdocdir) $(DESTDIR)$(absurddir) \
104                 $(addprefix $(DESTDIR)$(perldir)/, $(dir $(PERLMODULES)))
105
106 install-gdp:    installdirs-gdp
107         $(INSTALL_PROGRAM) $(GDP_PROGRAMS) $(DESTDIR)$(bindir)
108         $(INSTALL_DATA) $(GDP_MAN1PAGES) $(DESTDIR)$(man1dir)
109
110 install-gdr:    installdirs-gdr
111         $(INSTALL_PROGRAM) $(GDR_PROGRAMS) $(DESTDIR)$(bindir)
112         $(INSTALL_DATA) $(GDR_MAN1PAGES) $(DESTDIR)$(man1dir)
113         $(INSTALL_DATA) $(GDR_MAN5PAGES) $(DESTDIR)$(man5dir)
114         set -e; for m in $(GDR_PERLMODULES); do \
115                 $(INSTALL_DATA) $$m $(DESTDIR)$(perldir)/$${m%/*}; \
116         done
117
118 install-infra:  installdirs-infra
119         $(INSTALL_PROGRAM) $(addprefix infra/, $(INFRA_PROGRAMS)) \
120                 $(DESTDIR)$(bindir)
121         $(INSTALL_PROGRAM) $(addprefix infra/, $(INFRA_EXAMPLES)) \
122                 $(DESTDIR)$(infraexamplesdir)
123         set -e; for m in $(INFRA_PERLMODULES); do \
124                 $(INSTALL_DATA) $$m $(DESTDIR)$(perldir)/$${m%/*}; \
125         done
126
127 installdirs-gdp:
128         $(INSTALL_DIR) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir)
129
130 installdirs-gdr:
131         $(INSTALL_DIR) $(DESTDIR)$(bindir) \
132                 $(DESTDIR)$(man1dir) $(DESTDIR)$(man5dir) \
133                 $(addprefix $(DESTDIR)$(perldir)/, $(dir $(GDR_PERLMODULES)))
134
135 installdirs-infra:
136         $(INSTALL_DIR) $(DESTDIR)$(bindir) $(DESTDIR)$(infraexamplesdir) \
137                 $(addprefix $(DESTDIR)$(perldir)/, $(dir $(INFRA_PERLMODULES)))
138
139 list-manpages:
140         @echo $(MANPAGES)
141
142 i18n i18n-update:
143         $(MAKE) -C po update
144         $(MAKE) -C po4a update
145
146 i18n-commit:
147         set -e; x=$$(git status --porcelain); set -x; test "x$$x" = x
148         $(MAKE) i18n-update
149         git commit -a -m 'i18n-commit - autogenerated'
150
151 check installcheck:
152
153 clean distclean mostlyclean maintainer-clean:
154         rm -rf tests/tmp substituted
155         set -e; for m in $(MANPAGES); do \
156                 test -e $$m.pod && rm -f $$m; \
157         done
158
159 dgit%: dgit%.pod
160         m=$@; pod2man --section=$${m##*.} --date="Debian Project" \
161                 --center="dgit" --name=$${m%.*} \
162                 $^ $@
163
164 git-debrebase.%: git-debrebase.%.pod
165         pod2man --section=$* --date="Debian Project" --center="git-debrebase" \
166                 --name=$(subst .$*,,$@) \
167                 $^ $@
168
169 git-debpush.1: git-debpush.1.pod
170         pod2man --section=1 --date="Debian Project" --center="git-debpush" \
171                 --name git-debpush \
172                 $^ $@
173
174 %.view: %
175         man -l $*