#!/usr/bin/make -f
# -*- makefile -*-

export LC_ALL := C.UTF-8
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export DEB_LDFLAGS_MAINT_STRIP=-Wl,-Bsymbolic-functions

#GPGME needs this for proper building on 32 bit archs
ifeq "$(DEB_HOST_ARCH_BITS)" "32"
	export DEB_CFLAGS_MAINT_APPEND = -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
endif

ifneq ($(CI),)
	export CI=--werror
endif

regenerate_control:
	OS=debian-x86_64 ./contrib/ci/generate_debian.py

SB_STYLE := debian
deb_version := $(shell dpkg-parsechangelog --show-field Version)
ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
	SB_STYLE := ubuntu
	tar_name := fwupd_$(deb_version)_$(DEB_HOST_ARCH).tar.gz
else
	TMPLDIR  := debian/fwupd-$(DEB_HOST_ARCH)-signed-template/usr/share/code-signing/fwupd-$(DEB_HOST_ARCH)-signed-template
endif

%:
	[ -f debian/control ] || debian/rules regenerate_control
	dh $@ --with gir

override_dh_auto_clean: regenerate_control
	rm -fr debian/build
ifeq (ubuntu,$(SB_STYLE))
	rm -rf debian/fwupd-images
endif

override_dh_auto_configure:
	if pkg-config --exists libsmbios_c; then \
		export DELL="-Dplugin_dell=true"; \
	else \
		export DELL="-Dplugin_dell=false"; \
	fi; \
	if pkg-config --exists efivar; then \
		export UEFI="-Dplugin_uefi=true -Dplugin_redfish=true -Dplugin_nvme=true"; \
	else \
		export UEFI="-Dplugin_uefi=false -Dplugin_redfish=false -Dplugin_nvme=false"; \
	fi; \
	dh_auto_configure -- $$UEFI $$DELL $$CI -Dplugin_dummy=true --libexecdir=/usr/lib

override_dh_install:
	find debian/tmp/usr -type f -name "*a" -print | xargs rm -f
	sed -i 's,wheel,sudo,' ./debian/tmp/usr/share/polkit-1/rules.d/org.freedesktop.fwupd.rules
	dh_install
	#install the EFI binaries if needed
	if [ -d debian/tmp/usr/lib/fwupd/efi/ ]; then \
		dh_install -pfwupd usr/lib/fwupd/efi ;\
		dh_install -pfwupd usr/lib/fwupd/fwupdate; \
	fi
	#if build with meson subproject in CI need to install this too
	if [ -n "$CI" ] && [ -f debian/tmp/usr/lib/xb-tool ]; then \
		dh_install -pfwupd usr/lib/xb-tool ;\
	fi
	dh_missing -a --fail-missing

	#this is placed in fwupd-tests
	rm -f debian/fwupd/usr/lib/*/fwupd-plugins-3/libfu_plugin_test.so
	rm -f debian/fwupd/etc/fwupd/remotes.d/fwupd-tests.conf

ifeq (debian,$(SB_STYLE))
	# Generate the template source for the Debian signing service to use
	mkdir -p $(TMPLDIR)/source-template/debian
	cp -a debian/signing-template/* $(TMPLDIR)/source-template/debian
	cp debian/README.Debian $(TMPLDIR)/source-template/debian
	find $(TMPLDIR)/source-template/debian -type f | xargs sed -i "s,SIGNARCH,$(DEB_HOST_ARCH),"
	find $(TMPLDIR)/source-template/debian -type f | xargs sed -i "s,SIGNVERSION,$(deb_version),"
	for file in $$(find $(TMPLDIR)/source-template/debian -type f -name *SIGNARCH*); do file1=$$(echo $$file | sed "s,SIGNARCH,$(DEB_HOST_ARCH),"); mv -v $$file $$file1; done
	install -m 0755 debian/fwupd.postinst $(TMPLDIR)/source-template/debian/fwupd-$(DEB_HOST_ARCH)-signed.postinst
	install -m 0755 debian/fwupd.postrm $(TMPLDIR)/source-template/debian/fwupd-$(DEB_HOST_ARCH)-signed.postrm
	./debian/gen_signing_changelog $(TMPLDIR)/source-template/debian fwupd $(DEB_HOST_ARCH)
	./debian/gen_signing_json $(TMPLDIR) fwupd ${DEB_HOST_ARCH}
endif

override_dh_strip_nondeterminism:
	dh_strip_nondeterminism -Xfirmware-example.xml.gz

override_dh_auto_test:
	if [ -x /usr/bin/valgrind ] ; then \
		dh_auto_test; \
	fi

override_dh_builddeb:
	dh_builddeb
ifeq (ubuntu,$(SB_STYLE))
	if [ -d debian/tmp/usr/lib/fwupd/efi/ ]; then \
		mkdir -p debian/fwupd-images/$(deb_version) ;\
		cp debian/tmp/usr/lib/fwupd/efi/fwupd*.efi debian/fwupd-images/$(deb_version) ;\
		echo $(deb_version) > debian/fwupd-images/$(deb_version)/version ;\
		tar -C debian/fwupd-images -czvf ../$(tar_name) . ;\
		dpkg-distaddfile $(tar_name) raw-uefi - ;\
	fi
endif

override_dh_shlibdeps:
	dh_shlibdeps $$DHSLIBS
