#!/usr/bin/make -f

include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/rules/simple-patchsys.mk
include /usr/share/cdbs/1/class/gnome.mk
include /usr/share/cdbs/1/rules/utils.mk

DEB_DESTDIR=$(CURDIR)/debian/tmp

CFLAGS += -Wno-error
CXXFLAGS += -Wno-error
LDFLAGS += -Wl,-z,defs -Wl,-O1 -Wl,--as-needed
#DEB_MAKE_CHECK_TARGET = check || true

# upstream version with epoch
gst_version := $(shell echo $(DEB_VERSION) | cut -d '-' -f 1)
gst_major := 0
gst_minor := 10
gst_abi := $(gst_major).$(gst_minor)
# gstreamer library package names
gst_lib := libgstreamer$(gst_abi)-0
gst_lib_dev := libgstreamer$(gst_abi)-dev
# what gstreamer version is needed
gst_lib_dev_dep := $(gst_lib_dev) (>= 0.10.22)

gst_pkgname := gstreamer$(gst_abi)
gst_deb_abi := $(gst_abi)-0

# gst-plugins-base library package names
gst_plugins_base_lib := libgstreamer-plugins-base$(gst_deb_abi)
gst_plugins_base_lib_dev := libgstreamer-plugins-base$(gst_abi)-dev
# gst-plugins-base library shlibs
gst_plugins_base_lib_dep := "$(gst_plugins_base_lib) (>= $(gst_version))"

gst_extra_build_depends += libasound2-dev (>= 0.9.0) [@linux@]

# debug package
DEB_DH_STRIP_ARGS += --dbg-package=$(gst_pkgname)-plugins-base-dbg

DEB_COMPRESS_EXCLUDE = .sgml .devhelp .ps .pdf

# disable all CPU specific optimizations in commands launched by this Makefile
# using liboil; this is to work around liboil related build failures which
# are not specially interesting to catch on buildds as these might run very
# specific hardware
OIL_CPU_FLAGS := 0
export OIL_CPU_FLAGS

# The plugins are basically the same.
# Link special names to a template file.
# still need "*.install" to be done by hand

PLUGINS += gnomevfs plugins-base x alsa plugins-base-extra
VERSIONIZE += \
	plugins-base-apps.install \
	plugins-base-apps.manpages \
	plugins-base-doc.install \

ifeq ($(DEB_HOST_ARCH_OS),linux)
video4linux := debian/tmp/usr/lib/gstreamer-$(gst_abi)/libgstvideo4linux.so
endif

# setup links for packages
pre-build::
	for p in $(PLUGINS); do \
		rm -f debian/$(gst_pkgname)-$$p.install; \
		cat debian/gstreamer-$$p.install | \
			sed 's/@GST_ABI@/$(gst_abi)/g' \
			| sed "s,@video4linux@,$(video4linux),g" \
			>debian/$(gst_pkgname)-$$p.install; \
	done
	for f in $(VERSIONIZE); do \
		cat debian/gstreamer-$$f | \
			sed 's/@GST_ABI@/$(gst_abi)/g' \
			>debian/$(gst_pkgname)-$$f; \
	done
	rm -f debian/libgstreamer-plugins-base$(gst_deb_abi).install
	cat debian/libgstreamer-plugins-base.install | \
		sed 's/@GST_ABI@/$(gst_abi)/g' \
		>debian/libgstreamer-plugins-base$(gst_deb_abi).install
	rm -f debian/libgstreamer-plugins-base$(gst_deb_abi).symbols
	cp debian/libgstreamer-plugins-base.symbols \
		debian/libgstreamer-plugins-base$(gst_deb_abi).symbols
	rm -f debian/libgstreamer-plugins-base$(gst_abi)-dev.install
	cat debian/libgstreamer-plugins-base-dev.install | \
		sed 's/@GST_ABI@/$(gst_abi)/g' \
		>debian/libgstreamer-plugins-base$(gst_abi)-dev.install

maint: debian/control

debian/stamp-autogen:
	./autogen.sh --noconfigure
	touch $@

post-patches:: debian/stamp-autogen

debian/build-deps: debian/build-deps.in debian/rules
	cat $< >$@

debian/control:: debian/control.in debian/build-deps debian/mk.control debian/rules debian/changelog force
	perl debian/mk.control | \
		sed 's/@GST_VERSION@/$(gst_version)/g' | \
		sed 's/@GST_ABI@/$(gst_abi)/g' | \
		sed 's/@GST_PKGNAME@/$(gst_pkgname)/g' | \
		sed 's/@GST_LIB@/$(gst_lib)/g' | \
		sed 's/@GST_LIB_DEV@/$(gst_lib_dev)/g' | \
		sed 's/@GST_LIB_DEV_DEP@/$(gst_lib_dev_dep)/g' | \
		sed 's/@GST_PLUGINS_BASE_LIB@/$(gst_plugins_base_lib)/g' | \
		sed 's/@GST_PLUGINS_BASE_LIB_DEV@/$(gst_plugins_base_lib_dev)/g' | \
		sed "s/@GST_EXTRA_BUILD_DEPENDS@/$(gst_extra_build_depends)/g" | \
		sed "s/@linux@/`type-handling any linux-gnu`/g" >$@

DEB_CONFIGURE_EXTRA_FLAGS += \
	--disable-shave \
	--disable-failing-tests \
	--disable-nls \
	--enable-DEBUG \
	--enable-debug \
	--enable-experimental \
	--with-audioresample-format=int \
	--with-package-name=$(GST_PACKAGE_NAME) \
	--with-package-origin=$(GST_PACKAGE_ORIGIN) \
	--with-install-plugins-helper="/usr/bin/gstreamer-codec-install"

# only build the docs on arches which can
#ifeq (,$(findstring $(DEB_HOST_ARCH),m68k arm))
#DEB_CONFIGURE_EXTRA_FLAGS += --enable-gtk-doc
#endif

ifeq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
    DEB_CONFIGURE_EXTRA_FLAGS += \
	CFLAGS="-DG_DISABLE_CAST_CHECKS -DGST_DISABLE_GST_DEBUG=1"
endif

clean::
	# get rid of the symlinks
	for i in $(PLUGINS); do \
		rm -f debian/$(gst_pkgname)-$$i.install; \
		rm -f debian/$(gst_pkgname)-$$i.preinst; \
	done
	for f in $(VERSIONIZE); do \
		rm -f debian/$(gst_pkgname)-$$f; \
	done
	rm -f debian/libgstreamer-plugins-base$(gst_deb_abi).install
	rm -f debian/libgstreamer-plugins-base$(gst_deb_abi).symbols
	rm -f debian/libgstreamer-plugins-base$(gst_abi)-dev.install

binary-post-install/$(gst_pkgname)-plugins-base-apps::
	dh_perl

DEB_DH_MAKESHLIBS_ARGS_$(gst_plugins_base_lib) += -V $(gst_plugins_base_lib_dep) -- -c4
DEB_INSTALL_DOCS_ALL += debian/README.Debian NEWS
DEB_SHLIBDEPS_INCLUDE += debian/libgstreamer-plugins-base$(gst_deb_abi)/usr/lib
# Disable inclusion of large upstream ChangeLog
DEB_INSTALL_CHANGELOGS_ALL :=

# override shlibs for libraries from this source before computing dependencies
# of packages generated from this source; we already have inter-dependencies
# expressed manually in the control file, we do not need the shlibs to add
# duplicates
# (this rule runs just before the dh_shlibdeps)
common-binary-fixup-arch::
	mkdir -p $(CURDIR)/fake-home
	HOME=$(CURDIR)/fake-home \
	LD_LIBRARY_PATH=debian/libgstreamer-plugins-base0.10-0/usr/lib:$(LD_LIBRARY_PATH) \
	    dh_gstscancodecs
	-rm -f debian/shlibs.local
	rm -rf $(CURDIR)/fake-home
	cat debian/*/DEBIAN/shlibs | \
		sed -n -r -e 's/(([^ ]+: )?([^ ]+) ([^ ]+)) .*/\1/p' \
			>debian/shlibs.local

# (this rules runs just after the dh_shlibdeps)
common-binary-predeb-arch::
	-rm -f debian/shlibs.local

force:

.PHONY: maint force

UPSTREAM_REF=master
PATCHES_REF=maemo-patches

update-patch-series:
	mkdir -p $(CURDIR)/debian/patches
	rm -f $(CURDIR)/debian/patches/*.patch
	git format-patch -o $(CURDIR)/debian/patches $(PATCHES_REF) ^$(UPSTREAM_REF) | \
		xargs -n 1 basename > $(CURDIR)/debian/patches/series
	for patch in $$(ls $(CURDIR)/debian/patches/*.patch) ; \
	do \
		lines=$$(cat $$patch | wc -l) ; \
		head -n $$(($$lines - 3)) $$patch > $${patch}.chomped ; \
		mv $${patch}.chomped $$patch ; \
	done
