#!/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

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

[ "$EFI_USE_ACPI" = "y" ] || EFI_USE_DTB=y

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_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_DTB" = "y" ]; then
		qemu_args+=(-machine acpi=off)
		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[@]}"
}

uefi_shell_run
