#!/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

LDFLAGS += -Wl,-O1 -Wl,--as-needed

# this is for compatibility with dpkg-dev < 1.13.5, see
# <http://lists.debian.org/debian-devel-announce/2005/06/msg00010.html>
DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null)
DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null)

# Take account of old dpkg-architecture output.
ifeq ($(DEB_HOST_ARCH_CPU),)
  DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
  ifeq ($(DEB_HOST_ARCH_CPU),x86_64)
    DEB_HOST_ARCH_CPU := amd64
  endif
endif
ifeq ($(DEB_HOST_ARCH_OS),)
  DEB_HOST_ARCH_OS := $(subst -gnu,,$(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM))
  ifeq ($(DEB_HOST_ARCH_OS),gnu)
    DEB_HOST_ARCH_OS := hurd
  endif
endif
# end of compatibility block

# debian package version
version=$(shell dpkg-parsechangelog | grep ^Version: | cut -d ' ' -f 2)
# upstream version
gst_version=$(shell echo $(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.21)

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

# debug package
#DEB_DH_STRIP_ARGS := --dbg-package=$(gst_pkgname)-plugins-good-dbg

# 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
export echo=echo
# The plugins are basically the same.
# Link special names to a template file.
# still need "*.install" to be done by hand

PLUGINS += plugins-good plugins-good-extra
ifeq ($(DEB_HOST_ARCH_OS),linux)
PLUGINS +=
endif
VERSIONIZE= \
	plugins-good-doc.install \

ifeq ($(DEB_HOST_ARCH_OS),linux)
1394 = debian/tmp/usr/lib/gstreamer-$(gst_abi)/libgst1394.so
video4linux2 = debian/tmp/usr/lib/gstreamer-$(gst_abi)/libgstvideo4linux2.so
endif

ifeq ($(DEB_HOST_ARCH_OS),linux)
DEFAULT_AUDIOSINK = autoaudiosink
DEFAULT_AUDIOSRC = alsasrc
DEFAULT_VIDEOSINK = autovideosink
DEFAULT_VIDEOSRC = v4l2src
DEFAULT_VISUALIZER = goom
else
DEFAULT_AUDIOSINK = autoaudiosink
DEFAULT_AUDIOSRC = osssrc
DEFAULT_VIDEOSINK = autovideosink
DEFAULT_VIDEOSRC = videotestsrc
DEFAULT_VISUALIZER = goom
endif

# Let's decide the package name and url depending on the distribution
DISTRO = "Maemo"

GST_PACKAGE_NAME := "GStreamer VP8 Plugins (Maemo)"
GST_PACKAGE_ORIGIN="http://maemo.org"

# 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,@1394@,$(1394),g" \
			| sed "s,@video4linux2@,$(video4linux2),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

maint: debian/control

debian/stamp-autogen:
	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
	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_EXTRA_BUILD_DEPENDS@/$(gst_extra_build_depends)/g" | \
		sed "s/@linux@/`type-handling any linux-gnu`/g"> $@

DEB_CONFIGURE_EXTRA_FLAGS += \
	--disable-shave \
	--disable-examples \
	--enable-DEBUG \
	--enable-debug \
	--disable-nls \
	--disable-adpcmdec \
	--disable-adpcmenc \
	--disable-aiff \
	--disable-asfmux \
	--disable-audioparsers \
	--disable-autoconvert \
	--disable-camerabin \
	--disable-legacyresample \
	--disable-bayer \
	--disable-cdxaparse \
	--disable-dataurisrc \
	--disable-dccp \
	--disable-debugutils \
	--disable-dtmf \
	--disable-dvdspu \
	--disable-festival \
	--disable-freeze \
	--disable-frei0r \
	--disable-h264parse \
	--disable-hdvparse \
	--disable-id3tag \
	--disable-invtelecine \
	--enable-musepack \
	--disable-jpegformat \
	--disable-librfb \
	--disable-liveadder \
	--disable-mpegdemux \
	--disable-mpegtsmux \
	--disable-mpegpsmux \
	--disable-mpeg4videoparse \
	--disable-mpegvideoparse \
	--disable-mve \
	--disable-mxf \
	--disable-nsf \
	--disable-nuvdemux \
	--disable-pcapparse \
	--disable-pnm \
	--disable-qtmux \
	--disable-rawparse \
	--disable-real \
	--disable-rtpmux \
	--disable-scaletempo \
	--disable-sdp \
	--disable-segmentclip \
	--disable-selector \
	--disable-siren \
	--disable-speed \
	--disable-subenc \
	--disable-stereo \
	--disable-tta \
	--disable-valve \
	--disable-videomeasure \
	--disable-videosignal \
	--disable-vmnc \
	--disable-directsound \
	--disable-directdraw \
	--disable-osx_video \
	--disable-quicktime \
	--disable-vcd \
	--disable-alsa \
	--disable-assrender \
	--disable-amrwb \
	--disable-apexsink \
	--disable-bz2 \
	--disable-cdaudio \
	--disable-celt \
	--disable-cog \
	--disable-dc1394 \
	--disable-directfb \
	--disable-dirac \
	--disable-dts \
	--disable-divx \
	--disable-resindvd \
	--disable-metadata \
	--disable-faac \
	--disable-faad \
	--disable-fbdev \
	--disable-flite \
	--disable-gsm \
	--disable-jack \
	--disable-jp2k \
	--disable-kate \
	--disable-ladspa \
	--disable-lv2 \
	--disable-libmms \
	--disable-modplug \
	--disable-mimic \
	--disable-mpeg2enc \
	--disable-mplex \
	--disable-musicbrainz \
	--disable-mythtv \
	--disable-nas \
	--disable-neon \
	--disable-ofa \
	--disable-oss4 \
	--disable-rtpmanager \
	--disable-rtpmux \
	--disable-rsvg \
	--disable-timidity \
	--disable-wildmidi \
	--disable-sdl \
	--disable-sdltest \
	--disable-sndfile \
	--disable-soundtouch \
	--disable-spc \
	--disable-gme \
	--disable-swfdec \
	--disable-theoradec \
	--disable-xvid \
	--disable-dvb  \
	--disable-wininet \
	--disable-acm \
	--disable-vdpau \
	--disable-schro \
	--disable-zbar \
	--with-package-name=$(GST_PACKAGE_NAME) \
	--with-package-origin=$(GST_PACKAGE_ORIGIN) \
	--enable-experimental

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 sym links
	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

common-binary-fixup-arch::
	dh_gstscancodecs

DEB_INSTALL_DOCS_ALL += debian/README.Debian NEWS

# Disable inclusion of large upstream ChangeLog
DEB_INSTALL_CHANGELOGS_ALL :=

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

binary-predeb/gstreamer0.10-plugins-musepack::
	maemo-optify

.PHONY: maint
