#!/usr/bin/make -f

# This has to be exported to make some magic below work.
export DH_OPTIONS

export DEB_BUILD_MAINT_OPTIONS = hardening=+all-pie

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

GL_CONFIG_OPTIONS = --enable-gl --disable-gles --enable-vdpau
ARCH_SPECIFIC_LIB_RECOMMENDS_ADD = -lvdpau

# Disable debugging by default
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
DEBUG_CONFIG_OPTIONS += --enable-debug
else
DEBUG_CONFIG_OPTIONS += --disable-debug
endif

# Enable gles for armel, armhf
# Also disable VDPAU and VAAPI there since they break the build with gles
ifneq (,$(filter armel armhf,$(DEB_HOST_ARCH)))
GL_CONFIG_OPTIONS = --disable-gl --enable-gles --disable-vdpau --disable-vaapi
ARCH_SPECIFIC_LIB_RECOMMENDS_ADD =
else
# Enable OpenGL but no VDPAU or VAAPI for MIPS
ifneq (,$(filter mips mipsel,$(DEB_HOST_ARCH)))
GL_CONFIG_OPTIONS = --enable-gl --disable-gles --disable-vdpau --disable-vaapi
ARCH_SPECIFIC_LIB_RECOMMENDS_ADD =
endif
endif

ARCH_SPECIFIC_LIB_RECOMMENDS += $(ARCH_SPECIFIC_LIB_RECOMMENDS_ADD)

# Various environment variables to set
export DEB_LDFLAGS_MAINT_APPEND = $(shell pkg-config --libs ftgl) -latomic

# fall back to old location of libhdhomerun includes if needed
ifneq ("$(wildcard /usr/lib/libhdhomerun/hdhomerun.h)","")
export DEB_CXXFLAGS_MAINT_APPEND = -I/usr/lib/
endif

# List of options to pass to configure. Can be overridden.
# Extra options can simply be passed using KODI_CONFIG_EXTRA_OPTIONS env
# variable.
KODI_CONFIG_OPTIONS ?= --host=$(DEB_HOST_GNU_TYPE) \
  $(GL_CONFIG_OPTIONS) \
  --disable-vtbdecoder \
  --disable-openmax \
  --disable-tegra \
  $(DEBUG_CONFIG_OPTIONS) \
  --disable-profiling \
  --enable-joystick \
  --enable-pulse \
  --enable-rtmp \
  --disable-mid \
  --enable-avahi \
  --disable-asap-codec \
  --enable-webserver \
  --enable-optical-drive \
  --enable-texturepacker \
  --enable-nfs \
  --enable-libcec \
  --disable-airtunes \
  --with-ffmpeg=shared \
  --disable-dependency-tracking \
  --disable-dvdcss \
  --disable-non-free \
  --disable-gtest \
  $(ARCH_SPECIFIC_OPTIONS) \
  $(KODI_CONFIG_EXTRA_OPTIONS)

# Used to show what config options are enabled
show-kodi-config-options:
	$(info $(KODI_CONFIG_OPTIONS))

%:
	dh $@ --with autoreconf --with python2 --parallel

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 "{}" \;

# Use package's version in Kodi
VERSION := $(shell dpkg-parsechangelog | sed -n 's/^Version: \(.*\)/\1/p')

# fall back to old location of DejaVuSans.ttf if needed
ifneq ("$(wildcard /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf)","")
DEJAVUSANS=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
else
DEJAVUSANS=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
endif

override_dh_auto_configure: configure
	sed -i 's/DEB_VERSION/"'$(VERSION)'"/' xbmc/GUIInfoManager.cpp xbmc/Application.cpp
	mkdir -p xbmc/visualizations/XBMCProjectM/libprojectM/fonts
	-ln -s /usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf xbmc/visualizations/XBMCProjectM/libprojectM/fonts/
	-ln -s /usr/share/fonts/truetype/ttf-bitstream-vera/VeraMono.ttf xbmc/visualizations/XBMCProjectM/libprojectM/fonts/
	fontforge -script $(CURDIR)/debian/mergefonts.ff \
		/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf \
		$(DEJAVUSANS) \
		$(CURDIR)/media/Fonts/arial.ttf
	./bootstrap
	dh_auto_configure -- $(KODI_CONFIG_OPTIONS)
	# Add "from Debian" next to Kodi's original logo
	inkscape -z --export-png=addons/skin.confluence/media/from-debian-logo.png debian/from-debian-logo.svg

override_dh_auto_install:
	$(MAKE) install DESTDIR=$(CURDIR)/debian/tmp
	install -m 755 $(CURDIR)/tools/depends/native/TexturePacker/bin/TexturePacker \
		$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/kodi/
	$(MAKE) eventclients DESTDIR=$(CURDIR)/debian/tmp \
		WII_EXTRA_OPTS=-DCWIID_OLD

override_dh_install:
	dh_install -XLICENCE -XLICENSE \
		-XLicence.txt -XLicense.txt -XLiberationSans-Regular.ttf \
		-XDejaVuSans.ttf -XDejaVuSans-Bold.ttf -XLICENSE.txt \
		-XRoboto-Bold.ttf -XRoboto-Regular.ttf -XNOTICE.txt \
		-Xjquery-1.8.2.min.js -Xiscroll-min.js

override_dh_makeshlibs:
	# We don't install shared libraries in standard locations so don't run
	# dh_makeshlibs
	# OTOH we need to remove exec flag after dh_strip
	chmod -x $(CURDIR)/debian/tmp/usr/lib/*/kodi/addons/visualization.*/*.vis
	-chmod -x $(CURDIR)/debian/tmp/usr/lib/*/kodi/addons/screensaver.rsxs.*/*.xbs

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

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

debian/tmp/kodi-bin-recommends-dummy.so:
	mkdir -p debian/tmp
	cc -xc -shared -Wl,--no-as-needed -o $@ /dev/null \
		-lass \
		-lbluray \
		-lcec \
		-lFLAC \
		-lhdhomerun \
		-lmad \
		-lmodplug \
		-lmp3lame \
		-lmpeg2 \
		-lnfs \
		-logg \
		-lplist \
		-lrtmp \
		-lvorbis \
		-lvorbisenc \
		-lvorbisfile \
		$(ARCH_SPECIFIC_LIB_RECOMMENDS)

override_dh_strip:
	dh_strip --ddeb-migration="kodi-dbg (<< 15.1+dfsg1-4~)" || dh_strip

override_dh_installinit:
	@echo "Shipping systemd kodi.service file as an example only"
