menu "Payload"

config NO_DEFAULT_PAYLOAD
	bool

choice
	prompt "Add a payload"
	default PAYLOAD_NONE if NO_DEFAULT_PAYLOAD || !ARCH_X86
	default PAYLOAD_SEABIOS if ARCH_X86

config PAYLOAD_NONE
	bool "None"
	help
	  Select this option if you want to create an "empty" coreboot
	  ROM image for a certain mainboard, i.e. a coreboot ROM image
	  which does not yet contain a payload.

	  For such an image to be useful, you have to use 'cbfstool'
	  to add a payload to the ROM image later.

config PAYLOAD_ELF
	bool "An ELF executable payload"
	help
	  Select this option if you have a payload image (an ELF file)
	  which coreboot should run as soon as the basic hardware
	  initialization is completed.

	  You will be able to specify the location and file name of the
	  payload image later.

config PAYLOAD_BAYOU
	bool "Bayou"
	help
	  Select this option if you want to set bayou as your primary
	  payload.

source "payloads/external/*/Kconfig.name"

endchoice

source "payloads/external/*/Kconfig"

source "payloads/bayou/Kconfig"

config PAYLOAD_FILE
	string "Payload path and filename"
	depends on PAYLOAD_ELF
	default "payload.elf"
	help
	  The path and filename of the ELF executable file to use as payload.

# TODO: Defined if no payload? Breaks build?
config COMPRESSED_PAYLOAD_LZMA
	bool "Use LZMA compression for payloads"
	default y
	depends on !PAYLOAD_NONE && !PAYLOAD_LINUX
	help
	  In order to reduce the size payloads take up in the ROM chip
	  coreboot can compress them using the LZMA algorithm.

config PAYLOAD_OPTIONS
	string
	default ""
	help
	  Additional cbfstool options for the payload

config PAYLOAD_IS_FLAT_BINARY
	def_bool n
	help
	  Add the payload to cbfs as a flat binary type instead of as an
	  elf payload

menu "Secondary Payloads"

config COREINFO_SECONDARY_PAYLOAD
	bool "Load coreinfo as a secondary payload"
	default n
	depends on ARCH_X86
	help
	  coreinfo can be loaded as a secondary payload under SeaBIOS, GRUB,
	  or any other payload that can load additional payloads.

config MEMTEST_SECONDARY_PAYLOAD
	bool "Load Memtest86+ as a secondary payload"
	default n
	depends on ARCH_X86
	help
	  Memtest86+ can be loaded as a secondary payload under SeaBIOS, GRUB,
	  or any other payload that can load additional payloads.

choice
	prompt "Memtest86+ version"
	default MEMTEST_STABLE
	depends on MEMTEST_SECONDARY_PAYLOAD

config MEMTEST_STABLE
	bool "Stable"
	help
	  Stable Memtest86+ version.

	  For reproducible builds, this option must be selected.
config MEMTEST_MASTER
	bool "Master"
	help
	  Newest Memtest86+ version.

	  This option will fetch the newest version of the Memtest86+ code,
	  updating as new changes are committed.  This makes the build
	  non-reproducible, as it can fetch different code each time.
endchoice

config NVRAMCUI_SECONDARY_PAYLOAD
	bool "Load nvramcui as a secondary payload"
	default n
	depends on ARCH_X86
	help
	  nvramcui can be loaded as a secondary payload under SeaBIOS, GRUB,
	  or any other payload that can load additional payloads.

config TINT_SECONDARY_PAYLOAD
	bool "Load tint as a secondary payload"
	default n
	depends on ARCH_X86
	help
	  tint can be loaded as a secondary payload under SeaBIOS, GRUB,
	  or any other payload that can load additional payloads.

endmenu # "Secondary Payloads"
endmenu