#!/usr/bin/make -f

TOPDIR = $(shell pwd)
KBD = $(TOPDIR)/debian/kbd
KBD_DOC = $(KBD)/usr/share/doc/kbd
KBD_UDEB = $(TOPDIR)/debian/kbd-udeb

# backup these files before the build process so clean can restore the
# original tarball accurately
RETAIN = src/loadkeys.c src/analyze.c \
	 man/man1/dumpkeys.1 man/man1/loadkeys.1 \
	 man/man8/loadunimap.8 man/man8/mapscrn.8 man/man8/setfont.8

# build these twice, once optimized for size (for kbd-udeb)
UDEB_BINARIES = loadkeys setfont

# non-standard binaries to build
EXTRA_BINARIES = screendump setvesablank setvtrgb
CONTRIB_BINARIES = codepage splitfont vcstime

# we don’t want these in /usr/bin
MOVE_TO_BIN = setfont fgconsole dumpkeys unicode_start loadkeys
MOVE_TO_SBIN = kbdrate setvtrgb
MOVE_TO_USR_SBIN = vcstime setvesablank

%:
	dh $@

override_dh_auto_clean:
	dh_auto_clean
	[ ! -f Makefile ] || $(MAKE) clean
	cd src/ && rm -f $(EXTRA_BINARIES) *-udeb
	cd contrib/ && rm -f $(CONTRIB_BINARIES)
	for ITEM in $(RETAIN); do [ ! -f $$ITEM.keep ] || mv $$ITEM.keep $$ITEM; done
	rm -f po/gr.po			# replaced by el.po

override_dh_auto_configure:
	for ITEM in $(RETAIN); do cp $$ITEM $$ITEM.keep; done
	./configure --prefix=/usr --datadir=/usr/share --mandir=/usr/share/man --enable-nls

override_dh_auto_build:
	cd src/ && flex -o analyze.c analyze.l && sed -i 's/void yy_fatal_error/void attr_noreturn yy_fatal_error/' analyze.c
	rm -f src/loadkeys.c
	$(MAKE) -C src/ CFLAGS="-Os -g" $(UDEB_BINARIES)
	cd src/ && for ITEM in $(UDEB_BINARIES); do mv $$ITEM $$ITEM-udeb; done
	$(MAKE) -C src/ clean
	$(MAKE)
	$(MAKE) -C src/ $(EXTRA_BINARIES)
	$(MAKE) CFLAGS="-O2 -g" -C contrib/ $(CONTRIB_BINARIES)

override_dh_auto_install:
# the kbd “core”
	$(MAKE) DESTDIR=$(KBD) install-exec
	$(MAKE) DESTDIR=$(KBD) -C po/ install
	$(MAKE) DESTDIR=$(KBD) -C man/ install
# some additional utilities
	install -m755 $(addprefix src/,$(EXTRA_BINARIES)) $(KBD)/usr/bin/
	install -m755 $(addprefix contrib/,$(CONTRIB_BINARIES)) $(KBD)/usr/bin/
	install -m755 data/keymaps/i386/mk_modmap $(KBD)/usr/bin
# move everything where it belongs
	mv $(addprefix debian/kbd/usr/bin/,$(MOVE_TO_BIN)) $(KBD)/bin/
	mv $(addprefix debian/kbd/usr/bin/,$(MOVE_TO_SBIN)) $(KBD)/sbin/
	mv $(addprefix debian/kbd/usr/bin/,$(MOVE_TO_USR_SBIN)) $(KBD)/usr/sbin/
# remove maemo files
	rm -f $(KBD)/usr/bin/setkeycodes
	rm -f $(KBD)/usr/bin/deallocvt
	rm -f $(KBD)/usr/bin/kbd_mode
	rm -f $(KBD)/usr/bin/openvt
	rm -f $(KBD)/usr/bin/chvt
# configuration files
	install -m644 debian/conffiles.d/* $(KBD)/etc/kbd/
# initramfs
	install -m 755 debian/kbd.initramfs-hook $(KBD)/usr/share/initramfs-tools/hooks/kbd
# prepare udeb
	for ITEM in $(UDEB_BINARIES); do install -m755 src/$$ITEM-udeb $(KBD_UDEB)/bin/$$ITEM; done
# and the rest
	dh install --after dh_install

binary-indep:
# Nothing to be done

binary-arch: install
	dh binary-arch --until dh_installdocs
# remove the docs shipped in doc-linux-{text,html}
	rm -f $(KBD)/usr/share/doc/kbd/kbd.FAQ*
	dh binary-arch --after dh_installdocs

override_dh_installinit:
	dh_installinit -r -u"start 48 S ."

override_dh_installdocs:
	dh_installdocs
	install -d $(KBD_DOC)/charsets
	cp doc/iso8859.info doc/iso*.txt doc/cp*.txt $(KBD_DOC)/charsets

TOPGIT_PATCHES = \
	fixes/kbd_mode fixes/manpages fixes/openvt_error_handling \
	fixes/unicode_start_breaks_X fixes/compose_as_usual

tg-export:
	rm -rf debian/patches
	tg export -b "`echo $(TOPGIT_PATCHES) | tr ' ' ','`" --quilt debian/patches
