#!/usr/bin/make -f
# -*- makefile -*-
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
EFIDIR ?= $(shell dpkg-vendor --query vendor | awk '{ print tolower($$0) }')
PODATE := $(shell dpkg-parsechangelog --show-field Date | xargs -0 date --utc "+%Y-%m-%d %H:%M%z" --date)

deb_version	:= $(shell dpkg-parsechangelog --show-field Version)

SB_STYLE := debian
ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
	SB_STYLE := ubuntu
else
	TMPLDIR  := debian/fwupdate-$(DEB_HOST_ARCH)-signed-template/usr/share/code-signing/fwupdate-$(DEB_HOST_ARCH)-signed-template
endif

buildroot	:= debian/tmp

SBAT_IN = debian/sbat.$(SB_STYLE).csv.in
SBAT_DATA = efi/data/sbat.$(SB_STYLE).csv

$(SBAT_DATA): $(SBAT_IN)
	rm -f $@
	set -e; \
	sed -e "s/@DEB_VERSION@/$(deb_version)/g" \
	-e "s/@UPSTREAM_VERSION@/$(plain_upstream_version)/g" \
	< $(SBAT_IN) > $(SBAT_DATA)
	# If we have an empty $(SBAT_DATA), delete
	if [ ! -s $(SBAT_DATA) ]; then rm -f $(SBAT_DATA); fi

%:
	dh $@

override_dh_auto_build: $(SBAT_DATA)
	dh_auto_build -- libdir=/usr/lib/$(DEB_HOST_MULTIARCH) \
			 libexecdir=\$${prefix}/lib/ \
			 datadir=/var/cache/ \
			 localedir=/usr/share/locale/ \
			 GNUEFIDIR=\$${prefix}/lib \
			 CROSS_COMPILE=$(DEB_HOST_GNU_TYPE)- \
			 EFIDIR=$(EFIDIR)
	sed 's,#EFIDIR#,$(EFIDIR),' \
		debian/fwupdate.postrm.in > debian/fwupdate.postrm
	sed 's,#EFIDIR#,$(EFIDIR),' \
		debian/fwupdate.postinst.in > debian/fwupdate.postinst

	# This is to satisfy https://wiki.debian.org/ReproducibleBuilds
	sed -i 's,POT-Creation-Date:.*,POT-Creation-Date: $(PODATE)\\n",' \
		linux/libfwup.po
	sed -i 's,POT-Creation-Date:.*,POT-Creation-Date: $(PODATE)\\n",' \
		linux/fwupdate.po

override_dh_auto_install:
	dh_auto_install -- libdir=/usr/lib/$(DEB_HOST_MULTIARCH) \
			   libexecdir=\$${prefix}/lib/ \
			   datadir=/var/cache/ \
			   localedir=/usr/share/locale/ \
			   GNUEFIDIR=\$${prefix}/lib \
			   CROSS_COMPILE=$(DEB_HOST_GNU_TYPE)- \
			   EFIDIR=$(EFIDIR)
	chmod -x ${buildroot}/boot/efi/EFI/$(EFIDIR)/*.efi
	mkdir -p ${buildroot}/usr/lib/fwupdate
	cp debian/scripts/install.in   ${buildroot}/usr/lib/fwupdate/install
	sed -i 's,#EFIDIR#,$(EFIDIR),' ${buildroot}/usr/lib/fwupdate/install

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/fwupdate.postinst $(TMPLDIR)/source-template/debian/fwupdate-$(DEB_HOST_ARCH)-signed.postinst
	install -m 0755 debian/fwupdate.postrm $(TMPLDIR)/source-template/debian/fwupdate-$(DEB_HOST_ARCH)-signed.postrm
	./debian/gen_signing_changelog $(TMPLDIR)/source-template/debian fwupdate $(DEB_HOST_ARCH)
	./debian/gen_signing_json $(TMPLDIR) fwupdate ${DEB_HOST_ARCH}
endif

override_dh_auto_clean:
	dh_auto_clean -- EFIDIR=$(EFIDIR)
	rm -f $(SBAT_DATA) efi/sbat.*.csv
	rm -rf debian/fwupdate-*-signed-template*

override_dh_builddeb:
	dh_builddeb -- -Zxz
