#!/usr/bin/make -f
export DEB_BUILD_MAINT_OPTIONS = hardening=+all

%:
	dh $@ $(opt_no_act)

override_dh_autoreconf:
	./autogen.sh

override_dh_auto_clean:
	dh_auto_clean --builddirectory debian/xzdec-build
	dh_auto_clean --builddirectory debian/normal-build
	dh_auto_clean --builddirectory debian/static-build

override_dh_auto_install-indep:

override_dh_auto_install-arch:
	dh_auto_install --builddirectory debian/xzdec-build
	dh_auto_install --builddirectory debian/normal-build
	dh_auto_install --builddirectory debian/static-build
	set -e; arch=$$(dpkg-architecture -qDEB_HOST_MULTIARCH); \
	install -d debian/tmp/lib/$$arch; \
	mv debian/tmp/usr/lib/$$arch/liblzma.so.* debian/tmp/lib/$$arch/; \
	dso=$$(basename $$(readlink debian/tmp/usr/lib/$$arch/liblzma.so)); \
	ln -s -f /lib/$$arch/$$dso debian/tmp/usr/lib/$$arch/liblzma.so

override_dh_installchangelogs:
	dh_installchangelogs ChangeLog

override_dh_auto_build-indep:
	cd debian/normal-build && doxygen Doxyfile

override_dh_auto_build-arch:
	$(MAKE) -C debian/normal-build/po update-gmo
	dh_auto_build --builddirectory debian/normal-build
	dh_auto_build --builddirectory debian/static-build
	# The xzdec binary/ package is built with -Os as suggested in PACKAGERS
	# to create a small binary.
	@echo "blhc: ignore-line-regexp: .*-D_BLHC_IGNORE_THIS_LINE.*"
	dh_auto_build --builddirectory debian/xzdec-build

override_dh_auto_test-indep:

override_dh_auto_test-arch:
ifneq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
	@echo Skipping tests
else
	dh_auto_test --builddirectory debian/normal-build
	dh_auto_test --builddirectory debian/static-build
	dh_auto_test --builddirectory debian/xzdec-build
endif

override_dh_auto_configure:
	dh_auto_configure --builddirectory debian/normal-build -- \
		$(opt_reproduce) \
		--enable-threads --disable-static \
		$(opt_optimize) $(opt_quiet) \
		--disable-xzdec --disable-lzmadec
	dh_auto_configure --builddirectory debian/static-build -- \
		$(opt_reproduce) \
		--enable-threads --disable-shared \
		--enable-liblzma2-compat \
		$(opt_optimize) $(opt_quiet) \
		--disable-lzmainfo --disable-scripts \
		--disable-xzdec --disable-lzmadec \
		--disable-xz --disable-lzma-links
	dh_auto_configure --builddirectory debian/xzdec-build -- \
		$(opt_reproduce) \
		--disable-shared --disable-nls --disable-encoders \
		--enable-small --disable-threads \
		--disable-liblzma2-compat \
		$(opt_optimize_small) $(opt_quiet) \
		--disable-lzmainfo --disable-scripts \
		--disable-xz --disable-lzma-links

small_flags_env =
small_flags_env += DEB_CFLAGS_MAINT_STRIP='-O2 -O3'
small_flags_env += DEB_CFLAGS_MAINT_PREPEND=-Os -D_BLHC_IGNORE_THIS_LINE
flags_cmd = dpkg-buildflags --export=configure
opt_optimize = $(shell $(flags_cmd))
opt_optimize_small = $(shell $(small_flags_env) $(flags_cmd))
opt_reproduce = gl_cv_posix_shell=/bin/sh

opt_no_act =
opt_quiet =

# Unless noopt is set, use optimized CRC32 routine on the Hurd.
ifeq (hurd,$(shell dpkg-architecture -qDEB_HOST_ARCH_OS))
    cputype := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
    ifeq (i386,$(cputype))
        opt_optimize += --enable-assembler=x86
        opt_optimize_small += --enable-assembler=x86
    endif
    ifeq (amd64,$(cputype))
        opt_optimize += --enable-assembler=x86_64
        opt_optimize_small += --enable-assembler=x86_64
    endif
endif

ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
    opt_optimize += --disable-assembler
    opt_optimize_small += --disable-assembler
endif

ifneq (,$(findstring n,$(MAKEFLAGS)))
    opt_no_act = --no-act
endif

ifneq (,$(filter quiet,$(DEB_BUILD_OPTIONS)))
    opt_quiet = --quiet
    MAKEFLAGS += --quiet
endif

# Build a tarball with the latest upstream version.
# This is made complicated by the need to choose a nice version number.
REPO = https://git.tukaani.org/xz.git
BRANCH = master
get-orig-source:
	mkdir debian-orig-source
	-set -e; cd debian-orig-source; \
	: Fetch latest upstream version.; \
		git init -q; \
		git fetch -q --tags $(REPO); \
		git fetch -q $(REPO) $(BRANCH); \
	: Determine version number.; \
		commit_name=$$(git describe FETCH_HEAD); \
		release=$${commit_name%%-*}; \
		date=$$(date --utc --date="$$( \
			git log -1 --pretty=format:%cD "$$commit_name" \
			)" "+%Y%m%d"); \
		if test "$$commit_name" = "$$release"; \
		then upstream_version=$${commit_name#v}; \
		else upstream_version="$${release#v}+$${date}"; \
		fi; \
	: Generate tarball.; \
		echo "packaging $$commit_name"; \
		git archive --format=tar "$$commit_name" \
			--prefix="xz-utils-$$upstream_version/" | \
		gzip -n --rsyncable -9 \
			> "../xz-utils_$$upstream_version.orig.tar.gz"
	rm -fr debian-orig-source
