#!/usr/bin/make -f

DEB_BUILDDIR = debian/build
DEB_MAKE_DESTDIRSKEL = $(CURDIR)/debian/install/@FLAVOR@
DEB_MAKE_FLAVORS = shared static udeb
DISABLE_UPDATE_UPLOADERS = 1

include /usr/share/cdbs/1/rules/autoreconf.mk
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/rules/utils.mk
include /usr/share/cdbs/1/class/gnome.mk
include /usr/share/gnome-pkg-tools/1/rules/uploaders.mk
include /usr/share/gnome-pkg-tools/1/rules/gnome-get-source.mk

GNOME_MODULE := pango

# Enable parallel build support
DEB_BUILD_PARALLEL = 1

# Ensure the build aborts when there are still references to undefined symbols
LDFLAGS += -Wl,-z,defs

# Make the linker work a bit harder so dynamic loading can be done faster
LDFLAGS += -Wl,-O1

APIVER := 1.0
SONAME := 0
MODVER := 1.8.0

# relative libdir
LIBDIR := usr/lib/$(DEB_HOST_MULTIARCH)
LIBDIR_UDEB := $(LIBDIR)

# relative Pango Modules Path (separated by ":")
MODULES_PATH := $(LIBDIR)/pango/$(MODVER)/modules
MODULES_PATH_UDEB := $(LIBDIR_UDEB)/pango/$(MODVER)/modules

# relative directory to store the generated Pango Module File
MODULE_FILES_D := $(LIBDIR)/pango/$(MODVER)/module-files.d

# Pango Module API version virtual Provide
PANGO_MODVER_DEP := pango$(APIVER)-multiarch-modver-$(MODVER)

# package names
SHARED_PKG := libpango-$(APIVER)-$(SONAME)
UDEB_PKG := libpango$(APIVER)-udeb
DEV_PKG := libpango$(APIVER)-dev
DEBUG_PKG := libpango$(APIVER)-$(SONAME)-dbg
DOC_PKG := libpango$(APIVER)-doc

DEB_CONFIGURE_EXTRA_FLAGS = \
		--with-html-dir=\$${prefix}/share/doc/$(DOC_PKG)

DEB_CONFIGURE_FLAGS_shared = \
		--libdir=/$(LIBDIR) \
		--with-included-modules \
		--enable-installed-tests

DEB_CONFIGURE_FLAGS_static = \
		--libdir=/$(LIBDIR) \
		--disable-shared \
		--with-included-modules \
		--enable-static

DEB_CONFIGURE_FLAGS_udeb = \
		--libdir=/$(LIBDIR_UDEB) \
		--disable-debug

# Get failing tests' stdout/err so we have some information when a build fails
export VERBOSE=1

DEB_MAKE_CHECK_TARGET = check
DEB_DH_STRIP_ARGS_DEFAULT = --dbg-package=libpango$(APIVER)-$(SONAME)-dbg
DEB_DH_STRIP_ARGS_$(UDEB_PKG) =
DEB_DH_MAKESHLIBS_ARGS_ALL += -X$(MODULES_PATH) \
		-V --add-udeb=$(UDEB_PKG) -- -c4

# macro computing the list of 'debian/<pkg>.*" files which have a corresponding
# ".in" file; pass the list of packages in $(1)
dh_subst_files = $(patsubst %.in,%,$(wildcard $(addprefix debian/, $(addsuffix *.in, $(1)))))

debian/dh_pangomodules.1: debian/dh_pangomodules
	cd debian && pod2man -c "Pango" -r "$(DEB_VERSION)" dh_pangomodules dh_pangomodules.1

debian/%: debian/%.in
	dh_testdir
	sed \
		-e 's#@SONAME@#$(SONAME)#g' \
		-e 's#@APIVER@#$(APIVER)#g' \
		-e 's#@VERSION@#$(DEB_UPSTREAM_VERSION)#g' \
		-e 's#@PANGO_MODVER_DEP@#$(PANGO_MODVER_DEP)#g' \
		-e 's#@LIBDIR@#$(LIBDIR)#g' \
		-e 's#@LIBDIR_UDEB@#$(LIBDIR_UDEB)#g' \
		-e 's#@MODULES_PATH@#$(MODULES_PATH)#g' \
		-e 's#@MODULES_PATH_UDEB@#$(MODULES_PATH_UDEB)#g' \
		-e 's#@MODULE_FILES_D@#$(MODULE_FILES_D)#g' \
		-e 's#@GNOME_TEAM@#$(UPLOADERS)#g' \
		$@.in >$@

clean:: debian/control
	# gross kludge to force control generation with the %.in target
	touch debian/control.in
	# remove generated files
	rm -f $(call dh_subst_files,$(DEB_ALL_PACKAGES))
	rm -f debian/dh_pangomodules debian/dh_pangomodules.1
	rm -rf $(DEB_BUILDDIR) debian/install

build-indep: $(call dh_subst_files,$(DEB_INDEP_PACKAGES))
build-arch: $(call dh_subst_files,$(DEB_ARCH_PACKAGES)) debian/dh_pangomodules.1

common-build-arch::
	# hack to fix missing enumeration GTypes in GIR
	cd debian/build/shared/pango/ && rm pango-enum-types.* *.gir *.typelib && make

binary-install/$(DEV_PKG)::
	# verify that the .gir is built correctly
	grep -q 'glib:get-type="pango_wrap_mode_get_type"' debian/$(DEV_PKG)/usr/share/gir-1.0/Pango-1.0.gir

binary-install/$(SHARED_PKG)::
	# fix the permissions of dh_pangomodules
	chmod +x debian/dh_pangomodules
	# generate $(SHARED_PKG).modules for the shared lib
	LD_LIBRARY_PATH=$(CURDIR)/debian/$(SHARED_PKG)/$(LIBDIR):$(LD_LIBRARY_PATH) \
	PANGO_QUERYMODULES=debian/build/shared/pango/pango-querymodules \
		debian/dh_pangomodules \
			-p$(SHARED_PKG) -k

binary-install/$(UDEB_PKG)::
	# Remove the thai module to avoid extraneous dependencies
	rm -f debian/$(UDEB_PKG)/$(MODULES_PATH_UDEB)/pango-thai-lang.so
	# generate $(UDEB_PKG).modules for the udeb
	LD_LIBRARY_PATH=$(CURDIR)/debian/$(UDEB_PKG)/$(LIBDIR_UDEB):$(LD_LIBRARY_PATH) \
	PANGO_QUERYMODULES=debian/build/udeb/pango/pango-querymodules \
		debian/dh_pangomodules \
			-p$(UDEB_PKG) -k

binary-install/pango1.0-tests:: DEB_DH_INSTALL_ARGS = --sourcedir=debian/install/shared
