#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
export DH_VERBOSE = 1


# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
# package maintainers to append LDFLAGS
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed

# rules won't see variables unless they're using DEB_foo_SET syntax. So use that as
# an intermediary. Also, export variables for sub-makes to be able to see them.
export KVER=$(DEB_KVER_SET)
export KDIR=$(DEB_KDIR_SET)
export CC=$(DEB_CC_SET)
export QLA_DIR=$(DEB_QLA_DIR_SET)
export QLA_INI_DIR=$(DEB_QLA_INI_DIR_SET)

SUBDIRS=scst $(shell grep -qw '^CONFIG_LIBFC' /boot/config-$(KVER) && echo fcst) iscsi-scst $(QLA_DIR) scst_local scstadmin srpt
DESTDIR=$(CURDIR)/debian/tmp
VERSION:=$(shell head -n1 debian/changelog | sed 's/.*(\([0-9.]*\).*).*/\1/')

%:
	echo "*** dh $@ ***"
	dh $@

clean:
	dh_testdir &&							\
	dh_prep -Xqla_isp/TAGS -Xdebian/changelog &&			\
	scripts/clean-source-tree -x debian/changelog -x debian/compat -x debian/scst.preinst \
	    -x debian/scst.postinst

build:
	[ -n "$(QLA_INI_DIR)" ] &&					\
	make 2release &&						\
	export BUILD_2X_MODULE=y &&					\
	export CONFIG_SCSI_QLA_FC=y &&					\
	export CONFIG_SCSI_QLA2XXX_TARGET=y &&				\
	for d in $(SUBDIRS); do $(MAKE) -C $$d; done &&			\
	{								\
		echo dkms.conf &&					\
		echo Makefile &&					\
		for d in fcst iscsi-scst $(QLA_INI_DIR) scst scst_local srpt; do\
			echo $$d;					\
		done;							\
	} | sed "s,^,usr/src/scst-$(VERSION)/," >debian/scst-dkms.install

build-indep: build

build-arch: build

install:
	[ -n "$(VERSION)" ] &&						\
	dh_testdir &&							\
	export PREFIX=/usr &&						\
	export DESTDIR="$(DESTDIR)" &&					\
	export BUILD_2X_MODULE=y &&					\
	export CONFIG_SCSI_QLA_FC=y &&					\
	export CONFIG_SCSI_QLA2XXX_TARGET=y &&				\
	for d in $(SUBDIRS); do						\
	    if [ $$d = scst ]; then					\
		{ $(MAKE) -C $$d install || break; }			\
	    else							\
		{ INSTALL_MOD_PATH="$(DESTDIR)" $(MAKE) -C $$d install; } ||\
		    break;						\
	    fi;								\
	done &&								\
	make 2debug &&							\
	rm -f "$(DESTDIR)"/lib/modules/*/[Mm]odule* &&			\
	mkdir -p $(DESTDIR)/usr/src/scst-$(VERSION) &&			\
	for f in scst.dkms scst-dkms.postinst scst-dkms.prerm; do	\
		sed "s/\$${PACKAGE_VERSION}/$(VERSION)/"		\
			< debian/$$f.in >debian/$$f || exit $?;	 	\
	done &&								\
	cp debian/scst.dkms						\
		$(DESTDIR)/usr/src/scst-$(VERSION)/dkms.conf &&		\
	scripts/list-source-files |					\
	grep -E '^Makefile$$|^(fcst|iscsi-scst|$(QLA_INI_DIR)|scst|scst_local|srpt)/'|\
	tar -T- -cf- |							\
	tar -C $(DESTDIR)/usr/src/scst-$(VERSION) -xf- &&		\
	find $(DESTDIR) -type f -print0 | xargs -0 -r chmod 0644 &&	\
	find $(DESTDIR) -type d -print0 | xargs -0 -r chmod 0755 &&	\
	mv "$(DESTDIR)"/usr/man "$(DESTDIR)"/usr/share/man &&		\
	dh_install &&							\
	dh_installman &&						\
	dh_installchangelogs &&						\
	dh_compress &&							\
	dh_fixperms &&							\
	dh_strip &&							\
	dh_makeshlibs &&						\
	dh_shlibdeps &&							\
	dh_installdeb &&						\
	dh_gencontrol &&						\
	dh_md5sums &&							\
	dh_builddeb

binary-indep: install

binary-arch: install

binary: binary-indep binary-arch

override_dh_installinit:
	dh_installinit --onlyscripts

override_dh_auto_configure:
	true

.PHONY: clean binary binary-arch binary-indep build build-arch build-indep \
	install
