#!/usr/bin/make -f

include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/gnome.mk
include /usr/share/cdbs/1/rules/utils.mk
include /usr/share/cdbs/1/rules/autoreconf.mk

# Work-around for gtk-doc bug:
# https://bugzilla.gnome.org/show_bug.cgi?id=783926
export PYTHONIOENCODING="utf-8"

DEB_BUILD_PARALLEL = 1

DEB_DH_AUTORECONF_ARGS += --as-needed

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

# 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=1
gst_minor=0
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) (>= 1.14.4)

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

gst_extra_build_depends =
gst_extra_build_depends += libraw1394-dev (>= 2.0.0) [linux-any]
gst_extra_build_depends += , libiec61883-dev (>= 1.0.0) [linux-any]
gst_extra_build_depends += , libavc1394-dev [linux-any]
gst_extra_build_depends += , libv4l-dev [linux-any]
gst_extra_build_depends += , libgudev-1.0-dev (>= 143) [linux-any]

# 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

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

PLUGINS += pulseaudio gtk3 plugins-good
CONFIG_ARGS :=
ifeq ($(DEB_HOST_ARCH_OS),linux)
PLUGINS +=
endif
VERSIONIZE= \

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

ifeq ($(DEB_HOST_ARCH_OS),hurd)
CONFIG_ARGS += --disable-oss4
else
oss4 = debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-$(gst_abi)/libgstoss4.so
endif


# workaround for mesa headers being broken (#894076)
ifeq ($(DEB_HOST_ARCH),armel)
CONFIG_ARGS += --disable-qt
endif
ifeq ($(DEB_HOST_ARCH),armhf)
CONFIG_ARGS += --disable-qt
endif
CONFIG_ARGS += --disable-qt

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

GST_PACKAGE_NAME := "GStreamer Good Plugins"

# setup links for packages
pre-build::
	for p in $(PLUGINS); do \
		rm -f debian/$(gst_pkgname)-$$p.install; \
		sed \
			-e 's/@GST_ABI@/$(gst_abi)/g' \
			-e 's,@1394@,$(1394),g' \
			-e 's,@video4linux2@,$(video4linux2),g' \
			-e 's,@oss4@,$(oss4),g' \
			debian/gstreamer-$$p.install \
			> debian/$(gst_pkgname)-$$p.install; \
	done

	for f in $(VERSIONIZE); do \
		sed 's/@GST_ABI@/$(gst_abi)/g' debian/gstreamer-$$f \
			> debian/$(gst_pkgname)-$$f; \
	done

maint: debian/control

DEB_CONFIGURE_EXTRA_FLAGS += \
	--libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \
	--disable-examples \
	--enable-DEBUG \
	--enable-debug \
	--with-package-name=$(GST_PACKAGE_NAME) \
	--disable-gtk-doc \
	--enable-experimental \
	--with-default-audiosink=$(DEFAULT_AUDIOSINK) \
	--with-default-audiosrc=$(DEFAULT_AUDIOSRC) \
	--with-default-videosink=$(DEFAULT_VIDEOSINK) \
	--with-default-videosrc=$(DEFAULT_VIDEOSRC) \
	--with-default-visualizer=$(DEFAULT_VISUALIZER) \
	$(CONFIG_ARGS)

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 :=

.PHONY: maint
