#!/usr/bin/make -f

include /usr/share/dpkg/architecture.mk
include /usr/share/rustc/architecture.mk

export CARGO = /usr/share/cargo/bin/cargo
export CARGO_HOME = $(CURDIR)/debian/cargo_home
export CARGO_VENDOR_DIR = debian/missing-sources
export DEB_HOST_RUST_TYPE DEB_HOST_GNU_TYPE
export DEB_CARGO_CRATE=$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM)
export DPKG_GENSYMBOLS_CHECK_LEVEL = 4

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
else
	NUMJOBS = 1
endif

CARGO_C_FLAGS = --release \
	--destdir=debian/tmp \
	--prefix=/usr \
	--libdir=/usr/lib/${DEB_HOST_MULTIARCH} \
	--offline \
    --features gtk_v4_14,x11egl,x11glx,waylandegl,dmabuf \
	-v \
	-j $(NUMJOBS)

%:
	dh $@ --buildsystem cargo

execute_after_dh_auto_clean:
	rm -rf $(CARGO_HOME)

execute_before_dh_auto_configure:
	$(CARGO) prepare-debian $(CARGO_VENDOR_DIR)
	/usr/share/cargo/bin/dh-cargo-vendored-sources

execute_after_dh_auto_build:
	/usr/share/cargo/bin/cargo cbuild $(CARGO_C_FLAGS)

override_dh_auto_install:
	# will fail after installing the librust-XX package, since there is no binpkg
	# but dh-cargo thinks there is
	dh_auto_install || true
	/usr/share/cargo/bin/cargo cinstall $(CARGO_C_FLAGS)

execute_after_dh_install:
	find debian -name Cargo.lock -delete

vendor:
	dh_quilt_patch
	rm -rf $(CARGO_VENDOR_DIR)
	CARGO_HOME= $(CARGO) vendor-filterer --platform='*-*-linux-gnu' --platform '*-*-linux-gnueabi' \
	  --exclude-crate-path system-deps#src/tests/lib/libteststatic.a --all-features \
	 $(CARGO_VENDOR_DIR)
	git add -f $(CARGO_VENDOR_DIR)
	git commit -m "Update vendored rust crates" || true
	git reset --hard && git clean -fdx

	uscan --download-current-version --destdir=..
	rm debian/source/include-binaries
	dpkg-source --include-binaries -b .
	git add debian/source/include-binaries
	git commit -m "Update debian/source/include-binaries" || true
	git reset --hard && git clean -fdx
