#!/usr/bin/make -f

include /usr/share/dpkg/architecture.mk

derives_from_ubuntu := $(shell (dpkg-vendor --derives-from Ubuntu && echo "yes") || echo "no")
# Some cups-filters packages are in Ubuntu universe so only suggest them in dh_gencontrol
ifeq ($(derives_from_ubuntu),yes)
	SUBSTVARS = -Vcf:Suggests="lynx"
else
	SUBSTVARS = -Vcf:Recommends="lynx"
endif

export DEB_BUILD_MAINT_OPTIONS = hardening=+all

%:
	dh $@

override_dh_auto_configure:
	dh_auto_configure -- \
		--disable-silent-rules \
		--with-shell=/bin/sh \
		--libdir=/usr/lib/$(DEB_HOST_MULTIARCH) \
		--mandir=/usr/share/man \
		--enable-static \
		--enable-mutool \
		--with-mutool-path=/usr/bin/mutool \
		--disable-universal-cups-filter \
		--enable-individual-cups-filters

override_dh_auto_build:
	dh_auto_build
	# Build files for Braille printer driver in debian/local/braille
	# (Will be removed when Braille Printer Application is available)
	# Compile backend
	cd debian/local/braille/backend; \
	gcc -D_GNU_SOURCE -o cups-brf cups-brf.c; \
	cd ../../../..
	# Insert directory paths into scripts and build all *.defs files
	cd debian/local/braille; \
	CUPS_DATADIR=`cups-config --datadir`; \
	CUPS_SERVERBIN=`cups-config --serverbin`; \
	TABLESDIR=`pkg-config --variable=tablesdir liblouis`; \
	for f in `find driver filter -name \*.in`; do \
		sed -e "s:\@CUPS_DATADIR\@:$$CUPS_DATADIR:" \
		    -e "s:\@CUPS_SERVERBIN\@:$$CUPS_SERVERBIN:" \
		    -e "s:\@TABLESDIR\@:$$TABLESDIR:" \
		    < $$f > $${f%.*}; \
	done; \
	chmod +x filter/liblouis1.defs.gen; \
	./filter/liblouis1.defs.gen > filter/liblouis1.defs; \
	sed -e "s/Braille transcription/Additional Braille transcription (2)/" \
	    -e "s/^  \\*Choice /  Choice /" \
	    -e "s/^  Choice \"HyphLocale\//  *Choice \"HyphLocale\//" \
	    -e s/LibLouis/LibLouis2/ \
	    < filter/liblouis1.defs > filter/liblouis2.defs; \
	sed -e "s/Braille transcription/Additional Braille transcription (3)/" \
	    -e "s/^  \\*Choice /  Choice /" \
	    -e "s/^  Choice \"None\//  *Choice \"None\//" \
	    -e s/LibLouis/LibLouis3/ \
	    < filter/liblouis1.defs > filter/liblouis3.defs; \
	sed -e "s/Braille transcription/Additional Braille transcription (4)/" \
	    -e "s/^  \\*Choice /  Choice /" \
	    -e "s/^  Choice \"None\//  *Choice \"None\//" \
	    -e s/LibLouis/LibLouis4/ \
	    < filter/liblouis1.defs > filter/liblouis4.defs; \
	cd ../../..
	# No musicxml support, we do not have Freedots in Ubuntu
	cd debian/local/braille; \
	sed -e "s:\@MUSICXML_CONV\@::" \
	    < mime/braille.convs.in > mime/braille.convs; \
	sed -e "s:\@MUSICXML_TYPE\@::" \
	    < mime/braille.types.in > mime/braille.types; \
	cd ../../..

override_dh_installdocs:
	dh_installdocs -A AUTHORS README.md

override_dh_fixperms:
	dh_fixperms -Xusr/lib/cups/backend
	# Make the serial backend run as root, since /dev/ttyS* are
	# root:dialout and thus not accessible as user lp
	chmod 744 debian/cups-filters/usr/lib/cups/backend/serial

override_dh_makeshlibs:
	dh_makeshlibs -- -c4

override_dh_auto_clean:
	[ ! -r Makefile ] || make distclean
	# Remove files for Braille printer driver built in debian/local/braille
	# (Will be removed when Braille Printer Application is available)
	cd debian/local/braille; \
	rm -f backend/cups-brf; \
	for f in `find driver filter mime -name \*.in`; do \
		rm -f $${f%.*}; \
	done; \
	rm -f filter/liblouis[1234].defs; \
	cd ../../..

override_dh_install:
	dh_install
ifeq ($(derives_from_ubuntu),yes)
	#  - Install Apport hook
	#  - Replace standard test page template by Ubuntu-branded one
	install -D -m 644 debian/local/apport-hook.py debian/cups-filters/usr/share/apport/package-hooks/source_cups-filters.py
endif
# Known not-present: m68k hurd-i386 kfreebsd-{amd64,i386}
ifneq ($(filter $(DEB_HOST_ARCH),amd64 i386 mips64el mipsel alpha hppa ia64 sparc64),)
	# Install the modules loader for lp, ppdev and parport_pc, only on allow-listed architectures where these are known-present
	install -D -m 644 debian/local/modules-load.conf debian/cups-filters/etc/modules-load.d/cups-filters.conf
endif
	# Install files for Braille printer driver in debian/local/braille
	# (Will be removed when Braille Printer Application is available)
	install -D -m 755 debian/local/braille/backend/cups-brf \
		-t debian/cups-filters/usr/lib/cups/backend/
	for f in `find debian/local/braille/filter debian/local/braille/driver | grep '/[a-z0-9]*to[a-z0-9]*$$'`; do \
		install -D -m 755 $$f \
			-t debian/cups-filters/usr/lib/cups/filter/; \
	done
	cd debian/cups-filters/usr/lib/cups/filter/; \
	ln -sf imagetobrf imagetoubrl; \
	ln -sf vectortopdf svgtopdf; \
	ln -sf vectortopdf xfigtopdf; \
	ln -sf vectortopdf wmftopdf; \
	ln -sf vectortopdf emftopdf; \
	ln -sf vectortopdf cgmtopdf; \
	ln -sf vectortopdf cmxtopdf; \
	ln -sf vectortobrf vectortoubrl; \
	ln -sf textbrftoindexv3 textbrftoindexv4; \
	cd ../../../../../..
	for f in `find debian/local/braille/*/ -name \*.sh`; do \
		install -D -m 755 $$f \
			-t debian/cups-filters/usr/share/cups/braille/; \
	done
	for f in `find debian/local/braille -name \*.defs`; do \
		install -D -m 644 $$f \
			-t debian/cups-filters/usr/share/cups/ppdc/; \
	done
	install -D -m 644 debian/local/braille/driver/common/fr-braille.po \
		-t debian/cups-filters/usr/share/cups/ppdc/
	install -D -m 644 debian/local/braille/drv/*.drv \
		-t debian/cups-filters/usr/share/cups/drv/
	install -D -m 644 debian/local/braille/mime/*.convs \
		-t debian/cups-filters/usr/share/cups/mime/
	install -D -m 644 debian/local/braille/mime/*.types \
		-t debian/cups-filters/usr/share/cups/mime/
	install -D -m 644 debian/local/braille/README.md \
		debian/cups-filters/usr/share/doc/cups-filters/README-braille.md

# Some cups-filters packages are in Ubuntu universe so only suggest them there
override_dh_gencontrol:
	dh_gencontrol -- $(SUBSTVARS)

get-orig-source:
	set -ex; \
	dbranch=`git branch --show-current`; \
	gbp import-orig --pristine-tar --uscan --no-merge --upstream-branch=upstream/latest --upstream-tag="upstream/vcs-%(version)s"; \
	utag=`git describe --exact-match heads/upstream/latest | sed -e 's#^upstream/vcs-##'`; \
	ucommit=`git rev-parse --verify upstream/latest`; \
	git checkout -f upstream/latest-tarballs; \
	git merge -Xtheirs -m "Merge $$utag from upstream's VCS" upstream/vcs-$$utag; \
	tar --strip-components=1 -xavf ../cups-filters_$$utag.orig.tar.xz; \
	git add -A .; \
	git commit -m "$$utag tarball artifacts" || :; \
	git tag -s -m "$$utag tarball from upstream" upstream/$$utag; \
	git checkout $$dbranch; \
	git debrebase new-upstream $$utag upstream/$$utag; \
	git debrebase conclude
