config BR2_TARGET_GRUB2_ARCH_SUPPORTS
	bool
	default y if BR2_i386
	default y if BR2_x86_64

config BR2_TARGET_GRUB2
	bool "grub2"
	depends on BR2_TARGET_GRUB2_ARCH_SUPPORTS
	depends on BR2_USE_WCHAR
	help
	  GNU GRUB is a Multiboot boot loader. It was derived from
	  GRUB, the GRand Unified Bootloader, which was originally
	  designed and implemented by Erich Stefan Boleyn. GRUB 2 has
	  replaced what was formerly known as GRUB (i.e. version
	  0.9x), which has, in turn, become GRUB Legacy.

	  Amongst others, GRUB2 offers EFI support, which GRUB Legacy
	  doesn't provide.

	  For additional notes on using Grub 2 with Buildroot, see
	  boot/grub2/readme.txt

	  http://www.gnu.org/software/grub/

if BR2_TARGET_GRUB2

choice
	prompt "Platform"

config BR2_TARGET_GRUB2_I386_PC
	bool "i386-pc"
	help
	  Select this option if the platform you're targetting is a
	  x86 or x86-64 legacy BIOS based platform.

config BR2_TARGET_GRUB2_I386_EFI
	bool "i386-efi"
	help
	  Select this option if the platform you're targetting has a
	  32 bits EFI BIOS. Note that some x86-64 platforms use a 32
	  bits EFI BIOS, and this option should be used in this case.

config BR2_TARGET_GRUB2_X86_64_EFI
	bool "x86-64-efi"
	depends on BR2_ARCH_IS_64
	help
	  Select this option if the platform you're targetting has a
	  64 bits EFI BIOS.

endchoice

if BR2_TARGET_GRUB2_I386_PC

config BR2_TARGET_GRUB2_BOOT_PARTITION
	string "boot partition"
	default "hd0,msdos1"
	help
	  Specify the partition where the /boot/grub/grub.cfg file is
	  located. Use 'hd0,msdos1' for the first partition of the
	  first disk if using a legacy partition table, or 'hd0,gpt1'
	  if using GPT partition table.

endif # BR2_TARGET_GRUB2_I386_PC

config BR2_TARGET_GRUB2_BUILTIN_MODULES
	string "builtin modules"
	default "boot linux ext2 fat squash4 part_msdos part_gpt normal biosdisk" if BR2_TARGET_GRUB2_I386_PC
	default "boot linux ext2 fat squash4 part_msdos part_gpt normal efi_gop" \
		if BR2_TARGET_GRUB2_I386_EFI || BR2_TARGET_GRUB2_X86_64_EFI

config BR2_TARGET_GRUB2_BUILTIN_CONFIG
	string "builtin config"
	help
	  Path to a Grub 2 configuration file that will be embedded
	  into the Grub image itself. This allows to set the root
	  device and other configuration parameters, but however menu
	  entries cannot be described in this embedded configuration.

endif # BR2_TARGET_GRUB2

comment "grub2 needs a toolchain w/ wchar"
	depends on BR2_TARGET_GRUB2_ARCH_SUPPORTS
	depends on !BR2_USE_WCHAR
