#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
#export DH_OPTIONS=-v

TCLVERSIONS = 9.0 8.6

# Hardening
export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# Multiarch support
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

%:
	dh  $@

# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

# Extract version information from autoconf meta-data
VERSION=$(shell grep -m 1 AC_INIT configure.ac | sed -e 's/AC_INIT(\[tdom\],\[//g' -e 's/\])//g')

# Convenient vars
DEV=$(CURDIR)/debian/tdom-dev
ARCH_DEPENDENT=$(CURDIR)/debian/tdom/usr/lib/tcltk/$(DEB_HOST_MULTIARCH)
STUB_LIBDIR=/usr/lib/tcltk/$(DEB_HOST_MULTIARCH)/tdom$(VERSION)

override_dh_autoreconf:
	[ -f configure.backup ] || cp configure configure.backup
	dh_autoreconf

override_dh_auto_configure:
	for v in $(TCLVERSIONS) ; do \
		mkdir -p debian/$$v ; \
	done
	#
	# Configure tDOM"
	#
	for v in $(TCLVERSIONS) ; do \
		mkdir -p debian/$$v/unix ; \
		( cd debian/$$v/unix ; \
		  ../../../configure --host=$(DEB_HOST_GNU_TYPE) \
			--build=$(DEB_BUILD_GNU_TYPE) \
			--prefix=$(CURDIR)/debian/tdom/usr \
			--mandir=\$${prefix}/share/man \
			--infodir=\$${prefix}/share/info \
			--with-tcl=/usr/lib/$(DEB_HOST_MULTIARCH)/tcl$$v \
			--libdir=\$${prefix}/lib/tcltk/$(DEB_HOST_MULTIARCH) \
			--enable-threads \
			--includedir=$(DEV)/usr/include/tdom \
			--with-expat=/usr \
			--enable-html5 ) ; \
	done
	#
	# Configure tnc extension
	#
	for v in $(TCLVERSIONS) ; do \
		mkdir -p debian/$$v/extensions/tnc ; \
		( cd debian/$$v/extensions/tnc ; \
		  ../../../../extensions/tnc/configure \
			--host=$(DEB_HOST_GNU_TYPE) \
			--build=$(DEB_BUILD_GNU_TYPE) \
			--prefix=$(CURDIR)/debian/tdom/usr \
			--mandir=\$${prefix}/share/man \
			--infodir=\$${prefix}/share/info \
			--with-tcl=/usr/lib/$(DEB_HOST_MULTIARCH)/tcl$$v \
			--libdir=\$${prefix}/lib/tcltk/$(DEB_HOST_MULTIARCH) \
			--enable-threads \
			--includedir=$(DEV)/usr/include/tdom ) ; \
	done
	#
	# Configure tdomhtml extension
	#
	for v in $(TCLVERSIONS) ; do \
		mkdir -p debian/$$v/extensions/tdomhtml ; \
		( cd debian/$$v/extensions/tdomhtml ; \
		  ../../../../extensions/tdomhtml/configure \
			--host=$(DEB_HOST_GNU_TYPE) \
			--build=$(DEB_BUILD_GNU_TYPE) \
			--prefix=$(CURDIR)/debian/tdom/usr \
			--mandir=\$${prefix}/share/man \
			--infodir=\$${prefix}/share/info \
			--libdir=\$${prefix}/lib/tcltk/$(DEB_HOST_MULTIARCH) \
			--includedir=$(DEV)/usr/include/tdom ) ; \
	done

override_dh_auto_build:
	#
	# Build tDOM and extensions
	#
	for v in $(TCLVERSIONS) ; do \
		( cd debian/$$v/unix ; $(MAKE) ) ; \
	done
	for v in $(TCLVERSIONS) ; do \
		( cd debian/$$v/extensions/tnc ; $(MAKE) ) ; \
	done
	for v in $(TCLVERSIONS) ; do \
		( cd debian/$$v/extensions/tdomhtml ; $(MAKE) ) ; \
	done

override_dh_clean:
	#
	# Cleanup
	#
	for v in $(TCLVERSIONS) ; do \
	rm -rf debian/$$v ; \
	done
	[ ! -f configure.backup ] || mv configure.backup configure
	dh_clean config.log config.status config.cache config.guess config.sub

override_dh_auto_install:
	#
	# Install the package into debian/tdom.
	#
	for v in $(TCLVERSIONS) ; do \
		( cd debian/$$v/unix ; $(MAKE) install ) ; \
	done
	for v in $(TCLVERSIONS) ; do \
		( cd debian/$$v/extensions/tnc ; $(MAKE) install ) ; \
	done
	for v in $(TCLVERSIONS) ; do \
		( cd debian/$$v/extensions/tdomhtml ; $(MAKE) install) ; \
	done
	#
	# Remove >empty< man page for tdomhtml extension (note, there is no
	# --without-man target available)
	#
	rm -f $(CURDIR)/debian/tdom/usr/share/man/mann/tdomhtml.n
	#
	# Fix man pages (mann > man3)
	#
	mv $(CURDIR)/debian/tdom/usr/share/man/mann \
	$(CURDIR)/debian/tdom/usr/share/man/man3
	(cd $(CURDIR)/debian/tdom/usr/share/man/man3 && \
		for f in ./*; do \
			f2=$$(echo $$f | sed -e 's/\.n/\.3tcl/'); \
			cat $$f | sed -e 's/^\.TH \([^ ]\+\|"[^"]\+"\) \(3\|n\)/.TH \1 3tcl/' > $$f2; \
			rm $$f; \
		done)
	#
	# Move tdomConfig
	#
	install -d -m 755 $(DEV)$(STUB_LIBDIR)
	mv $(ARCH_DEPENDENT)/tdomConfig.sh $(DEV)$(STUB_LIBDIR)/
	#
	# Add stub lib paths to tdomConfig
	#
	perl -i -p \
		-e "s|^(TDOM_BUILD_STUB_LIB_SPEC)=.*$$|\1='-L$(STUB_LIBDIR) -ltdomstub$(VERSION)'|;" \
		-e "s|^(TDOM_BUILD_STUB_LIB_PATH)=.*$$|\1='$(STUB_LIBDIR)/libtdomstub$(VERSION).a'|;" \
		-e "s|^(TDOM_STUB_LIB_SPEC)=.*$$|\1='-L$(STUB_LIBDIR) -ltdomstub$(VERSION)'|;" \
		-e "s|^(TDOM_STUB_LIB_PATH)=.*$$|\1='$(STUB_LIBDIR)/libtdomstub$(VERSION).a'|;" \
		$(DEV)$(STUB_LIBDIR)/tdomConfig.sh
	#
	# Wrapper for tdomConfig on /usr/lib/$(DEB_HOST_MULTIARCH)
	#
	sed -i "s/TDOM_VERSION/$(VERSION)/" $(CURDIR)/debian/tdomConfig.sh
	install -d -m 755 $(DEV)/usr/lib/$(DEB_HOST_MULTIARCH)
	install $(CURDIR)/debian/tdomConfig.sh $(DEV)/usr/lib/$(DEB_HOST_MULTIARCH)/
	#
	# Move tDOM stub library
	#
	mv $(ARCH_DEPENDENT)/tdom$(VERSION)/*.a $(DEV)$(STUB_LIBDIR)/

override_dh_installchangelogs:
	dh_installchangelogs ChangeLog

override_dh_installdeb:
	dh_installdeb
	tcltk-depends

override_dh_auto_test:
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
	for v in $(TCLVERSIONS) ; do \
		( cd debian/$$v/unix ; $(MAKE) test) ; \
	done
endif
