#!/usr/bin/make -f

include /usr/share/dpkg/architecture.mk

export DEB_BUILD_MAINT_OPTIONS := hardening=+all optimize=-lto
export DEB_LDFLAGS_MAINT_APPEND=-Wl,-z,defs
export DEB_CFLAGS_MAINT_APPEND=-Wno-error
export DEB_CXXFLAGS_MAINT_APPEND=-Wno-error

# Force Rust 1.82 path
export PATH := /usr/lib/rust-1.82/bin:$(PATH)

# --- Architecture & Feature Logic ---

# 1. Intel QSV: Only for x86
ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386))
    confflags += --enable-qsv
else
    confflags += --disable-qsv
endif

# 2. NVENC/VCE: Only for amd64, i386, and arm64
ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 i386))
    confflags += --enable-nvenc --enable-vce
else
    confflags += --disable-nvenc --disable-vce
endif

# 3. Libdovi (Rust): Disable on ARM if cargo-c is missing
ifeq (,$(wildcard /usr/bin/cargo-cbuild)$(wildcard /usr/lib/rust-1.82/bin/cargo-cbuild))
    confflags += --disable-libdovi
else
    confflags += --enable-libdovi
endif

# 4. ARM specific optimization (armv7l / armhf)
ifeq ($(DEB_HOST_ARCH), armhf)
    export DEB_CFLAGS_MAINT_APPEND += -mfpu=neon -mfloat-abi=hard
endif

# --- i386 Specific Build Fix ---
ifeq ($(DEB_HOST_ARCH), i386)
    # Disable assembly to prevent ELF PIE/PLT linker errors
    confflags += --disable-asm
endif

%:
	dh $@ --builddirectory=$(DEB_BUILD_GNU_TYPE)

override_dh_auto_configure:
	test -d debian/download && mv debian/download ./ || true
	bash ./configure \
		--prefix=/usr \
		--host=$(DEB_HOST_GNU_TYPE) \
		--build=$(DEB_BUILD_GNU_TYPE) \
		--debug=std \
		--disable-fdk-aac \
		--disable-numa \
		--enable-x265 \
		--disable-df-fetch \
		--disable-df-verify \
		$(confflags) \
		CC="$(CC)" CXX="$(CXX)" \
		CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" CPPFLAGS="$(CPPFLAGS)"

override_dh_auto_build:
	# Use environment override to ensure no assembly is triggered in sub-makes
	ENABLE_ASSEMBLY=OFF PATH="/usr/lib/rust-1.82/bin:$(PATH)" dh_auto_build --builddirectory=$(DEB_BUILD_GNU_TYPE)

override_dh_installchangelogs:
	dh_installchangelogs NEWS.markdown