## 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 PXE_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 PXE_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 PXE_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 PXE_SCRIPT
	string "Embedded iPXE script path and filename"
	depends on PXE_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 PXE_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
