#!/bin/bash

if [ $# -eq 0 ]; then
	echo "Usage $0 TEST_CASE [QEMU_ARGS]"
	exit 2
fi

if [ ! -f config.mak ]; then
	echo "run './configure --enable-efi && make' first. See ./configure -h"
	exit 2
fi
source config.mak
source scripts/arch-run.bash

if [ -f /usr/share/qemu-efi-aarch64/QEMU_EFI.fd ]; then
	DEFAULT_UEFI=/usr/share/qemu-efi-aarch64/QEMU_EFI.fd
elif [ -f /usr/share/edk2/aarch64/QEMU_EFI.silent.fd ]; then
	DEFAULT_UEFI=/usr/share/edk2/aarch64/QEMU_EFI.silent.fd
fi

KERNEL_NAME=$1

: "${EFI_SRC:=$TEST_DIR}"
: "${EFI_UEFI:=$DEFAULT_UEFI}"
: "${EFI_TEST:=efi-tests}"
: "${EFI_CASE:=$(basename $KERNEL_NAME .efi)}"
: "${EFI_TESTNAME:=$TESTNAME}"
: "${EFI_TESTNAME:=$EFI_CASE}"
: "${EFI_CASE_DIR:="$EFI_TEST/$EFI_TESTNAME"}"
: "${EFI_VAR_GUID:=97ef3e03-7329-4a6a-b9ba-6c1fdcc5f823}"

if [ ! -f "$EFI_UEFI" ]; then
	echo "UEFI firmware not found."
	echo "Please specify the path with the env variable EFI_UEFI"
	exit 2
fi

# Remove the TEST_CASE from $@
shift 1

# Fish out the arguments for the test, they should be the next string
# after the "-append" option
qemu_args=()
cmd_args=()
while (( "$#" )); do
	if [ "$1" = "-append" ]; then
		cmd_args=$2
		shift 2
	else
		qemu_args+=("$1")
		shift 1
	fi
done
if [ "$EFI_USE_ACPI" != "y" ]; then
	qemu_args+=(-machine acpi=off)
fi

if [ "$EFI_CASE" = "_NO_FILE_4Uhere_" ]; then
	EFI_CASE_DIR="$EFI_TEST/dummy"
	mkdir -p "$EFI_CASE_DIR"
	$TEST_DIR/run \
		$EFI_CASE \
		-bios "$EFI_UEFI" \
		-drive file.dir="$EFI_CASE_DIR/",file.driver=vvfat,file.rw=on,format=raw,if=virtio \
		"${qemu_args[@]}"
	exit
fi

uefi_shell_run()
{
	mkdir -p "$EFI_CASE_DIR"
	cp "$EFI_SRC/$EFI_CASE.efi" "$EFI_CASE_DIR/"
	echo "@echo -off" > "$EFI_CASE_DIR/startup.nsh"
	if [ "$EFI_USE_ACPI" != "y" ]; then
		FDT_BASENAME="dtb"
		UEFI_SHELL_RUN=y $TEST_DIR/run -machine dumpdtb="$EFI_CASE_DIR/$FDT_BASENAME" "${qemu_args[@]}"
		echo "setvar fdtfile -guid $EFI_VAR_GUID -rt =L\"$FDT_BASENAME\""  >> "$EFI_CASE_DIR/startup.nsh"
	fi
	echo "$EFI_CASE.efi" "${cmd_args[@]}" >> "$EFI_CASE_DIR/startup.nsh"

	UEFI_SHELL_RUN=y $TEST_DIR/run \
		-bios "$EFI_UEFI" \
		-drive file.dir="$EFI_CASE_DIR/",file.driver=vvfat,file.rw=on,format=raw,if=virtio \
		"${qemu_args[@]}"
}

if [ "$EFI_DIRECT" = "y" ]; then
	$TEST_DIR/run \
		$KERNEL_NAME \
		-append "$(basename $KERNEL_NAME) ${cmd_args[*]}" \
		-bios "$EFI_UEFI" \
		"${qemu_args[@]}"
else
	uefi_shell_run
fi
