#!/usr/bin/make -f

export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export DEB_LDFLAGS_MAINT_APPEND = -Wl,-z,defs -Wl,--as-needed

SYSTEMD_PATH = usr/lib/systemd/user

%:
	dh $@ --with systemd

ifneq ($(filter nodoc,$(DEB_BUILD_PROFILES)),)
DOCS=disabled
MAN=disabled
else
DOCS=enabled
MAN=enabled
endif

built_binaries := $(shell dh_listpackages)

ifneq ($(filter %-tests,$(built_binaries)),)
INSTTEST=enabled
SDL2=enabled
else
INSTTEST=disabled
SDL2=disabled
endif

ifneq (,$(filter s390x hppa m68k powerpc ppc64 sparc64,$(DEB_HOST_ARCH)))
BLUEZ5_CODEC_LDAC=disabled
else
BLUEZ5_CODEC_LDAC=enabled
endif

ifneq (,$(filter m68k hurd-amd64 hurd-i386,$(DEB_HOST_ARCH)))
LIBCAMERA=disabled
else
LIBCAMERA=enabled
endif

# enable snap support in Ubuntu, Debian's kernel doesn't enable the option
# for fine grained unix mediation at the moment
SNAP=disabled
ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
ifneq (,$(filter amd64 arm64 armhf i386 powerpc ppc64el riscv64 s390x,$(DEB_HOST_ARCH)))
SNAP=enabled
endif
endif

ifneq (,$(filter hurd-amd64 hurd-i386,$(DEB_HOST_ARCH)))
UDEVRULESDIR=
else
# export UDEVRULESDIR=/usr/lib/udev/rules.d
# For pre-Trixie releases udev rules should go in:
export UDEVRULESDIR=/lib/udev/rules.d
endif

override_dh_auto_configure:
	dh_auto_configure -- \
		--libexecdir=libexec \
		-Daudiotestsrc=enabled \
		-Dauto_features=enabled \
		-Davahi=enabled \
		-Davb=disabled \
		-Dbluez5-backend-native-mm=enabled \
		-Dbluez5-codec-aac=disabled \
		-Dbluez5-codec-aptx=enabled \
		-Dbluez5-codec-lc3=enabled \
		-Dbluez5-codec-lc3plus=disabled \
		-Dbluez5-codec-ldac=$(BLUEZ5_CODEC_LDAC) \
		-Dbluez5-codec-opus=enabled \
		-Dlibcamera=$(LIBCAMERA) \
		-Dlibffado=enabled \
		-Dlibmysofa=enabled \
		-Ddocs=$(DOCS) \
		-Dffmpeg=disabled \
		-Dinstalled_tests=$(INSTTEST) \
		-Dlv2=enabled \
		-Dman=$(MAN) \
		-Dpipewire-v4l2=disabled \
		-Droc=enabled \
		-Dsdl2=$(SDL2) \
		-Dsession-managers= \
		-Dsnap=$(SNAP) \
		-Dsystemd-system-service=enabled \
		-Dsystemd-user-service=enabled \
		-Dtest=enabled \
		-Dudevrulesdir=$(UDEVRULESDIR) \
		-Dvideotestsrc=enabled \
		-Dvulkan=disabled \
		$(NULL)
	install -d debian/ld.so.conf.d
	echo "/usr/lib/$(DEB_HOST_MULTIARCH)/pipewire-0.3/jack/" > "debian/ld.so.conf.d/pipewire-jack-$(DEB_HOST_MULTIARCH).conf"

test_timeout_multiplier = 1

ifneq ($(filter arm hppa ia64 m68k riscv64 sh4 sparc%,$(DEB_HOST_ARCH_CPU)),)
test_timeout_multiplier = 5
endif

ifneq ($(filter mips%,$(DEB_HOST_ARCH_CPU)),)
test_timeout_multiplier = 10
endif

override_dh_auto_test:
	cd obj-* && LC_ALL=C.UTF-8 meson test -t $(test_timeout_multiplier) || true

override_dh_missing:
	dh_missing -Xpw-v4l2.1 --fail-missing

override_dh_makeshlibs:
	dh_makeshlibs \
		--exclude=/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-1.0 \
		--exclude=/usr/lib/$(DEB_HOST_MULTIARCH)/pipewire-0.3 \
		--exclude=/usr/lib/$(DEB_HOST_MULTIARCH)/spa-0.2 \
		-- -c4

override_dh_shlibdeps-arch:
	dh_shlibdeps \
		-ppipewire-jack \
		-l/usr/lib/$(DEB_HOST_MULTIARCH)/pipewire-0.3 \
		-- \
		-Ldebian/pipewire-jack.shlibs.local \
		$(NULL)
	dh_shlibdeps \
		--remaining-packages \
		-l/usr/lib/$(DEB_HOST_MULTIARCH)/pipewire-0.3 \
		$(NULL)

override_dh_systemd_enable:

override_dh_systemd_start:
	dh_installsystemduser
	# The recommanded way to install pipewire is using user services, but
	# we install system services anyway for specific use cases (like embedded
	# and accessibility) without enabling/starting them to avoid clashes.
	dh_installsystemd -ppipewire-system-services --no-enable --no-start
