#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
#DH_VERBOSE = 1

# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/*
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk

# main packaging script based on dh7 syntax
%:
	dh $@

override_dh_install:
	dh_install
	# It is so true, that remoteproc_scp firmware is an 100 bytes zero-filled file.
	# It is required by imgsys which is used by mediatek-camd.
	dd if=/dev/zero of=debian/linux-firmware-mediatek-genio/lib/firmware/remoteproc_scp bs=100 count=1

override_dh_installdeb:
	dh_installdeb \
		--define DIVERSIONS=@debian/diversions \
		--define COMMON=@debian/$(DEB_SOURCE).common

override_dh_strip:
	# Don't strip anything; it's all pre-built binary blobs and some of
	# it is foreign architecture anyway

LINUXFIRMWARECOMMIT_1:= bdc8ff9f974d541c296212f208ac23bdbdd076d1
LINUXFIRMWAREFILES_1 := \
	mediatek/mt7668pr2h.bin \
	mediatek/mt8183/scp.img \
	mediatek/mt7663_n9_rebb.bin \
	mediatek/mt7663_n9_v3.bin \
	mediatek/mt7663pr2h.bin \
	mediatek/mt7663pr2h_rebb.bin \

LINUXFIRMWARECOMMIT_2:= b19cbdca78ab2adfd210c91be15a22568e8b8cae
LINUXFIRMWAREFILES_2 := \
	mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin \
	mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin \
	mediatek/WIFI_RAM_CODE_MT7961_1.bin

MEDIATEKFIRMWARETAG:= rity-kirkstone-v24.1
MEDIATEKFIRMWAREFILES := \
	mt8188/scp.img \
	mt8195/scp.img


MEDIATEK_DEVICES := mt8370 mt8390 mt8395
MEDIATEK_APUSYS_MODEL_mt8370 := mt8188
MEDIATEK_APUSYS_MODEL_mt8390 := mt8188
MEDIATEK_APUSYS_MODEL_mt8395 := mt8195
MEDIATEK_APUSYS_COMMIT_mt8188 := 3e31bb965867736dc19cfa8438f35e9e40ad6e60
MEDIATEK_APUSYS_COMMIT_mt8195 := 2502c4bf3eabec12ef1d4a8098f419b2f1a2f6e0
MEDIATEK_APUSYS_FIRMWARE_FILES := apusys.sig.img cam_vpu1.img cam_vpu2.img cam_vpu3.img
MEDIATEK_APUSYS_URL = https://gitlab.com/mediatek/aiot/bsp/mtk-apusys-firmware

MEDIATEK_MALI_COMMIT := 46c07702f90ee22bfbe640b89b1fab060b86eb02
MEDIATEK_MALI_FILES := valhall-1691526.wa
MEDIATEK_MALI_REPO_DIR := /mt8188/r48p0/firmware
MEDIATEK_MALI_URL = https://gitlab.com/mediatek/aiot/rity/libmali

# get-orig-file,output-dir,source-file,repo-url,commit-id
get-orig-file = mkdir -p $(1)/$(dir $(2)) ; wget -O $(1)/$(2) -- $(3)/$(2)?id=$(4);
# get-orig-file-gitlab,output-dir,filename,repo-url,git-ref,repo-dir
get-orig-file-gitlab = mkdir -p $(1)/$(dir $(2)) ; wget -O $(1)/$(2) -- $(3)/-/raw/$(4)$(5)/$(2);

reproducible-tar = LC_ALL=C tar --sort=name --format=posix \
  --pax-option=exthdr.name=%d/PaxHeaders/%f \
  --pax-option=delete=atime,delete=ctime \
  --clamp-mtime --mtime='UTC 2024-01-01' \
  --numeric-owner --owner=0 --group=0 \
  --mode=go+u,go-w

get-orig-source:
	rm -rf linux-firmware mediatek

	set -x; $(foreach file,$(LINUXFIRMWAREFILES_1),$(call get-orig-file,linux-firmware,$(file),\
		https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain,$(LINUXFIRMWARECOMMIT_1)))
	set -x; $(foreach file,$(LINUXFIRMWAREFILES_2),$(call get-orig-file,linux-firmware,$(file),\
		https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain,$(LINUXFIRMWARECOMMIT_2)))
	set -x; $(foreach file,$(MEDIATEKFIRMWAREFILES),$(call get-orig-file-gitlab,mediatek/mediatek,$(file),\
		https://gitlab.com/mediatek/aiot/rity/meta-mediatek-bsp,$(MEDIATEKFIRMWARETAG),/recipes-kernel/linux-firmware/files))

	set -x; $(foreach dev,$(MEDIATEK_DEVICES), \
		$(foreach file,$(MEDIATEK_APUSYS_FIRMWARE_FILES), \
			$(call get-orig-file-gitlab,mediatek/mediatek/$(dev),$(file),$(MEDIATEK_APUSYS_URL),$(MEDIATEK_APUSYS_COMMIT_$(MEDIATEK_APUSYS_MODEL_$(dev))),)))

	set -x; $(foreach file,$(MEDIATEK_MALI_FILES), \
	          $(call get-orig-file-gitlab,mediatek,$(file),$(MEDIATEK_MALI_URL),$(MEDIATEK_MALI_COMMIT),$(MEDIATEK_MALI_REPO_DIR)))

	mkdir $(DEB_SOURCE)-$(DEB_VERSION_UPSTREAM)
	$(call reproducible-tar) -czf ../$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM).orig.tar.gz $(DEB_SOURCE)-$(DEB_VERSION_UPSTREAM)
	$(call reproducible-tar) -czf ../$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM).orig-linux-firmware.tar.gz linux-firmware
	$(call reproducible-tar) -czf ../$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM).orig-mediatek.tar.gz mediatek
	rmdir $(DEB_SOURCE)-$(DEB_VERSION_UPSTREAM)
