#!/usr/bin/make -f

# Configure for cairo packages

# Supported backends (as of Cairo 1.1.10):
#  (internal) Image
#  xlib       Xlib
#  pdf        PDF
#  ps         PostScript
#  svg        SVG
#
# Experimental and unsupported backends:
#  directfb  DirectFB (requires Build-Depend on libdirectfb-dev (>=0.9.25) )
#  glitz     OpenGL (glitz)
#  xcb       XCB  (requires Build-Depend on at least libxcb1-dev)
#
# Other platform backends are auto disabled: quartz/OSX, win32/Win32
#
# Features:
# --enable-png  PNG (default enabled)
#
MAIN_CONFIGURE_FLAGS = \
--enable-xlib --enable-pdf --enable-ps --enable-svg \
--disable-glitz --disable-xcb --disable-directfb \
--enable-png

# udeb package flags
#  directfb  DirectFB (requires Build-Depend on libdirectfb-dev (>= 0.9.25) )
DIRECTFB_CONFIGURE_FLAGS = \
--enable-directfb \
--disable-xlib  --enable-pdf --enable-ps --disable-svg \
--disable-glitz --disable-xcb \
--enable-png \
--program-suffix=-directfb

DIRECTFB_PREFIX=/usr/lib/libcairo-directfb

SRC_DIR=$(CURDIR)
MAIN_BUILD_DIR=$(CURDIR)/debian/build-main
DIRECTFB_BUILD_DIR=$(CURDIR)/debian/build-directfb

MAIN_DIST_DIR=$(CURDIR)/debian/dist-main
DIRECTFB_DIST_DIR=$(CURDIR)/debian/dist-directfb


export DH_COMPAT=5

export DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

CFLAGS = -g
CFLAGS_UDEB = -g

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0
	CFLAGS_UDEB += -O0
else
	CFLAGS += -O2
	CFLAGS_UDEB += -Os
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
	INSTALL_PROGRAM += -s
endif

# For autoconf 2.13 only
CONFFLAGS=
ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
	CONFFLAGS += $(DEB_HOST_GNU_TYPE)
else
	CONFFLAGS += --host $(DEB_BUILD_GNU_TYPE) --build $(DEB_HOST_GNU_TYPE)
endif

package := tmp
destdir := $(PWD)/debian/$(package)
prefix  := /usr
share   := $(prefix)/share

version := $(shell dpkg-parsechangelog | \
		sed -ne 's/^Version: *\([0-9]\+:\)*//p')

include /usr/share/dpatch/dpatch.make

configure: configure-main

configure-common-stamp: patch-stamp
	dh_testdir

# handle timestamp skew; advice from autotools-dev README.Debian
	touch configure.in && \
	touch aclocal.m4 && \
	touch configure

	touch $@

# Calling GNU configure properly; advice from autotools-dev README.Debian
configure-main: configure-common-stamp configure-main-stamp
configure-main-stamp: configure-common-stamp
	dh_testdir
	mkdir -p $(MAIN_BUILD_DIR); \
	cd $(MAIN_BUILD_DIR); \
	$(SRC_DIR)/configure \
		CFLAGS="$(CFLAGS)" \
		$(CONFFLAGS) \
		--prefix=$(prefix) \
		--mandir=$(share)/man \
		--infodir=$(share)/info \
		$(MAIN_CONFIGURE_FLAGS)
	touch $@

configure-udeb: configure-common-stamp configure-udeb-stamp
configure-udeb-stamp: configure-common-stamp
	dh_testdir
	mkdir -p $(DIRECTFB_BUILD_DIR); \
	cd $(DIRECTFB_BUILD_DIR); \
	$(SRC_DIR)/configure \
		CFLAGS="$(CFLAGS_UDEB)" \
		$(CONFFLAGS) \
		--prefix=$(DIRECTFB_PREFIX) \
		--mandir=$(share)/man \
		--infodir=$(share)/info \
		$(DIRECTFB_CONFIGURE_FLAGS)
	touch $@


build: build-main build-udeb

build-main: build-main-stamp
build-main-stamp: configure-main-stamp
	dh_testdir
	cd $(MAIN_BUILD_DIR) && $(MAKE)
	touch build-stamp

build-udeb: build-udeb-stamp
build-udeb-stamp: configure-udeb-stamp
	dh_testdir
	cd $(DIRECTFB_BUILD_DIR) && $(MAKE)
	touch build-stamp

clean: unpatch
	dh_testdir
	dh_testroot
	rm -f *-stamp libtool
	rm -rf debian/libcairo2 debian/libcairo2-dev debian/libcairo2-doc libcairo-directfb2-udeb debian/libcairo-directfb2-udeb-dev debian/libcairo-directfb2
	rm -rf $(MAIN_BUILD_DIR) $(DIRECTFB_BUILD_DIR) $(MAIN_DIST_DIR) $(DIRECTFB_DIST_DIR)
	rm -f debian/cairo-directfb.pc

	-rm -f config.h config.cache config.status config.log

# Copy in fresh copies of config.{sub,guess}
# (these are from autotools-dev, so must Build-Depend on it)
	-test -r /usr/share/misc/config.sub && \
	  cp -f /usr/share/misc/config.sub config.sub
	-test -r /usr/share/misc/config.guess && \
	  cp -f /usr/share/misc/config.guess config.guess

	dh_clean


install: build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

	cd $(MAIN_BUILD_DIR) && $(MAKE) install DESTDIR=$(MAIN_DIST_DIR)

	cd $(DIRECTFB_BUILD_DIR) && $(MAKE) install DESTDIR=$(DIRECTFB_DIST_DIR)

	mkdir -p $(DIRECTFB_DIST_DIR)/usr/lib/pkgconfig
	sed -e 's/Name: cairo/Name: cairo-directfb/' -e 's/^\(Libs: .*\)$$/\1 -Wl,-rpath,$${libdir}/' $(DIRECTFB_DIST_DIR)/$(DIRECTFB_PREFIX)/lib/pkgconfig/cairo.pc > $(DIRECTFB_DIST_DIR)/usr/lib/pkgconfig/cairo-directfb.pc

	sed -i 's:/usr/lib/lib\([^ ]*\).la:-l\1:g' $(MAIN_DIST_DIR)/usr/lib/*.la
	sed -i 's:/usr/lib/lib\([^ ]*\).la:-l\1:g' $(DIRECTFB_DIST_DIR)/usr/lib/libcairo-directfb/lib/*.la

# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

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

	dh_install
	dh_installdocs -A TODO README NEWS AUTHORS
	dh_installchangelogs ChangeLog
	dh_installman
	dh_installexamples
	dh_link
	dh_strip
	dh_compress
	dh_fixperms
	dh_makeshlibs -plibcairo2 -V 'libcairo2 (>=1.4.0)' --add-udeb 'libcairo-directfb2-udeb'
	dh_makeshlibs -plibcairo-directfb2 -V 'libcairo2 (>=1.4.0)' --add-udeb 'libcairo-directfb2-udeb'
	dh_installdeb
	dh_shlibdeps
	dh_perl
	dh_gencontrol
	dh_md5sums
	dh_builddeb

binary: binary-indep binary-arch

.PHONY: build clean binary-indep binary-arch binary install configure \
	patch unpatch clean1
