#!/usr/bin/make -f

# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)

# Set this variable to yes for release builds to disable debugging and enable
# optimizations.
# NOTE: DEB_BUILD_OPTIONS must have 'nostrip' otherwise debugging symbols will
# be stripped from binaries.
XBMC_RELEASE ?= yes
ifneq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
XBMC_RELEASE ?= no
endif

# Whether we're building for release or not
ifeq (yes,$(XBMC_RELEASE))
  DEBUG_OPTIONS = --disable-debug --enable-optimizations
else
  DEBUG_OPTIONS = --enable-debug --disable-optimizations
endif

# Ubuntu or Debian specific options
ifeq (Ubuntu,$(shell lsb_release -is))
  DISTRO_SPECIFIC_OPTIONS =
# Enable external libraries for all architectures except i386 and amd64
ifeq (,$(filter i386 amd64,$(DEB_HOST_ARCH)))
  DISTRO_SPECIFIC_OPTIONS = --enable-external-libraries
endif
else
  DISTRO_SPECIFIC_OPTIONS = --enable-external-libraries \
    --disable-dvdcss \
    --disable-non-free
endif
DISTRO_SPECIFIC_OPTIONS =

ifeq (,$(filter i386 amd64,$(DEB_HOST_ARCH)))
  ARCH_SPECIFIC_OPTIONS = --disable-crystalhd
else
  ARCH_SPECIFIC_OPTIONS = --enable-crystalhd
endif

# Enable gles for arm and disable check for GL support on startup
ifeq (,$(filter armel,$(DEB_HOST_ARCH)))
  ifeq (,$(filter armhf,$(DEB_HOST_ARCH)))
    GL_CONFIG_OPTIONS = --enable-gl --disable-gles --enable-vaapi --enable-vdpau
    OPENMAX_OPTIONS = --disable-openmax
  else
    GL_CONFIG_OPTIONS = --disable-vaapi --disable-vdpau --disable-gl --enable-gles
    OPENMAX_OPTIONS = --disable-openmax
  endif
else
  GL_CONFIG_OPTIONS = --disable-vaapi --disable-vdpau --disable-gl --enable-gles
  OPENMAX_OPTIONS = --disable-openmax
endif

# Various environment variables to set
ENV_OPTIONS = CFLAGS="$(DEB_CFLAGS) -I/usr/include/$(DEB_HOST_MULTIARCH)/python2.7" CXXFLAGS="$(DEB_CXXFLAGS) -I/usr/include/$(DEB_HOST_MULTIARCH)/python2.7"

# List of options to pass to configure. Can be overridden.
# Extra options can simply be passed using XBMC_CONFIG_EXTRA_OPTIONS env
# variable.
XBMC_CONFIG_OPTIONS ?= --host=$(DEB_HOST_GNU_TYPE) \
  --build=$(DEB_BUILD_GNU_TYPE) \
  --prefix=/usr --docdir=/usr/share/doc/xbmc \
  $(DEBUG_OPTIONS) \
  $(GL_CONFIG_OPTIONS) \
  --disable-vdadecoder \
  --disable-vtbdecoder \
  $(OPENMAX_OPTIONS) \
  --disable-tegra \
  --disable-profiling \
  --enable-joystick \
  --enable-xrandr \
  --disable-ccache \
  --disable-pulse \
  --enable-rtmp \
  --enable-ffmpeg-libvorbis \
  --disable-mid \
  --enable-hal \
  --enable-avahi \
  --disable-asap-codec \
  --enable-webserver \
  --enable-optical-drive \
  --enable-texturepacker \
  --enable-nfs \
  --disable-libcec \
  --enable-afpclient \
  --enable-airtunes \
  --enable-libbluray \
  --enable-pvraddons-with-dependencies \
  $(DISTRO_SPECIFIC_OPTIONS) \
  $(ARCH_SPECIFIC_OPTIONS) \
  $(XBMC_CONFIG_EXTRA_OPTIONS) \
  $(ENV_OPTIONS)

# Use --parallel option only if debhelper supports it
DH_PARALLEL_OPT=$(shell dh_testdir --parallel 2>/dev/null && echo "--parallel")

# Used to show what config options are enabled
show-xbmc-config-options:
	$(info $(XBMC_CONFIG_OPTIONS))

%:
	dh $@ $(DH_PARALLEL_OPT)

override_dh_clean:
	dh_clean libtool xbmc/config.h xbmc/stamp-h1
	find . -name config.status -o -name config.cache -o -name config.log \
		-exec rm -f "{}" \;

override_dh_auto_configure:
	./bootstrap
	./configure $(XBMC_CONFIG_OPTIONS)

override_dh_auto_install:
	$(MAKE) -C lib/addons/script.module.pil
	$(MAKE) install DESTDIR=$(CURDIR)/debian/tmp
	$(MAKE) eventclients DESTDIR=$(CURDIR)/debian/tmp \
		WII_EXTRA_OPTS=-DCWIID_OLD

override_dh_install:
	dh_install --sourcedir=$(CURDIR)/debian/tmp -XLICENCE \
		-XLicence.txt -XLicense.txt -XLiberationSans-Regular.ttf \
		-XDejaVuSans.ttf -XDejaVuSans-Bold.ttf
	# Delete license file from package
	rm -f debian/xbmc/usr/share/xbmc/addons/script.recentlyadded/LICENSE.txt

override_dh_makeshlibs:
	# We don't install shared libraries in standard locations so don't run
	# dh_makeshlibs

override_dh_auto_test:
	# Do not run unittests, as they fail

override_dh_shlibdeps: debian/tmp/xbmc-bin-dummy.so
	dh_shlibdeps -a -O--parallel \
		-l$(CURDIR)/debian/xbmc-bin/usr/lib/xbmc/system/players/dvdplayer
	# Need to manually add dependencies for dlopened libs.
	dpkg-shlibdeps -dRecommends -edebian/tmp/xbmc-bin-dummy.so -xlibc6 -O >>debian/xbmc-bin.substvars

debian/tmp/xbmc-bin-dummy.so:
	mkdir -p debian/tmp
	cc -xc -shared -Wl,--no-as-needed -o $@ /dev/null \
		-lcurl-gnutls \
		-lrtmp \
