#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
#
mainmenu "U-Boot $UBOOTVERSION Configuration"

config UBOOTVERSION
	string
	option env="UBOOTVERSION"

config KCONFIG_OBJDIR
	string
	option env="KCONFIG_OBJDIR"

config DEFCONFIG_LIST
	string
	depends on !SPL_BUILD
	option defconfig_list
	default "configs/sandbox_defconfig"

menu "General setup"

config SPL_BUILD
	bool
	depends on $KCONFIG_OBJDIR="spl" || $KCONFIG_OBJDIR="tpl"
	default y

config TPL_BUILD
	bool
	depends on $KCONFIG_OBJDIR="tpl"
	default y

config SPL
	bool
	prompt "Enable SPL" if !SPL_BUILD
	default y if SPL_BUILD
	help
	  If you want to build SPL as well as the normal image, say Y.

config TPL
	bool
	depends on SPL
	prompt "Enable TPL" if !SPL_BUILD
	default y if TPL_BUILD
	default n
	help
	  If you want to build TPL as well as the normal image and SPL, say Y.

config SYS_EXTRA_OPTIONS
	string "Extra Options (DEPRECATED)"
	depends on !SPL_BUILD
	help
	  The old configuration infrastructure (= mkconfig + boards.cfg)
	  provided the extra options field. It you have something like
	  "HAS_BAR,BAZ=64", the optional options
	    #define CONFIG_HAS
	    #define CONFIG_BAZ	64
	  will be defined in include/config.h.
	  This option was prepared for the smooth migration from the old
	  configuration to Kconfig. Since this option will be removed sometime,
	  new boards should not use this option.

endmenu		# General setup

source "arch/Kconfig"
