#!/usr/bin/make -f
# debian/rules for the Debian GNU Libtool package.
# Copyright © 2003, 2004 Scott James Remnant <scott@netsplit.com>

# Uncomment this to turn on verbose mode. 
#export DH_VERBOSE=1

DEBIAN_VERSION=$(strip $(shell dpkg-parsechangelog | awk -F: '/^Version:/ {print $$NF}'))

# libltdl needs to conform to policy
CFLAGS = -Wall -g
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0
else
	CFLAGS += -O2
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
	INSTALL_PROGRAM += -s
endif

# Build libltdl the right way (tm)
DEB_HOST_ARCH      ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

make_check = no

# Takes too long
#ifeq (m68k, $(DEB_HOST_ARCH))
#	make_check = no
#endif

patch: patch-stamp
patch-stamp:
	QUILT_PATCHES=debian/patches quilt push -a || test $$? = 2
	touch patch-stamp

unpatch:
	QUILT_PATCHES=debian/patches quilt pop -a || test $$? = 2
	rm -rf patch-stamp debian/patched

clean: clean-patched unpatch
clean-patched:
	dh_testdir
	dh_testroot
	rm -f build-stamp config-stamp
	dh_clean

	[ ! -f Makefile ] || $(MAKE) -k distclean
	rm -f config.guess config.sub
	rm -f libltdl/config.guess libltdl/config.sub
	rm -f doc/*.html *.tar.gz
	rm -f doc/libtool.info
	rm -f config.cache config.log config.status
	rm -f */config.cache */config.log */config.status
	rm -f conftest* */conftest*
	rm -rf autom4te.cache */autom4te.cache
	rm -f mkinstalldirs
	rm -rf debian/libtool
	rm -f doc/stamp-vti
	rm -f doc/texinfo.tex
	rm -f doc/version.texi
	find . -name acinclude.m4 |xargs rm -f
	find . -name aclocal.m4 |xargs rm -f
	find . -name ltmain.sh |xargs rm -f
	find . -name configure |xargs rm -f
	find . -name libtool |xargs rm -f
	find . -name Makefile |xargs rm -f
	find . -name Makefile.in |xargs rm -f
	find . -name .in | xargs rm -f
# Undo the version change if there is any.
	sed -i -e 's/^# serial \([0-9]*\) .*AC_PROG_LIBTOOL/# serial \1 AC_PROG_LIBTOOL/' libtool.m4
	sed -i -e 's/^VERSION.*/VERSION=@VERSION@/' ltmain.in

config: config-stamp
Makefile: config-stamp
config-stamp: patch-stamp
	dh_testdir

#	These go into the libtool-doc `examples' directory.
#	Create them while we still have a clean source tree
	GZIP=--best tar zcf ./cdemo.tar.gz cdemo
	GZIP=--best tar zcf ./demo.tar.gz demo
	GZIP=--best tar zcf ./mdemo.tar.gz mdemo
	GZIP=--best tar zcf ./mdemo2.tar.gz mdemo2
	GZIP=--best tar zcf ./pdemo.tar.gz pdemo
	GZIP=--best tar zcf ./depdemo.tar.gz depdemo
	GZIP=--best tar zcf ./f77demo.tar.gz f77demo
	GZIP=--best tar zcf ./tagdemo.tar.gz tagdemo

	sed -i -e 's/^# serial \([0-9]*\) .*AC_PROG_LIBTOOL/# serial \1 Debian $(DEBIAN_VERSION) AC_PROG_LIBTOOL/' libtool.m4
	sed -i -e 's/^VERSION.*/VERSION="@VERSION@ Debian $(DEBIAN_VERSION)"/' ltmain.in
	./bootstrap
	./configure --prefix=/usr $(confflags) CFLAGS="$(CFLAGS)"
	touch config-stamp


build: build-stamp
build-stamp: config-stamp
	dh_testdir

#	Fix some permissions
	chmod a+x tests/mdemo2-*.test

	$(MAKE)

#	The system libtool script in Debian must be able to support
#	invoking gcc as cc
	echo '# ### BEGIN LIBTOOL TAG CONFIG: BINCC' >> libtool
	sed -n -e '/^# ### BEGIN LIBTOOL CONFIG/,/^# ### END LIBTOOL CONFIG/p' < libtool \
		| grep -B 2 -A 1 -e '^LTCC=' -e '^CC=' \
		| sed '/^--/d;s/gcc/cc/g' >> libtool
	echo '# ### END LIBTOOL TAG CONFIG: BINCC' >> libtool
	echo >> libtool

#	The system libtool script in Debian must be able to support
#	invoking g++ both by the g++ and c++ names.
	sed -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: CXX$$/,/^# ### END LIBTOOL TAG CONFIG: CXX$$/p' < libtool \
		| sed -e 's/CONFIG: CXX/CONFIG: BINCXX/g' \
		      -e 's/g++/c++/g' >> libtool
	echo >> libtool

#	Add our BINCC and BINCXX tags
	sed -e 's/^\(available_tags\)=\"\(.*\)\"/\1=\"\2 BINCC BINCXX\"/' \
		< libtool > libtool.tags
	mv libtool.tags libtool

#	Don't hardcode gcc path information, and don't use nostdlib
	sed -e 's/^\(predep_objects\)=.*/\1=""/' \
	    -e 's/^\(postdep_objects\)=.*/\1=""/' \
	    -e 's/^\(compiler_lib_search_path\)=.*/\1=""/' \
	    -e 's:^\(sys_lib_search_path_spec\)=.*:\1="/lib/ /usr/lib/ /usr/X11R6/lib/ /usr/local/lib/":' \
	    -e 's/^\(archive_cmds=\".*\) -nostdlib /\1 /' \
	    -e 's/^\(archive_expsym_cmds=\".*\) -nostdlib /\1 /' \
	    < libtool > libtool.gcc-indep
	mv libtool.gcc-indep libtool

#	Make libtool executable again
	chmod 755 libtool

#	This generated HTML page goes into libtool-doc.
	cd doc && makeinfo libtool.texi
	cd doc && texi2html -monolithic libtool.texi


ifeq ($(make_check), yes)
#	Now make sure it works
	$(MAKE) check
endif

	touch build-stamp

install: build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

	$(MAKE) prefix=`pwd`/debian/tmp/usr install

# Build architecture-independent files here.
binary-indep: build install
	dh_testdir -i
	dh_testroot -i

	dh_movefiles -i

	dh_installdocs -i
	dh_installinfo -plibtool-doc
	dh_installexamples -i
	dh_installchangelogs -i ChangeLog
	dh_link -i
	dh_compress -i
	dh_fixperms -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir -a
	dh_testroot -a

	dh_movefiles -a

	# Create symlinks to the one in autotools-dev
	ln -s ../misc/config.guess debian/libtool/usr/share/libtool
	ln -s ../misc/config.sub debian/libtool/usr/share/libtool

	# Create a symlink to the one in /usr/share/aclocal
	ln -s ../aclocal/libtool.m4 debian/libtool/usr/share/libtool

	dh_installdocs -plibtool
	dh_installdocs -plibltdl3
	mkdir -p debian/libltdl3-dev/usr/share/doc
	cd debian/libltdl3-dev/usr/share/doc && ln -sf libltdl3 libltdl3-dev
	dh_installman -plibtool debian/libtool.1 debian/libtoolize.1
	dh_installchangelogs -plibtool ChangeLog
	dh_installchangelogs -plibltdl3 ChangeLog
	dh_strip -a
	dh_link -a
	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -a -V 'libltdl3 (>= 1.5.2-2)'
	dh_installdeb -a
	dh_shlibdeps -a
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary: binary-indep binary-arch
.PHONY: build clean config patch unpatch binary-indep binary-arch binary install
