#!/usr/bin/make -f

v = 8.4
DIR = $(shell pwd)/debian/tmp

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

LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS)
export LDFLAGS

ifeq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
# See bug #446335
CFLAGS += -fno-unit-at-a-time
endif

%:
	dh $@

override_dh_auto_clean:
	[ ! -f unix/Makefile ] || $(MAKE) -C unix distclean

override_dh_auto_configure:
	# So so ugly but it works...
	touch generic/tclStubInit.c
	CC=$(DEB_HOST_GNU_TYPE)-gcc \
	ac_cv_func_strtod=yes \
	tcl_cv_strtod_buggy=1 \
	TCL_LIBRARY="/usr/share/tcltk/tcl$(v)" \
	TCL_PACKAGE_PATH="/usr/local/lib/tcltk /usr/local/share/tcltk /usr/lib/tcltk/$(DEB_HOST_MULTIARCH) /usr/lib/tcltk /usr/share/tcltk /usr/lib" \
	CFLAGS="$(CFLAGS)" \
	CPPFLAGS="$(CPPFLAGS)" \
	TCL_SHLIB_LD_EXTRAS="-Wl,-soname,\$${TCL_LIB_FILE}" \
	dh_auto_configure -Dunix -- \
			  --includedir=/usr/include/tcl$(v) \
			  --enable-shared \
			  --enable-threads \
			  --disable-rpath \
			  --enable-man-symlinks

override_dh_auto_build:
	# Another ugly part
	touch generic/tclStubInit.c && \
	$(MAKE) -C unix
	# Build the static library
	cd unix && \
	  ar cr libtcl$(v).a *.o && \
	  ar d libtcl$(v).a tclAppInit.o && \
	  ranlib libtcl$(v).a

override_dh_auto_install:
	$(MAKE) -C unix INSTALL_ROOT=$(DIR) \
			MAN_INSTALL_DIR=$(DIR)/usr/share/man \
			MANN_INSTALL_DIR=$(DIR)/usr/share/man/man3 \
		install
	# Fix up the libraries
	cp unix/libtcl$(v).a $(DIR)/usr/lib/$(DEB_HOST_MULTIARCH)
	install -d -m 755 $(DIR)/usr/lib/$(DEB_HOST_MULTIARCH)/tcl$(v)
	mv $(DIR)/usr/lib/$(DEB_HOST_MULTIARCH)/*.sh $(DIR)/usr/lib/$(DEB_HOST_MULTIARCH)/tcl$(v)
	install -d -m 755 $(DIR)/usr/share/aclocal
	cp unix/tcl.m4 $(DIR)/usr/share/aclocal/tcl$(v).m4
	rm -f $(DIR)/usr/share/tcltk/tcl$(v)/ldAix
	# Fix up the include files
	install -d $(DIR)/usr/include/tcl$(v)/tcl-private/generic
	cp generic/*.h $(DIR)/usr/include/tcl$(v)/tcl-private/generic
	install -d $(DIR)/usr/include/tcl$(v)/tcl-private/unix
	cp unix/*.h $(DIR)/usr/include/tcl$(v)/tcl-private/unix
	install -d $(DIR)/usr/include/tcl$(v)/tcl-private/compat
	cp compat/*.h $(DIR)/usr/include/tcl$(v)/tcl-private/compat
	#
	# Temporary HACK until all reverse dependencies will be rebuilt
	ln -sf libtcl$(v).so $(DIR)/usr/lib/$(DEB_HOST_MULTIARCH)/libtcl$(v).so.0
	#
	# Fix up the manpages
	cd $(DIR)/usr/share/man/man1 && \
	  sed -e 's/(n)/(3tcl)/g' tclsh.1 > tclsh$(v).1 && rm tclsh.1
	cd $(DIR)/usr/share/man/man3 && \
	  for f in *.[3n] ; do \
	     f2=$$(echo $$f | sed -e 's/\.[3n]/.3tcl/') ; \
	     if [ -L $$f ]; then \
		l=$$(readlink -n $$f |sed -e 's/\.[3n]/.3tcl/') ; \
		rm $$f ; \
		ln -sf $$l $$f2 ; \
	     else \
		sed -e 's/^\.TH \([^ ]\+\|"[^"]\+"\) [3n]/.TH \1 3tcl/' \
		    -e 's/\(Tk_[0-9A-Za-z]*\)(3)/\1(3tk)/g' \
		    -e 's/\([A-Z][0-9A-Za-z_]*\)(3)/\1(3tcl)/g' \
		    -e 's/send(n)/send(3tk)/g' \
		    -e 's/text(n)/text(3tk)/g' \
		    -e 's/tk(n)/tk(3tk)/g' \
		    -e 's/winfo(n)/winfo(3tk)/g' \
		    -e 's/(n)/(3tcl)/g' \
		    $$f >$$f2 ; \
		rm $$f ; \
	     fi ; \
	  done

override_dh_makeshlibs: /usr/share/debhelper/autoscripts/postinst-makeshlibs /usr/share/debhelper/autoscripts/postrm-makeshlibs
	dh_makeshlibs -a -Xtcltest
	cat /usr/share/debhelper/autoscripts/postinst-makeshlibs >>debian/libtcl$(v).postinst.debhelper
	cat /usr/share/debhelper/autoscripts/postrm-makeshlibs >>debian/libtcl$(v).postrm.debhelper

override_dh_shlibdeps:
	dh_shlibdeps -a -ldebian/libtcl$(v)/usr/lib/$(DEB_HOST_MULTIARCH)

get-orig-source:
	wget -O tcl$(v)_$(v).20.orig.tar.gz \
	     http://prdownloads.sourceforge.net/tcl/tcl$(v).20-src.tar.gz

.PHONY: override_dh_auto_clean override_dh_auto_configure override_dh_auto_install \
	override_dh_makeshlibs override_dh_shlibdeps get-orig-source
