#!/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_BNI_PATH:=$(PWD)/debian/tmp/bni/boot/u-boot
BOOT_EVM_PATH:=$(PWD)/debian/tmp/evm/boot/u-boot

BUILD_DIR:=$(PWD)/debian/build
BUILD_DIR_BNI_R5:=$(BUILD_DIR)/bni/r5
BUILD_DIR_BNI_A53:=$(BUILD_DIR)/bni/a53
BUILD_DIR_EVM_R5:=$(BUILD_DIR)/evm/r5
BUILD_DIR_EVM_A53:=$(BUILD_DIR)/evm/a53


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

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

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

# Common make options for BNI R5 image
MAKE_OPTS_BNI_R5= ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=$(BUILD_DIR_BNI_R5)
# Common make options for BNI A53 image
MAKE_OPTS_BNI_A53= ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- O=$(BUILD_DIR_BNI_A53)
# Common make options for EVM R5 image
MAKE_OPTS_EVM_R5= ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=$(BUILD_DIR_EVM_R5)
# Common make options for EVM A53 image
MAKE_OPTS_EVM_A53= ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- O=$(BUILD_DIR_EVM_A53)

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

#export DH_VERBOSE=1
export LDFLAGS=
export CFLAGS=

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_BNI_R5)
	mkdir -p $(BUILD_DIR_BNI_A53)
	mkdir -p $(BUILD_DIR_EVM_R5)
	mkdir -p $(BUILD_DIR_EVM_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 $(ATF_BRANCH) --single-branch --depth 1 $(BUILD_DIR)/trusted-firmware-a
	\
	${MAKE_OPTS_OPTEE} make -C $(BUILD_DIR)/optee_os
	${MAKE_OPTS_TFA} make -C $(BUILD_DIR)/trusted-firmware-a PLAT=k3
	\
	make $(MAKE_OPTS_EVM_R5) am64x_evm_r5_defconfig
	make $(MAKE_OPTS_EVM_A53) am64x_evm_a53_defconfig
	make $(MAKE_OPTS_BNI_R5) am64x_bni_r5_defconfig
	make $(MAKE_OPTS_BNI_A53) am64x_bni_a53_defconfig

override_dh_auto_build:
	BINMAN_INDIRS=${TI_LINUX_FIRMWARE_PATH} make -j $(shell nproc) $(MAKE_OPTS_EVM_R5)
	BINMAN_INDIRS=${TI_LINUX_FIRMWARE_PATH} BL31=${ATF_PATH} TEE=${OPTEE_OS_PATH} make -j $(shell nproc) $(MAKE_OPTS_EVM_A53)
	\
	BINMAN_INDIRS=${TI_LINUX_FIRMWARE_PATH} make -j $(shell nproc) $(MAKE_OPTS_BNI_R5)
	BINMAN_INDIRS=${TI_LINUX_FIRMWARE_PATH} BL31=${ATF_PATH} TEE=${OPTEE_OS_PATH} make -j $(shell nproc) $(MAKE_OPTS_BNI_A53)


override_dh_auto_install:
	mkdir -p $(BOOT_EVM_PATH)
	mkdir -p $(BOOT_BNI_PATH)
	cp $(BUILD_DIR_EVM_R5)/tiboot3-am64x_sr2-hs-fs-evm.bin $(BOOT_EVM_PATH)/tiboot3.bin
	cp $(BUILD_DIR_EVM_A53)/tispl.bin $(BOOT_EVM_PATH)
	cp $(BUILD_DIR_EVM_A53)/u-boot.img $(BOOT_EVM_PATH)
	cp $(BUILD_DIR_BNI_R5)/tiboot3-am64x_sr2-hs-fs-evm.bin $(BOOT_BNI_PATH)/tiboot3.bin
	cp $(BUILD_DIR_BNI_A53)/tispl.bin $(BOOT_BNI_PATH)
	cp $(BUILD_DIR_BNI_A53)/u-boot.img $(BOOT_BNI_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 $@
