#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_ARCH_OS    ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)

debbuild = debian/build-deb
udebbuild = debian/build-udeb

CFLAGS = -Wall -g

confopts = \
  --without-ncurses \
  --disable-fsck \
  --disable-libuuid \
  --disable-uuidd \
  --disable-libblkid \
  --disable-agetty \
  --disable-cramfs \
  --disable-switch_root \
  --disable-rename \
  --disable-schedutils \
  --disable-wall

confopts_deb = $(confopts)
confopts_udeb = $(confopts)

ifeq ($(DEB_HOST_ARCH_OS),linux)
  confopts_deb += --with-selinux
endif

ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
  confbuild += --build $(DEB_HOST_GNU_TYPE)
else
  confbuild += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
endif

build: build-deb build-udeb

$(debbuild)/config.status:
	mkdir -p $(debbuild)
	cd $(debbuild) && \
	CFLAGS="$(CFLAGS) -O2" \
	../../configure $(confbuild) $(confopts_deb)

build-deb: build-deb-stamp
build-deb-stamp: $(debbuild)/config.status
	dh_testdir
	$(MAKE) -C $(debbuild)
	touch $@

$(udebbuild)/config.status:
	mkdir -p $(udebbuild)
	cd $(udebbuild) && \
	CFLAGS="$(CFLAGS) -Os" \
	../../configure $(confbuild) $(confopts_udeb)

build-udeb: build-udeb-stamp
build-udeb-stamp: $(udebbuild)/config.status
	dh_testdir
	$(MAKE) -C $(udebbuild)
	touch $@

clean:
	dh_testdir
	dh_testroot
	rm -f *-stamp
	rm -rf $(debbuild) $(udebbuild)
	[ ! -f Makefile ] || $(MAKE) distclean
ifneq "$(wildcard /usr/share/misc/config.sub)" ""
	cp -f /usr/share/misc/config.sub config.sub
endif
ifneq "$(wildcard /usr/share/misc/config.guess)" ""
	cp -f /usr/share/misc/config.guess config.guess
endif
	dh_clean 

DIR = debian/loop-aes-utils
DIR_UDEB = debian/mount-aes-udeb

install: build
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs

	install -m 4755 -o root $(debbuild)/mount/mount $(DIR)/bin
	install -m 4755 -o root $(debbuild)/mount/umount $(DIR)/bin
	install -m 755 $(debbuild)/mount/losetup $(DIR)/sbin
	install -m 755 $(debbuild)/mount/swapon $(DIR)/sbin
	install -m 755 debian/loop-aes-keygen $(DIR)/usr/bin

	# lintian-override
	install -m 644 debian/lintian-override $(DIR)/usr/share/lintian/overrides/loop-aes-utils

	# udeb
	install -d $(DIR_UDEB)/bin
	install -d $(DIR_UDEB)/sbin
	install -m 755 $(udebbuild)/mount/mount $(DIR_UDEB)/bin/mount-aes
	install -m 755 $(udebbuild)/mount/umount $(DIR_UDEB)/bin/umount-aes
	install -m 755 $(udebbuild)/mount/losetup $(DIR_UDEB)/sbin/losetup-aes
	install -m 755 $(udebbuild)/mount/swapon $(DIR_UDEB)/sbin/swapon-aes
	install -m 755 debian/loop-aes-keygen $(DIR_UDEB)/bin

	# initramsfs-tools integration
	install -m 755 debian/initramfs/script $(DIR)/usr/share/initramfs-tools/scripts/local-top/loopaes
	install -m 755 debian/initramfs/hook $(DIR)/usr/share/initramfs-tools/hooks/loopaes
	install -m 644 debian/initramfs/conf $(DIR)/usr/share/initramfs-tools/conf.d/loopaes

binary-indep: build install

binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installchangelogs
	dh_installdocs debian/README
	dh_installman -A
	dh_installinit --name=checkfs-loop --no-start -- start 28 S .
	dh_link
	dh_strip
	dh_compress
	dh_fixperms --exclude bin/mount --exclude bin/umount
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

binary: binary-indep binary-arch

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