PERL ?= perl PO4A ?= po4a POD2MAN ?= pod2man # List of files of dh_* commands. Sorted for debhelper man page. COMMANDS=$(shell find . -maxdepth 1 -type f -perm /100 -name "dh_*" -printf "%f\n" | grep -v '~$$' | LC_ALL=C sort) MANPAGES=$(COMMANDS:=.1) dh.1 # Find deprecated commands by looking at their synopsis. DEPRECATED=$(shell egrep -l '^dh_.* - .*deprecated' $(COMMANDS)) ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) TEST_JOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) else TEST_JOBS = 1 endif # Figure out the `current debhelper version. VERSION=$(shell dpkg-parsechangelog -SVersion) # This generates a list of synopses of debhelper commands, and substitutes # it in to the #LIST# line on the man page fed to it on stdin. Must be passed # parameters of all the executables or pod files to get the synopses from. # For correct conversion of pod tags (like S< >) #LIST# must be substituted in # the pod file and not in the troff file. MAKEMANLIST=$(PERL) -e ' \ undef $$/; \ foreach (@ARGV) { \ open (IN, $$_) or die "$$_: $$!"; \ $$file=; \ close IN; \ if ($$file=~m/=head1 .*?\n\n(.*?) - (.*?)\n\n/s) { \ my $$item="=item $$1(1)\n\n$$2\n\n"; \ if (" $(DEPRECATED) " !~ / $$1 /) { \ $$list.=$$item; \ } \ else { \ $$list_deprecated.=$$item; \ } \ } \ } \ END { \ my $$recommended_compat = q{$(VERSION)}; \ $$recommended_compat =~ s{^\d+\K(?:\D.*|\..*)?}{}; \ while () { \ s/\#LIST\#/$$list/g; \ s/\#LIST_DEPRECATED\#/$$list_deprecated/g; \ s/\#RECOMMENDED_COMPAT\#/$$recommended_compat/g; \ print; \ }; \ }' PERLLIBDIR=$(shell $(PERL) -MConfig -e 'print $$Config{vendorlib}')/Debian/Debhelper PREFIX=/usr POD2MAN_FLAGS=--utf8 -c Debhelper -r "$(VERSION)" ifneq ($(USE_NLS),no) # l10n to be built is determined from .po files LANGS?=$(notdir $(basename $(wildcard man/po4a/po/*.po))) LANG_TARGETS = $(foreach L,$(LANGS),translated-$(L)-stamp) else LANGS= LANG_TARGETS = endif build: $(LANG_TARGETS) version debhelper.7 debhelper-obsolete-compat.7 $(MANPAGES) po4a-stamp: $(PO4A) --previous -L UTF-8 man/po4a/po4a.cfg touch $@ translated-%-stamp: po4a-stamp set -e; \ lang=$* ; \ dir=man/$$lang; \ for file in $$dir/dh*.pod; do \ prog=`basename $$file | sed 's/.pod//'`; \ $(POD2MAN) $(POD2MAN_FLAGS) $$file $$prog.$$lang.1; \ done; \ if [ -e $$dir/debhelper.pod ]; then \ cat $$dir/debhelper.pod | \ $(MAKEMANLIST) `find $$dir -type f -maxdepth 1 -name "dh_*.pod" | LC_ALL=C sort` | \ $(POD2MAN) $(POD2MAN_FLAGS) --name="debhelper" --section=7 > debhelper.$$lang.7; \ fi; \ if [ -e $$dir/debhelper-obsolete-compat.pod ]; then \ $(POD2MAN) $(POD2MAN_FLAGS) --name="debhelper" --section=7 $$dir/debhelper-obsolete-compat.pod > debhelper-obsolete-compat.$$lang.7; \ fi touch $@ version: printf "package Debian::Debhelper::Dh_Version;\n\$$version='$(VERSION)';\n1" > \ lib/Debian/Debhelper/Dh_Version.pm dh_%.1: dh_% $(POD2MAN) $(POD2MAN_FLAGS) $^ $@ dh.1: dh $(POD2MAN) $(POD2MAN_FLAGS) $^ $@ debhelper.7: debhelper.pod cat debhelper.pod | \ $(MAKEMANLIST) $(COMMANDS) | \ $(POD2MAN) $(POD2MAN_FLAGS) --name="debhelper" --section=7 > $@ debhelper-obsolete-compat.7: debhelper-obsolete-compat.pod $(POD2MAN) $(POD2MAN_FLAGS) --name="debhelper" --section=7 $^ > $@ clean: rm -f *-stamp *.1 *.7 lib/Debian/Debhelper/Dh_Version.pm ifneq ($(USE_NLS),no) $(PO4A) --previous --rm-translations --rm-backups man/po4a/po4a.cfg endif for lang in $(LANGS); do \ if [ -e man/$$lang ]; then rmdir man/$$lang; fi; \ done; install: install -d $(DESTDIR)$(PREFIX)/bin \ $(DESTDIR)$(PREFIX)/share/debhelper/autoscripts \ $(DESTDIR)$(PERLLIBDIR)/Sequence \ $(DESTDIR)$(PERLLIBDIR)/Buildsystem install dh $(COMMANDS) $(DESTDIR)$(PREFIX)/bin install -m 0644 autoscripts/* $(DESTDIR)$(PREFIX)/share/debhelper/autoscripts install -m 0644 lib/Debian/Debhelper/*.pm $(DESTDIR)$(PERLLIBDIR) [ "$(PREFIX)" = /usr ] || \ sed -i '/$$prefix=/s@/usr@$(PREFIX)@g' $(DESTDIR)$(PERLLIBDIR)/Dh_Lib.pm install -m 0644 lib/Debian/Debhelper/Sequence/*.pm $(DESTDIR)$(PERLLIBDIR)/Sequence install -m 0644 lib/Debian/Debhelper/Buildsystem/*.pm $(DESTDIR)$(PERLLIBDIR)/Buildsystem test: version MAKEFLAGS= HARNESS_OPTIONS=j$(TEST_JOBS) ./run perl -MTest::Harness -e 'runtests grep { ! /CVS/ && ! /\.svn/ && -f && -x && m/\.t$$/ } @ARGV' t/* t/*/*