#!/usr/bin/make -f
# export DH_VERBOSE = 1

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

DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

include /usr/share/dpkg/pkg-info.mk
export KBUILD_BUILD_TIMESTAMP = @$(SOURCE_DATE_EPOCH)

UDEB := $(filter open-iscsi-udeb,$(shell dh_listpackages))

# Fix gcc10 warnings as errors while upstream doesn't catch up
export DEB_CFLAGS_PREPEND=-Wno-error=zero-length-bounds -Wno-error=format-overflow= -Wno-error=format-truncation= -Wno-error=maybe-uninitialized
export DEB_CXXFLAGS_PREPEND=${DEB_CFLAGS_PREPEND}

%:
	dh $@

override_dh_update_autotools_config:
override_autoreconf:
override_dh_auto_configure:

override_dh_auto_build:
	@# Let debhelper pass configure flags.
	dh_auto_configure --sourcedirectory=iscsiuio

	CFLAGS="$(CPPFLAGS) $(CFLAGS)" dh_auto_build

override_dh_auto_install:

	@# libopeniscsiusr
	dh_install -p libopeniscsiusr libopeniscsiusr/libopeniscsiusr*.so.* usr/lib/${DEB_HOST_MULTIARCH}

	@# libopeniscsi-dev
	dh_install -p libopeniscsiusr-dev libopeniscsiusr/libopeniscsiusr/ usr/include/

	@# open-iscsi
	dh_install -p open-iscsi usr/iscsid sbin/
	dh_install -p open-iscsi usr/iscsistart sbin/
	dh_install -p open-iscsi usr/iscsiadm sbin/
	dh_install -p open-iscsi utils/iscsi_discovery sbin/
	dh_install -p open-iscsi utils/iscsi-iname sbin/
	dh_install -p open-iscsi etc/iscsid.conf etc/iscsi/
	dh_install -p open-iscsi debian/extra/umountiscsi.sh lib/open-iscsi/
	dh_install -p open-iscsi debian/extra/logout-all.sh lib/open-iscsi/
	dh_install -p open-iscsi debian/extra/startup-checks.sh lib/open-iscsi/
	dh_install -p open-iscsi debian/extra/activate-storage.sh lib/open-iscsi/
	dh_install -p open-iscsi debian/extra/net-interface-handler lib/open-iscsi/
	dh_install -p open-iscsi debian/open-iscsi.finalrd usr/share/finalrd/
	dh_install -p open-iscsi etc/systemd/iscsid.socket lib/systemd/system/
	dh_install -p open-iscsi debian/iscsid.service lib/systemd/system/
	mkdir -p debian/open-iscsi/usr/bin
	ln -s /sbin/iscsiadm debian/open-iscsi/usr/bin/iscsiadm
	mkdir -p debian/open-iscsi/usr/share/initramfs-tools/hooks
	mkdir -p debian/open-iscsi/usr/share/initramfs-tools/scripts/local-top/
	mkdir -p debian/open-iscsi/usr/share/initramfs-tools/scripts/local-bottom/
	cp -p debian/extra/initramfs.hook debian/open-iscsi/usr/share/initramfs-tools/hooks/iscsi
	cp -p debian/extra/initramfs.local-top debian/open-iscsi/usr/share/initramfs-tools/scripts/local-top/iscsi
	cp -p debian/extra/initramfs.local-bottom debian/open-iscsi/usr/share/initramfs-tools/scripts/local-bottom/iscsi
	mkdir -p debian/open-iscsi/lib/udev/rules.d/
	cp -p debian/open-iscsi.rules debian/open-iscsi/lib/udev/rules.d/70-open-iscsi.rules
	cp -p debian/iscsi-network-interface.rules debian/open-iscsi/lib/udev/rules.d/70-iscsi-network-interface.rules

	@# iscsiuio
	dh_install -p iscsiuio iscsiuio/src/unix/iscsiuio /sbin
	mkdir -p debian/iscsiuio/usr/share/initramfs-tools/hooks
	cp -p debian/extra/iscsiuio.initramfs.hook debian/iscsiuio/usr/share/initramfs-tools/hooks/iscsiuio

ifneq ($(UDEB),)
	@# open-iscsi-udeb
	dh_install -p open-iscsi-udeb usr/iscsid sbin/
	dh_install -p open-iscsi-udeb usr/iscsistart sbin/
	dh_install -p open-iscsi-udeb usr/iscsiadm sbin/
	dh_install -p open-iscsi-udeb utils/iscsi_discovery sbin/
	dh_install -p open-iscsi-udeb utils/iscsi-iname sbin/
	dh_install -p open-iscsi-udeb etc/iscsid.conf etc/iscsi/
	dh_install -p open-iscsi-udeb debian/open-iscsi-udeb.start sbin/iscsi-start
	dh_install -p open-iscsi-udeb debian/open-iscsi-udeb.finish-install usr/lib/finish-install.d/10open-iscsi

	# Ship shared libraries along with the executable in a single udeb
	dh_install -p open-iscsi-udeb libopeniscsiusr/libopeniscsiusr*.so.* usr/lib/${DEB_HOST_MULTIARCH}
endif

override_dh_installinit:
	dh_installinit -p open-iscsi --no-start --no-enable --no-stop-on-upgrade --name=iscsid
	dh_installinit -p open-iscsi --no-start --no-enable --no-stop-on-upgrade
	dh_installinit -p iscsiuio --no-start --no-enable --no-stop-on-upgrade

override_dh_installsystemd:
	dh_installsystemd -p open-iscsi --name=iscsid --no-enable --no-stop-on-upgrade iscsid.service
	dh_installsystemd -p open-iscsi --name=iscsid --no-stop-on-upgrade iscsid.socket
	dh_installsystemd -p open-iscsi --no-stop-on-upgrade open-iscsi.service
	dh_installsystemd -p iscsiuio --no-stop-on-upgrade iscsiuio.service

override_dh_installman:
	dh_installman -p open-iscsi ./doc/*
	dh_installman -p libopeniscsiusr-dev ./libopeniscsiusr/docs/man/*
	dh_installman -p iscsiuio iscsiuio/docs/*

override_dh_installdocs:
	dh_installdocs -p open-iscsi README sysfs-documentation THANKS
	dh_installdocs -p iscsiuio iscsiuio/RELEASE.TXT iscsiuio/README
	dh_installdocs -p libopeniscsiusr ./libopeniscsiusr/docs/doc-preclean.pl ./libopeniscsiusr/docs/kernel-doc ./libopeniscsiusr/docs/libopeniscsiusr.h.3 ./libopeniscsiusr/docs/split-man.pl
	dh_installdocs -p libopeniscsiusr-dev

override_dh_makeshlibs:
ifneq ($(UDEB),)
	dh_makeshlibs --add-udeb=open-iscsi-udeb
else
	dh_makeshlibs
endif

# The following is taken from the initramfs-tools package. (We recommend
# busybox in the initramfs because otherwise we don't have access to the
# ip utility to set the default gateway after iscsistart -N is done.)
# On Debian we can use either busybox or busybox-static, but on Ubuntu
# and derivatives only busybox-initramfs will work.
BUSYBOX_PACKAGES := $(shell if dpkg-vendor --derives-from ubuntu; then echo busybox-initramfs; else echo busybox busybox-static; fi)

override_dh_gencontrol:
	echo >> debian/open-iscsi.substvars "busybox:Recommends=$(wordlist 2,100,$(BUSYBOX_PACKAGES:%=| %))"
	dh_gencontrol
