chiark / gitweb /
git-debrebase: capture breakwater tip
[dgit.git] / Makefile
index 7c5994e3a66811aaa25648e941e1d95e5e8065bb..d2a91d83f423f370bff03da2191a240767d6d5a5 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 # dgit
 # Integration between git and Debian-style archives
 #
-# Copyright (C)2013-2015 Ian Jackson
+# Copyright (C)2013-2016 Ian Jackson
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,33 +25,85 @@ prefix?=/usr/local
 
 bindir=$(prefix)/bin
 mandir=$(prefix)/share/man
+perldir=$(prefix)/share/perl5
 man1dir=$(mandir)/man1
+man7dir=$(mandir)/man7
 infraexamplesdir=$(prefix)/share/doc/dgit-infrastructure/examples
+txtdocdir=$(prefix)/share/doc/dgit
+absurddir=$(prefix)/share/dgit/absurd
 
-PROGRAMS=dgit
+PROGRAMS=dgit dgit-badcommit-fixup
 MAN1PAGES=dgit.1
 
-INFRA_PROGRAMS=dgit-repos-server dgit-ssh-dispatch
-INFRA_EXAMPLES=get-dm-txt ssh-wrap
+MAN7PAGES=dgit.7                               \
+       dgit-user.7 dgit-nmu-simple.7           \
+       dgit-maint-native.7                     \
+       dgit-maint-merge.7 dgit-maint-gbp.7     \
+       dgit-sponsorship.7
 
-all:
+TXTDOCS=README.dsc-import
+PERLMODULES=Debian/Dgit.pm
+ABSURDITIES=git
 
-install:       installdirs
-       $(INSTALL_PROGRAM) $(PROGRAMS) $(DESTDIR)$(bindir)
+INFRA_PROGRAMS=dgit-repos-server dgit-ssh-dispatch \
+       dgit-repos-policy-debian dgit-repos-admin-debian \
+       dgit-repos-policy-trusting dgit-mirror-rsync
+INFRA_EXAMPLES=get-dm-txt ssh-wrap drs-cron-wrap get-suites
+INFRA_PERLMODULES= \
+       Debian/Dgit.pm \
+       Debian/Dgit/Infra.pm \
+       Debian/Dgit/Policy/Debian.pm
+
+all:   $(MAN7PAGES) $(addprefix substituted/,$(PROGRAMS))
+
+substituted/%: %
+       mkdir -p substituted
+       perl -pe 's{\bundef\b}{'\''$(absurddir)'\''} if m/###substituted###/' \
+               <$< >$@
+
+install:       installdirs all
+       $(INSTALL_PROGRAM) $(addprefix substituted/,$(PROGRAMS)) \
+               $(DESTDIR)$(bindir)
+       $(INSTALL_PROGRAM) $(addprefix absurd/,$(ABSURDITIES)) \
+               $(DESTDIR)$(absurddir)
        $(INSTALL_DATA) $(MAN1PAGES) $(DESTDIR)$(man1dir)
+       $(INSTALL_DATA) $(MAN7PAGES) $(DESTDIR)$(man7dir)
+       $(INSTALL_DATA) $(TXTDOCS) $(DESTDIR)$(txtdocdir)
+       set -e; for m in $(PERLMODULES); do \
+               $(INSTALL_DATA) $$m $(DESTDIR)$(perldir)/$${m%/*}; \
+       done
 
 installdirs:
-       $(INSTALL_DIR) $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir)
+       $(INSTALL_DIR) $(DESTDIR)$(bindir) \
+               $(DESTDIR)$(man1dir) $(DESTDIR)$(man7dir) \
+               $(DESTDIR)$(txtdocdir) $(DESTDIR)$(absurddir) \
+               $(addprefix $(DESTDIR)$(perldir)/, $(dir $(PERLMODULES)))
 
 install-infra: installdirs-infra
        $(INSTALL_PROGRAM) $(addprefix infra/, $(INFRA_PROGRAMS)) \
                $(DESTDIR)$(bindir)
        $(INSTALL_PROGRAM) $(addprefix infra/, $(INFRA_EXAMPLES)) \
                $(DESTDIR)$(infraexamplesdir)
+       set -e; for m in $(INFRA_PERLMODULES); do \
+               $(INSTALL_DATA) $$m $(DESTDIR)$(perldir)/$${m%/*}; \
+       done
 
 installdirs-infra:
-       $(INSTALL_DIR) $(DESTDIR)$(bindir) $(DESTDIR)$(infraexamplesdir)
+       $(INSTALL_DIR) $(DESTDIR)$(bindir) $(DESTDIR)$(infraexamplesdir) \
+               $(addprefix $(DESTDIR)$(perldir)/, $(dir $(INFRA_PERLMODULES)))
 
 check installcheck:
 
 clean distclean mostlyclean maintainer-clean:
+       rm -rf tests/tmp substituted
+       set -e; for m in $(MAN7PAGES); do \
+               test -e $$m.pod && rm -f $$m; \
+       done
+
+%.7: %.7.pod
+       pod2man --section=7 --date="Debian Project" --center="dgit" \
+               --name=$(subst .7,,$@) \
+               $^ $@
+
+%.view:        %
+       man -l $*