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

export DEB_BUILD_MAINT_OPTIONS = hardening=+all

targets=\
	aarch64-none-elf \
	arm-none-eabi \
	riscv64-unknown-elf

binutils_dir=/usr/src/binutils
stampdir=debian/stamp
unpack_stamp=$(stampdir)/unpack
tar_stamp=$(stampdir)/tar
override_stamp=$(stampdir)/override

cpu_count = $(shell cat /proc/cpuinfo | grep -c '^processor')
source_version := $(shell dpkg-query -W -f="\$${Version}\n" binutils-source)
deb_version := $(source_version)+$(shell dpkg-parsechangelog | sed -ne "s/^Version: \(.*\)/\1/p")
deb_upstream_version := $(shell echo $(deb_version) | cut -d- -f1)
base_version := $(shell echo $(deb_version) | sed -e 's/\([1-9]\.[0-9]\).*-.*/\1/')

buildflags=$(shell dpkg-buildflags --export=configure)
BUILT_USING := $(shell dpkg-query -f '$${source:Package} (= $${source:Version}), ' -W binutils-source)

export MAKEFLAGS = -j$(cpu_count) -l$(cpu_count)

configure_flags = \
	--target=$${target} \
	--prefix=/usr/lib \
	--bindir=/usr/bin \
	--libdir=/usr/lib/$${target} \
	--infodir=/usr/share/doc/binutils-$${target}/info \
	--htmldir=/usr/share/doc/binutils-$${target}/html \
	--pdfdir=/usr/share/doc/binutils-$${target}/pdf \
	--mandir=/usr/share/man \
	--enable-deterministic-archives \
	--disable-nls \
	--disable-sim \
	--disable-werror \
	--enable-plugins \
	--enable-interwork \
	--with-system-zlib \
	"--with-pkgversion=$(deb_version)" \
	$(buildflags)

%:
	dh $@ -Dbinutils-source --parallel

$(override_stamp):
	for target in $(targets); do \
		sed "s/%TARGET%/$${target}/g" debian/template.lintian-overrides > debian/binutils-$${target}.lintian-overrides; \
	done

$(tar_stamp): $(override_stamp)
	mkdir -p binutils-source
	tar xf $(binutils_dir)/binutils-*.tar.* -C binutils-source --strip-components=1
	cp /usr/share/doc/binutils-source/copyright debian/copyright
	mkdir -p $(stampdir)
	touch $@

$(unpack_stamp): $(tar_stamp)
	set -ex; \
		cd binutils-source; \
		if [ -d ../debian/patches ]; then \
			for patch in ../debian/patches/*.patch; do \
				echo Applying patch "$$patch"; \
				patch -p1 < "$$patch"; \
			done; \
		fi
	mkdir -p $(stampdir)
	touch $@

override_dh_autoreconf: $(unpack_stamp)
	autoreconf2.69 -f -i binutils-source

override_dh_auto_configure: $(unpack_stamp)
	for target in $(targets); do \
		dh_auto_configure -Dbinutils-source -Bbuild-$${target} -- $(configure_flags); \
	done

override_dh_auto_build:
	for target in $(targets); do \
		dh_auto_build -Bbuild-$${target} --parallel & \
	done; wait

override_dh_auto_install:
	for target in $(targets); do \
		dh_auto_install -Bbuild-$${target} --destdir=debian/binutils-$${target}; \
	done

override_dh_gencontrol:
	dh_gencontrol -a -- -v$(deb_version) -Vlocal:Version=$(deb_upstream_version) -Vbinutils:Version=$(source_version) -VBuilt-Using="$(BUILT_USING)"

override_dh_auto_clean:
	rm -rf binutils-source $(stampdir)
	for target in $(targets); do \
		rm -rf build-$${target} debian/binutils-$${target} debian/binutils-$${target}.lintian-overrides; \
	done

override_dh_installchangelogs:
	dh_installchangelogs binutils-source/ChangeLog

override_dh_auto_test:
