config BR2_PACKAGE_PETITBOOT
	bool "petitboot"
	depends on BR2_PACKAGE_KEXEC_ARCH_SUPPORTS || BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS
	depends on BR2_USE_MMU # lvm2
	depends on BR2_USE_WCHAR # elfutils, kexec-lite
	depends on !BR2_STATIC_LIBS # elfutils, kexec-lite, lvm2
	depends on BR2_TOOLCHAIN_HAS_THREADS # elfutils, kexec-lite, lvm2
	depends on BR2_PACKAGE_HAS_UDEV
	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 || !BR2_PACKAGE_KEXEC_ARCH_SUPPORTS # kexec
	select BR2_PACKAGE_ELFUTILS
	select BR2_PACKAGE_LVM2 # devmapper
	select BR2_PACKAGE_NCURSES
	select BR2_PACKAGE_NCURSES_WCHAR
	# run-time dependencies
	select BR2_PACKAGE_KEXEC if !BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS
	select BR2_PACKAGE_KEXEC_LITE if BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS && !BR2_PACKAGE_KEXEC
	select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC
	select BR2_PACKAGE_NVME if ( BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le )
	select BR2_PACKAGE_POWERPC_UTILS if ( BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le )
	help
	  Petitboot is a small kexec-based bootloader

	  NOTE: petitboot looks best in a UTF-8 locale; be sure there
	  is one listed in BR2_GENERATE_LOCALE.

	  http://www.kernel.org/pub/linux/kernel/people/geoff/petitboot/petitboot.html

if BR2_PACKAGE_PETITBOOT

config BR2_PACKAGE_PETITBOOT_GETTY_PORT
	string "TTY port(s)"
	default "console"
	help
	  Specify a space-separated list of ports to run the petitboot
	  UI on. Wildcards are allowed. Example: "hvc* ttys0 ttyS*"

endif # BR2_PACKAGE_PETITBOOT

comment "petitboot needs a toolchain w/ wchar, dynamic library, threads, udev /dev management"
	depends on BR2_PACKAGE_KEXEC_ARCH_SUPPORTS
	depends on BR2_USE_MMU
	depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS || \
		!BR2_TOOLCHAIN_HAS_THREADS || \
		!BR2_PACKAGE_HAS_UDEV

comment "petitboot w/ kexec needs a toolchain w/ headers >= 3.17"
	depends on BR2_PACKAGE_KEXEC_ARCH_SUPPORTS && !BR2_PACKAGE_KEXEC_LITE_ARCH_SUPPORTS
	depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
