## SPDX-License-Identifier: GPL-2.0-only

config PXE
	prompt "Add a PXE ROM"
	def_bool n
	depends on ARCH_X86

if PXE
menu "PXE Options"

choice
	prompt "PXE ROM to use"
	default PXE_ROM

config PXE_ROM
	bool "Add an existing PXE ROM image"
	help
	  Select this option if you have a PXE ROM image that you would
	  like to add to your ROM.

config BUILD_IPXE
	bool "Build and add an iPXE ROM"
	help
	  Select this option to fetch and build a ROM from the iPXE project.

endchoice

config PXE_ROM_FILE
	string "PXE ROM filename"
	depends on PXE_ROM
	default "pxe.rom"
	help
	  The path and filename of the file to use as PXE ROM.

config PXE_ROM_ID
	string "network card PCI IDs"
	default "10ec,8168"
	help
	  The comma-separated PCI vendor and device ID that would associate
	  your PXE ROM to your network card.

	  Example: 10ec,8168

	  In the above example 10ec is the PCI vendor ID (in hex, but without
	  the "0x" prefix) and 8168 specifies the PCI device ID of the
	  network card (also in hex, without "0x" prefix).

	  Under GNU/Linux you can run `lspci -nn` to list the IDs of your PCI devices.

if BUILD_IPXE

choice
	prompt "iPXE version"
	default IPXE_STABLE

config IPXE_STABLE
	bool "2022.1"
	help
	  iPXE uses a rolling release with no stable version, for
	  reproducibility, use the last commit of a given month as the
	  'stable' version.
	  This is iPXE from the end of January, 2022.

config IPXE_MASTER
	bool "master"
	help
	  Newest iPXE version.

endchoice

config IPXE_SERIAL_CONSOLE
	bool "Enable iPXE serial console"
	def_bool y
	help
	  Enable/disable iPXE serial console. Since SeaBIOS supports serial
	  console this option might be helpful to avoid duplicated output.

	  Unselect to let only SeaBIOS handle printing output.

config IPXE_NO_PROMPT
	bool "Do not show prompt to boot from PXE"
	default n
	help
	  Don't wait for the user to press Ctrl-B.
	  The PXE still can be run as it shows up in SeaBIOS's payload list.

config IPXE_ADD_SCRIPT
	bool "Embed an iPXE script for automated provisioning"
	default n
	help
	  Enable to embed a script that is run instead of an iPXE shell.

config IPXE_SCRIPT
	string "Embedded iPXE script path and filename"
	depends on IPXE_ADD_SCRIPT
	default ""
	help
	  Path to a script that is embedded into the iPXE binary.
	  Example: startup.ipxe

	  Uses the ipxe script instead showing the prompt:
	  "Press Ctrl-B to start iPXE..."

config IPXE_HAS_HTTPS
	bool "Enable HTTPS protocol"
	default y
	help
	  Enable HTTPS protocol, which allows you to encrypt all communication
	  with a web server and to verify the server's identity

endif # BUILD_IPXE
endmenu

endif # PXE
