#!/usr/bin/make -f

# Disable tests which are not working
# for cross builds at the moment
# Although we override dh_auto_test we
# set this ENV to silence some warnings
export DEB_BUILD_OPTIONS=nocheck

PWD:=$(shell pwd)
BOOT_BEAGLEY_AI_PATH:=$(PWD)/debian/tmp/beagley-ai/boot/u-boot
BOOT_BVS_MA_PATH:=$(PWD)/debian/tmp/bvs-ma/boot/u-boot

BUILD_DIR:=$(PWD)/debian/build
BUILD_DIR_BEAGLEY_AI_R5:=$(BUILD_DIR)/beagley-ai/r5
BUILD_DIR_BEAGLEY_AI_A53:=$(BUILD_DIR)/beagley-ai/a53
BUILD_DIR_BVS_MA_R5:=$(BUILD_DIR)/bvs-ma/r5
BUILD_DIR_BVS_MA_A53:=$(BUILD_DIR)/bvs-ma/a53


# TI Linux Firmware is a build dependency
TI_LINUX_FIRMWARE_PATH:=$(BUILD_DIR)/ti-linux-firmware/
TI_LINUX_FIRMWARE_BRANCH:=11.02.11

# OP-TEE is a build dependency
OPTEE_OS_PATH:=$(BUILD_DIR)/optee_os/out/arm-plat-k3/core/tee-pager_v2.bin
OPTEE_OS_BRANCH:=4.9.0

# ARM Trusted Firmware is a build dependency
TFA_PATH:=$(BUILD_DIR)/trusted-firmware-a/build/k3/lite/release/bl31.bin
TFA_BRANCH:=lts-v2.14.1

# Common make options for BeagleY-AI R5 image
MAKE_OPTS_BEAGLEY_AI_R5= ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=$(BUILD_DIR_BEAGLEY_AI_R5)
# Common make options for BeagleY-AI A53 image
MAKE_OPTS_BEAGLEY_AI_A53= ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- O=$(BUILD_DIR_BEAGLEY_AI_A53)
# Common make options for BVS-MA R5 image
MAKE_OPTS_BVS_MA_R5= ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=$(BUILD_DIR_BVS_MA_R5)
# Common make options for BVS-MA A53 image
MAKE_OPTS_BVS_MA_A53= ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- O=$(BUILD_DIR_BVS_MA_A53)

# Common make options for OP-TEE
MAKE_OPTS_OPTEE:=CROSS_COMPILE=arm-linux-gnueabihf- CROSS_COMPILE64=aarch64-linux-gnu- PLATFORM=k3-am62x CFG_ARM64_core=y
# Common make options for Trusted Firmware A
MAKE_OPTS_TFA:=CC=aarch64-linux-gnu-gcc ARCH=aarch64 SPD=opteed TARGET_BOARD=lite PLAT=k3

#export DH_VERBOSE=1
export LDFLAGS=
export CFLAGS=-Wno-error=date-time

override_dh_auto_test:
	# skip tests.

override_dh_auto_clean:
	rm -rf $(BUILD_DIR)
	rm -f debian/files
	rm -rf debian/tmp

override_dh_auto_configure:
	mkdir -p $(BUILD_DIR)
	mkdir -p $(BUILD_DIR_BEAGLEY_AI_R5)
	mkdir -p $(BUILD_DIR_BEAGLEY_AI_A53)
	mkdir -p $(BUILD_DIR_BVS_MA_R5)
	mkdir -p $(BUILD_DIR_BVS_MA_A53)
	\
	git clone https://git.ti.com/git/processor-firmware/ti-linux-firmware.git --branch $(TI_LINUX_FIRMWARE_BRANCH) --single-branch --depth 1 $(BUILD_DIR)/ti-linux-firmware
	git clone https://github.com/OP-TEE/optee_os.git --branch $(OPTEE_OS_BRANCH) --single-branch --depth 1 $(BUILD_DIR)/optee_os
	git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git --branch $(TFA_BRANCH) --single-branch --depth 1 $(BUILD_DIR)/trusted-firmware-a
	\
	make -C $(BUILD_DIR)/optee_os $(MAKE_OPTS_OPTEE)
	make -C $(BUILD_DIR)/trusted-firmware-a $(MAKE_OPTS_TFA)
	\
	make $(MAKE_OPTS_BEAGLEY_AI_R5) am67a_beagley_ai_r5_defconfig
	make $(MAKE_OPTS_BEAGLEY_AI_A53) am67a_beagley_ai_a53_defconfig
	make $(MAKE_OPTS_BVS_MA_R5) am67a_bvs_ma_r5_defconfig
	make $(MAKE_OPTS_BVS_MA_A53) am67a_bvs_ma_a53_defconfig

override_dh_auto_build:
	BINMAN_INDIRS=${TI_LINUX_FIRMWARE_PATH} make -j $(shell nproc) $(MAKE_OPTS_BEAGLEY_AI_R5)
	BINMAN_INDIRS=${TI_LINUX_FIRMWARE_PATH} BL31=${TFA_PATH} TEE=${OPTEE_OS_PATH} make -j $(shell nproc) $(MAKE_OPTS_BEAGLEY_AI_A53)
	\
	BINMAN_INDIRS=${TI_LINUX_FIRMWARE_PATH} make -j $(shell nproc) $(MAKE_OPTS_BVS_MA_R5)
	BINMAN_INDIRS=${TI_LINUX_FIRMWARE_PATH} BL31=${TFA_PATH} TEE=${OPTEE_OS_PATH} make -j $(shell nproc) $(MAKE_OPTS_BVS_MA_A53)

override_dh_auto_install:
	mkdir -p $(BOOT_BEAGLEY_AI_PATH)
	mkdir -p $(BOOT_BVS_MA_PATH)
	cp $(BUILD_DIR_BEAGLEY_AI_R5)/tiboot3-j722s-hs-fs-evm.bin $(BOOT_BEAGLEY_AI_PATH)/tiboot3.bin
	cp $(BUILD_DIR_BEAGLEY_AI_A53)/tispl.bin $(BOOT_BEAGLEY_AI_PATH)
	cp $(BUILD_DIR_BEAGLEY_AI_A53)/u-boot.img $(BOOT_BEAGLEY_AI_PATH)
	cp $(BUILD_DIR_BVS_MA_R5)/tiboot3-j722s-hs-fs-evm.bin $(BOOT_BVS_MA_PATH)/tiboot3.bin
	cp $(BUILD_DIR_BVS_MA_A53)/tispl.bin $(BOOT_BVS_MA_PATH)
	cp $(BUILD_DIR_BVS_MA_A53)/u-boot.img $(BOOT_BVS_MA_PATH)

# Override the default dh_builddeb target to use xz compression (otherwise when using Ubuntu for packaging .zst will be used which isn't supported in bullseye)
override_dh_builddeb:
	dh_builddeb -- -Zxz

%:
	dh $@
