#!/usr/bin/make -f

v = 5.45
vv = 5.45.4
TCLVERSIONS = 8.6 9.0
tclv = 8.6

DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
include /usr/share/dpkg/architecture.mk

%:
	dh ${@}

CFLAGS += -Wall -g -D_DEFAULT_SOURCE -D_POSIX_SOURCE -Wno-old-style-definition

LINKS = debian/expect.links debian/tcl-expect.links debian/tcl-expect-dev.links

debian/%.links: debian/%.links.in
	sed -e 's/@DEB_HOST_MULTIARCH@/$(DEB_HOST_MULTIARCH)/g' \
	    -e 's/@TCLV@/$(tclv)/g' \
	    -e 's/@V@/$(v)/g' \
	    -e 's/@VV@/$(vv)/g' $< > $@

override_dh_auto_clean:
	dh_auto_clean
	rm -f debian/*.links
	for v in $(TCLVERSIONS) ; do \
		rm -rf $(CURDIR)/debian/$$v ; \
	done
	rm -f *.a *.o
	rm -rf shared
	rm -f expect_cf.h tcldbgcf.h
	[ ! -f tclconfig/config.guess~ ] || mv -f tclconfig/config.guess~ tclconfig/config.guess
	[ ! -f tclconfig/config.sub~ ] || mv -f tclconfig/config.sub~ tclconfig/config.sub
	[ ! -f configure~ ] || mv -f configure~ configure

override_dh_auto_configure:
	dh_testdir
	cp -f configure configure~
	cp -fb /usr/share/misc/config.guess tclconfig/config.guess
	cp -fb /usr/share/misc/config.sub tclconfig/config.sub
	autoconf
	for v in $(TCLVERSIONS) ; do \
	    dh_auto_configure -B$(CURDIR)/debian/$$v \
				-- \
				--includedir=/usr/include/tcl$$v \
				--with-tcl=/usr/lib/$(DEB_HOST_MULTIARCH)/tcl$$v \
				--with-tk=/usr/lib/$(DEB_HOST_MULTIARCH)/tk$$v \
				--with-tclinclude=/usr/include/tcl$$v \
				--with-tkinclude=/usr/include/tcl$$v \
				--enable-shared \
				--enable-threads \
				--disable-rpath \
				CFLAGS="$(CFLAGS)" ; \
	done

override_dh_auto_build:
	for v in $(TCLVERSIONS) ; do \
	    if [ "$${v%.*}" = "8" ] ; then \
		$(MAKE) -C$(CURDIR)/debian/$$v SONAME=libexpect.so.$(v) ; \
	    else \
		$(MAKE) -C$(CURDIR)/debian/$$v SONAME=libtcl9expect.so.$(v) ; \
	    fi \
	done

override_dh_auto_install:
	for v in $(TCLVERSIONS) ; do \
	    $(MAKE) -C$(CURDIR)/debian/$$v DESTDIR=$(CURDIR)/debian/tmp install ; \
	    mv debian/tmp/usr/bin/expect debian/tmp/usr/bin/expect$$v ; \
	done
	# Remove the example which relies on defunct FTP host (see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1086569)
	rm debian/tmp/usr/bin/ftp-rfc
	# Rename expect scripts
	for SCRIPT in debian/tmp/usr/bin/* ; do \
	    if [ "$$(printf "%.6s" "$$(basename $$SCRIPT)")" != "expect" ] ; then \
		sed -e 's/^exec tclsh /exec tclsh$(tclv) /' $$SCRIPT >$$(dirname $$SCRIPT)/expect_$$(basename $$SCRIPT) ; \
		rm $$SCRIPT ; \
	    fi \
	done
	# Fix manpages
	for MANPAGE in debian/tmp/usr/share/man/man1/* ; do \
	    if [ "$$(basename $$MANPAGE)" != "expect.1" ] ; then \
		mv $$MANPAGE $$(dirname $$MANPAGE)/expect_$$(basename $$MANPAGE) ; \
	    fi \
	done
	cp debian/tmp/usr/share/man/man1/expect.1 debian/tmp/usr/share/man/man3/Expect.3tcl
	sed -i -e's:\.TH EXPECT 1:.TH EXPECT 3tcl:' debian/tmp/usr/share/man/man3/Expect.3tcl
	# Fix library name
	mv debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/expect$(vv)/libexpect$(vv).so \
		debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libexpect.so.$(vv)
	mv debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/expect$(vv)/libtcl9expect$(vv).so \
		debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libtcl9expect.so.$(vv)
	mkdir -p -m 755 debian/tmp/usr/lib/tcltk/$(DEB_HOST_MULTIARCH)
	mv debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/expect$(vv) debian/tmp/usr/lib/tcltk/$(DEB_HOST_MULTIARCH)
	ln -s ../../../$(DEB_HOST_MULTIARCH)/libexpect.so.$(vv) \
		debian/tmp/usr/lib/tcltk/$(DEB_HOST_MULTIARCH)/expect$(vv)/libexpect$(vv).so
	ln -s ../../../$(DEB_HOST_MULTIARCH)/libtcl9expect.so.$(vv) \
		debian/tmp/usr/lib/tcltk/$(DEB_HOST_MULTIARCH)/expect$(vv)/libtcl9expect$(vv).so
	# Fix permissions
	chmod 0644 debian/tmp/usr/lib/tcltk/$(DEB_HOST_MULTIARCH)/expect$(vv)/pkgIndex.tcl

override_dh_link: $(LINKS)
	dh_link

.PHONY: override_dh_auto_clean override_dh_auto_configure override_dh_auto_build \
	override_dh_auto_install
