#!/usr/bin/make -f

include /usr/share/dpkg/pkg-info.mk
include /usr/share/dpkg/buildopts.mk

CHANGELOG_DATE ?= $(shell LC_ALL=C date -u -d @$(SOURCE_DATE_EPOCH) +"%d %B %Y")

export DH_VERBOSE=1
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed

BUILDDIR=$(CURDIR)/debian/build

ARCH=generic;ice40;ecp5;himbaechel
HIMBAECHEL_UARCH=gowin
HIMBAECHEL_GOWIN_DEVICES=all

%:
	dh $@

NO_GUI_PACKAGES = \
    -Nnextpnr-ice40-qt \
    -Nnextpnr-ecp5-qt \
    -Nnextpnr-himbaechel-qt

CMAKE_FLAGS := \
    -GNinja \
    -DCURRENT_GIT_VERSION="$(DEB_VERSION)" \
    -DBUILD_PYTHON=ON \
    -DBUILD_TESTS=ON \
    -DEXTERNAL_CHIPDB=ON \
    -DARCH='$(ARCH)' \
    -DICEBOX_DATADIR=/usr/share/fpga-icestorm/chipdb \
    -DICESTORM_INSTALL_PREFIX=/usr/share/fpga-icestorm/chipdb \
    -DTRELLIS_LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH)/trellis/ \
    -DTRELLIS_DATADIR=/usr/share/trellis/ \
    -DHIMBAECHEL_UARCH=$(HIMBAECHEL_UARCH) \
    -DHIMBAECHEL_SPLIT=ON \
    -DHIMBAECHEL_GOWIN_DEVICES=$(HIMBAECHEL_GOWIN_DEVICES)

HELP2MAN_FLAGS = \
    --name="Next Generation Place and Route" \
    --version-string="$(DEB_VERSION)" \
    --section=1 \
    --manual="General Commands" \
    --no-info \
    --no-discard-stderr

override_dh_auto_clean:
	rm -rf $(BUILDDIR)
	rm -f debian/nextpnr-*.1
	dh_auto_clean

override_dh_auto_configure:
	dh_auto_configure \
		$(NO_GUI_PACKAGES) \
		-B$(BUILDDIR)/cli \
		-- \
		$(CMAKE_FLAGS) \
		-DBUILD_GUI=OFF \
		-DEXPORT_BBA_FILES=$(BUILDDIR)/bba
	dh_auto_configure \
		--remaining-packages \
		-B$(BUILDDIR)/gui \
		-- \
		$(CMAKE_FLAGS) \
		-DBUILD_GUI=ON \
		-DIMPORT_BBA_FILES=$(BUILDDIR)/bba

override_dh_auto_build:
	dh_auto_build \
		$(NO_GUI_PACKAGES) \
		-B$(BUILDDIR)/cli
	dh_auto_build \
		--remaining-packages \
		-B$(BUILDDIR)/gui

override_dh_auto_test:
	dh_auto_test \
		-B$(BUILDDIR)/cli
	#dh_auto_test -B$(BUILDDIR)/gui

override_dh_auto_install:
	dh_auto_install \
		$(NO_GUI_PACKAGES) \
		-B$(BUILDDIR)/cli \
		--destdir=debian/tmp/cli
	dh_auto_install \
		--remaining-packages \
		-B$(BUILDDIR)/gui \
		--destdir=debian/tmp/gui

override_dh_install:
	dh_install \
		$(NO_GUI_PACKAGES) \
		--sourcedir=debian/tmp/cli
	dh_install \
		--remaining-packages \
		--sourcedir=debian/tmp/gui
	mkdir -p debian/nextpnr-generic/usr/share/man/man1/
	help2man \
		$(HELP2MAN_FLAGS) \
		debian/nextpnr-generic/usr/bin/nextpnr-generic \
		> debian/nextpnr-generic/usr/share/man/man1/nextpnr-generic.1
	mkdir -p debian/nextpnr-ice40/usr/share/man/man1/
	help2man \
		$(HELP2MAN_FLAGS) \
		debian/nextpnr-ice40/usr/bin/nextpnr-ice40 \
		> debian/nextpnr-ice40/usr/share/man/man1/nextpnr-ice40.1
	mkdir -p debian/nextpnr-ecp5/usr/share/man/man1/
	help2man \
		$(HELP2MAN_FLAGS) \
		debian/nextpnr-ecp5/usr/bin/nextpnr-ecp5 \
		> debian/nextpnr-ecp5/usr/share/man/man1/nextpnr-ecp5.1
	mkdir -p debian/nextpnr-himbaechel/usr/share/man/man1/
	help2man \
		$(HELP2MAN_FLAGS) \
		debian/nextpnr-himbaechel/usr/bin/nextpnr-himbaechel-gowin \
		> debian/nextpnr-himbaechel/usr/share/man/man1/nextpnr-himbaechel-gowin.1
	mkdir -p debian/nextpnr-ice40-qt/usr/share/man/man1/
	[ ! -x debian/nextpnr-ice40-qt/usr/bin/nextpnr-ice40 ] || \
	help2man \
		$(HELP2MAN_FLAGS) \
		debian/nextpnr-ice40-qt/usr/bin/nextpnr-ice40 \
		> debian/nextpnr-ice40-qt/usr/share/man/man1/nextpnr-ice40.1
	mkdir -p debian/nextpnr-ecp5-qt/usr/share/man/man1/
	[ ! -x debian/nextpnr-ecp5-qt/usr/bin/nextpnr-ecp5 ] || \
	help2man \
		$(HELP2MAN_FLAGS) \
		debian/nextpnr-ecp5-qt/usr/bin/nextpnr-ecp5 \
		> debian/nextpnr-ecp5-qt/usr/share/man/man1/nextpnr-ecp5.1
	mkdir -p debian/nextpnr-himbaechel-qt/usr/share/man/man1/
	[ ! -x debian/nextpnr-himbaechel-qt/usr/bin/nextpnr-himbaechel-gowin ] || \
	help2man \
		$(HELP2MAN_FLAGS) \
		debian/nextpnr-himbaechel-qt/usr/bin/nextpnr-himbaechel-gowin \
		> debian/nextpnr-himbaechel-qt/usr/share/man/man1/nextpnr-himbaechel-gowin.1

override_dh_installexamples:
	dh_installexamples --exclude=.gitignore
