config BR2_TARGET_EDK2_ARCH_SUPPORTS
	bool
	default y if BR2_aarch64
	default y if BR2_i386
	default y if BR2_loongarch64
	default y if BR2_RISCV_64
	default y if BR2_x86_64

config BR2_TARGET_EDK2
	bool "EDK2"
	depends on BR2_TARGET_EDK2_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5
	select BR2_PACKAGE_EDK2_PLATFORMS
	help
	  EDK II is a modern, feature-rich, cross-platform firmware
	  development environment for the UEFI and PI specifications.

	  https://github.com/tianocore/tianocore.github.io/wiki/EDK-II

if BR2_TARGET_EDK2

choice
	prompt "Platform"
	default BR2_TARGET_EDK2_PLATFORM_OVMF_I386 if BR2_i386
	default BR2_TARGET_EDK2_PLATFORM_OVMF_LOONGARCH64 if \
		BR2_loongarch64
	default BR2_TARGET_EDK2_PLATFORM_OVMF_RISCV if BR2_RISCV_64
	default BR2_TARGET_EDK2_PLATFORM_OVMF_X64 if BR2_x86_64
	default BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU if BR2_aarch64

config BR2_TARGET_EDK2_PLATFORM_OVMF_I386
	bool "i386"
	depends on BR2_i386 || BR2_x86_64
	help
	  Platform configuration for a generic i386 target.
	  This platform will boot from flash address 0x0.

config BR2_TARGET_EDK2_PLATFORM_OVMF_LOONGARCH64
	bool "LoongArch64"
	depends on BR2_loongarch64
	help
	  Platform configuration for LoongArch QEMU targeting the
	  Virt machine. This platform will only boot from flash
	  address 0x1c000000. It should therefore be used as the first
	  bootloader.

config BR2_TARGET_EDK2_PLATFORM_OVMF_RISCV
	bool "RISC-V"
	depends on BR2_RISCV_64
	help
	  Platform configuration for RISC-V QEMU targeting the Virt
	  machine. This platform will only boot from flash address
	  0x0. It should therefore be used as the first bootloader.

config BR2_TARGET_EDK2_PLATFORM_OVMF_X64
	bool "x86-64"
	depends on BR2_x86_64
	help
	  Platform configuration for a generic x86-64 target.
	  This platform will boot from flash address 0x0.
	  It should therefore be used as the first bootloader.

config BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU
	bool "ARM Virt Qemu (flash)"
	depends on BR2_aarch64
	help
	  Platform configuration for QEMU targeting the Virt machine.
	  This platform will only boot from flash address 0x0.
	  It should therefore be used as the first bootloader.

config BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU_KERNEL
	bool "ARM Virt Qemu (kernel)"
	depends on BR2_aarch64
	help
	  Platform configuration for QEMU targeting the Virt machine.
	  This platform can boot from either flash address 0x0 or via
	  the Linux boot protocol. It can therefore be loaded by a
	  previous bootloader like ARM Trusted Firmware or OP-TEE.

config BR2_TARGET_EDK2_PLATFORM_ARM_SGI575
	bool "ARM SGI-575"
	depends on BR2_aarch64
	help
	  Platform configuration for ARM SGI-575 on ARM's
	  Fixed Virtual Platform (FVP).

config BR2_TARGET_EDK2_PLATFORM_ARM_VEXPRESS_FVP_AARCH64
	bool "ARM VExpress FVP Aarch64"
	depends on BR2_aarch64
	help
	  Platform configuration for ARM Versatile Express targeting
	  the Aarch64 Fixed Virtual Platform (FVP).

config BR2_TARGET_EDK2_PLATFORM_SOLIDRUN_ARMADA80X0MCBIN
	bool "SolidRun MacchiatoBin"
	depends on BR2_aarch64
	depends on BR2_TARGET_ARM_TRUSTED_FIRMWARE
	select BR2_PACKAGE_EDK2_NON_OSI
	select BR2_PACKAGE_HOST_DTC
	select BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP
	help
	  Platform configuration for the SolidRun MacchiatoBin.

config BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA
	bool "QEMU SBSA"
	depends on BR2_aarch64
	depends on BR2_TARGET_ARM_TRUSTED_FIRMWARE
	depends on !BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33
	help
	  Platform configuration for QEMU targeting the SBSA reference
	  machine.

comment "QEMU SBSA depends on ATF not using EDK2 as BL33"
	depends on BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33

endchoice

config BR2_TARGET_EDK2_OVMF_DEBUG_ON_SERIAL
	bool "OVMF Debug on Serial"
	depends on BR2_ENABLE_DEBUG
	depends on BR2_TARGET_EDK2_PLATFORM_OVMF_I386 || \
		BR2_TARGET_EDK2_PLATFORM_OVMF_X64
	help
	  When EDK2 OVMF is built with debug, messages are printed to
	  IO port 0x402. Those messages are not shown in the normal
	  Qemu emulated serial port. Enabling this option will print
	  debug messages on the emulated serial port, potentially
	  mixing messages with UEFI serial console output.

	  See OVMF README:
	  https://github.com/tianocore/edk2/blob/master/OvmfPkg/README

config BR2_TARGET_EDK2_EXTRA_BUILD_OPTS
	string "Extra build options"
	help
	  EDK2 build may include extra options. Those are usually in
	  the form of "-D SOMEFLAG_ENABLE" and might be specific for a
	  processor architecture or a platform. For example: "-D
	  NETWORK_HTTP_BOOT_ENABLE", "-D NETWORK_TLS_ENABLE", ...

	  Those options are generally documented in their respective
	  packages. See for example:
	  https://github.com/tianocore/edk2/blob/master/OvmfPkg/README

	  This configuration is an arbitrary string that will be
	  passed to the build command.

config BR2_TARGET_EDK2_FD_NAME
	string
	default "OVMF" if BR2_TARGET_EDK2_PLATFORM_OVMF_I386
	default "OVMF" if BR2_TARGET_EDK2_PLATFORM_OVMF_X64
	default "QEMU_EFI" if BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU
	default "QEMU_EFI" if BR2_TARGET_EDK2_PLATFORM_ARM_VIRT_QEMU_KERNEL
	default "QEMU_EFI" if BR2_TARGET_EDK2_PLATFORM_OVMF_LOONGARCH64
	default "BL33_AP_UEFI" if BR2_TARGET_EDK2_PLATFORM_ARM_SGI575
	default "FVP_AARCH64_EFI" if BR2_TARGET_EDK2_PLATFORM_ARM_VEXPRESS_FVP_AARCH64
	default "ARMADA_EFI" if BR2_TARGET_EDK2_PLATFORM_SOLIDRUN_ARMADA80X0MCBIN

endif

comment "EDK2 needs a toolchain w/ gcc >= 5"
	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5
