#!/usr/bin/make -f
#
# This is free software; see the GNU General Public Licence
# version 2 or later for copying conditions.  There is NO warranty.

SHELL = /bin/bash

# FreeType sets its -Wall in XX_CFLAGS 
CFLAGS = -g

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0
else
	CFLAGS += -O2 -fno-strict-aliasing
endif

UPACKAGE = $(shell dh_listpackages | grep -- -udeb$$)
VERSION = $(shell dpkg-parsechangelog | grep ^Version: | cut -d ' ' -f 2)

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

# This has to be exported to make some magic below work.
export DH_OPTIONS

srcpkg = freetype2

# Remember to update the following for each release.
# ver := $(shell ( head -1 | sed -e 's/^.*(\(.\+\)-.*).*/\1/' ) < debian/changelog)
ver := 2.2.1
# Just in case the versions are different
freetype_ver := $(ver)
ftdocs_ver   := $(ver)
ft2demos_ver := $(ver)
dependency = $(libpkg) (>= 2.2)

freetype_u := freetype-$(freetype_ver)
ftdocs_u   := freetype-doc-$(ftdocs_ver)
ftdocs_d   := $(freetype_u)
ft2demos_u := ft2demos-$(ft2demos_ver)

libpkg := libfreetype6
devpkg := $(libpkg)-dev
docpkg := $(libpkg)-doc
demospkg := freetype2-demos
udebpkg := libfreetype6-udeb
docdir := usr/share/doc
patchdir := $(CURDIR)/debian/patches
freetype_config_man := $(CURDIR)/debian/freetype-config.man
freetype_config_sgml := $(CURDIR)/debian/freetype-config.man.sgml

# These files are general documentation and should go into the lib package.
libdoc = FTL.TXT CHANGES PATENTS TODO

TMP = $(CURDIR)/debian/tmp

unpack: unpack-stamp
unpack-stamp:
	# Unpack upstream tarballs
	@for i in $(freetype_u) $(ftdocs_u) $(ft2demos_u); do \
	    if [ -f $$i.tar.bz2 ]; then \
		echo "Unpacking $$i.tar.bz2 ..."; \
		tar -x --bzip2 -f $$i.tar.bz2; \
	    elif [ -f $$i.tar.gz ]; then \
		echo "Unpacking $$i.tar.gz ..."; \
		tar -x --gzip -f $$i.tar.gz; \
	    else \
		echo "Error!  $$i.tar.{bz2,gz} not found!"; \
		exit 1; \
	    fi \
	done
	touch unpack-stamp

patch: unpack patch-stamp
patch-stamp:
	cd $(freetype_u) \
	    && QUILT_PATCHES=../debian/patches-freetype quilt push -a
	cd $(ft2demos_u) \
	    && QUILT_PATCHES=../debian/patches-ft2demos quilt push -a
	touch patch-stamp

build: unpack patch build-stamp
build-stamp:
	dh_testdir
	cd $(freetype_u) && ./configure --prefix=/usr CFLAGS=\"$(CFLAGS)\"
#	cd $(freetype_u) && ./configure --prefix=/usr
	$(MAKE) -C $(freetype_u)

	$(MAKE) -C $(ft2demos_u) TOP_DIR=../$(freetype_u) \
		X11_PATH=/usr/X11R6 OBJ_DIR=../$(freetype_u)/objs


	docbook-to-man $(freetype_config_sgml) > $(freetype_config_man)

	touch build-stamp

clean:
	dh_testdir
	dh_testroot
	rm -f build-stamp unpack-stamp patch-stamp
	rm -f $(freetype_config_man)
	rm -rf $(freetype_u) $(ft2demos_u)
	dh_clean

install: DH_OPTIONS=
install: build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

	$(MAKE) -C $(freetype_u) DESTDIR=$(TMP) install

	dh_movefiles
	@if [ "`find debian/tmp ! -type d`" ]; then \
	    echo "Error!  Not all files are moved out of debian/tmp!"; \
	    echo "Please fix your debian/*.files."; \
	    exit 1; \
	fi

	dh_installdirs -p$(demospkg)/usr/bin
	$(freetype_u)/builds/unix/libtool --mode=install \
	    cp -av `find $(ft2demos_u)/bin -type f -perm -u=x -maxdepth 1` \
		$(CURDIR)/debian/$(demospkg)/usr/bin/

	cp -a $(freetype_u)/objs/.libs/*so.* $(CURDIR)/debian/$(udebpkg)/usr/lib

# Build architecture-independent files here.
# Pass -i to all debhelper commands in this target to reduce clutter.
binary-indep: DH_OPTIONS=-i
binary-indep:
# We have nothing to do by default.

# Build architecture-dependent files here.
# Pass -a to all debhelper commands in this target to reduce clutter.
binary-arch: DH_OPTIONS=-a
binary-arch: build $(libpkg) $(devpkg) $(demospkg) $(udebpkg)

$(libpkg): DH_OPTIONS=-p$(libpkg)
$(libpkg): build install
	dh_testdir
	dh_testroot
	dh_installdirs
	dh_installdocs $(addprefix $(freetype_u)/docs/,$(libdoc)) \
		$(ftdocs_d)/docs/ft2faq.html
	mkdir debian/$(libpkg)/$(docdir)/$(libpkg)/pcf
	cp -a $(freetype_u)/src/pcf/README debian/$(libpkg)/$(docdir)/$(libpkg)/pcf/
	dh_installexamples
#	dh_installmenu
#	dh_undocumented
	dh_installchangelogs -k $(freetype_u)/ChangeLog
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
	dh_strip
endif
	dh_link
	dh_compress
	dh_fixperms
	dh_makeshlibs -V '$(dependency)' --add-udeb '$(udebpkg)'
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

$(devpkg): DH_OPTIONS=-p$(devpkg)
$(devpkg): build install
	dh_testdir
	dh_testroot
	dh_installdirs $(docdir)/$(libpkg)
	ln -s $(libpkg) debian/$(devpkg)/$(docdir)/$(devpkg)
	dh_installdocs -Xreference/README -Xreference/.cvsignore \
		$(ftdocs_d)/docs/* $(freetype_u)/docs/*
	cd debian/$(devpkg)/usr/share/doc/$(devpkg)/ \
		&& rm -f $(libdoc) BUILD ft2faq.html
	dh_installman $(freetype_config_man)
#	dh_installexamples
#	dh_installchangelogs
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
	dh_strip
endif
	dh_link
	dh_compress
	dh_fixperms
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

$(demospkg): DH_OPTIONS=-p$(demospkg)
$(demospkg): build install
	dh_testdir
	dh_testroot
	dh_installdirs $(docdir)/$(libpkg)
	ln -s $(libpkg) debian/$(demospkg)/$(docdir)/$(demospkg)
#	dh_installdocs
#	dh_installexamples
#	dh_installmenu
#	dh_installmanpages
#	dh_undocumented
#	dh_installchangelogs
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
	dh_strip
endif
	dh_link
	dh_compress
	dh_fixperms
	dh_installdeb
	# To be safe, make ft2demos depend on the same version of libfreetype6
	dh_shlibdeps -l debian/$(libpkg)/usr/lib --dpkg-shlibdeps-params=-O \
		| sed -e 's/$(dependency)/$(libpkg) (= $(VERSION))/' \
		> debian/$(demospkg).substvars
	dh_gencontrol
	dh_md5sums
	dh_builddeb

$(udebpkg): DH_OPTIONS=-p$(udebpkg)
$(udebpkg): build install
	dh_testdir
	dh_testroot
	dh_installdirs
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
	dh_strip
endif
	dh_compress
	dh_fixperms
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_builddeb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary unpack patch \
	$(libpkg) $(devpkg) install
