config ARCH
	string
	option env="ARCH"

config KERNELVERSION
	string
	option env="KERNELVERSION"

config DEFCONFIG_LIST
	string
	option defconfig_list
	default "$ARCH_DEFCONFIG"
	default "arch/$ARCH/defconfig"

config GREGORIAN_CALENDER
	bool

config HAS_KALLSYMS
	bool

config HAS_MODULES
	bool

config CMD_MEMORY
	bool

config ENV_HANDLING
	select CRC32
	bool

config GENERIC_GPIO
	bool

config BLOCK
	bool

config BLOCK_WRITE
	bool

config HAVE_NOSHELL
	bool

menu "General Settings              "

config LOCALVERSION_AUTO
	bool "Automatically append version information to the version string"
	default y
	help
	  This will try to automatically determine if the current tree is a
	  release tree by looking for git tags that belong to the current
	  top of tree revision.

	  A string of the format -gxxxxxxxx will be added to the localversion
	  if a git-based tree is found.  The string generated by this will be
	  appended after any matching localversion* files, and after the value
	  set in CONFIG_LOCALVERSION.

	  (The actual string used here is the first eight characters produced
	  by running the command:

	    $ git rev-parse --verify HEAD

	  which is done within the script "scripts/setlocalversion".)

config LOCALVERSION_AUTO_GIT_TAG_GLOB
	depends on LOCALVERSION_AUTO
	string "Only consider git tags for version information that match glob pattern"
	help
	  The script "scripts/setlocalversion" uses the command "git describe" to
	  look for a git tag and appends it to localversion. This option allows us
	  to pass a "--match" parameter to "git describe". The git man page describes
	  the parameter like this: "Only consider tags matching the given glob(7)
	  pattern,"

	  Without this parameter, "git describe" returns
	  "spacecast-3.8-6-gafe9d1f" which might be confusing if we are building
	  an image for Google Fiber. To avoid this, we can pass "--match gfiber*"
	  into "git describe" and we will get "gfiber-46-pre3-6-gafe9d1f".

config BOARDINFO
	string

config ENVIRONMENT_VARIABLES
	bool "environment variables support"

config FORCE_BAREBOX_AUTH
	depends on (COMCERTO_ULOADER || COMCERTO_NAND_ULOADER)
	bool "Force RSA authentication of barebox binary"

config FORCE_KERNEL_AUTH
	depends on COMCERTO_BOOTLOADER
	bool "Force RSA authentication of kernel image"

config DEVELOPER_BAREBOX
	depends on COMCERTO_BOOTLOADER
	select DRIVER_SERIAL_FAST_UART
	bool "Enable developer barebox build"
	help
		A developer barebox build skips most of the production setup;
		most notably, it will not verify the kernel before booting,
		unless FORCE_KERNEL_AUTH is also set.

config PROD
	bool "Production build (sign barebox)"

menu "memory layout                 "

config HAVE_MMU
	bool

config MMU
	bool "Enable MMU"
	depends on HAVE_MMU
	help
	  Saying yes here enables the MMU. This is useful on some architectures
	  to enable the data cache which depends on the MMU. See Documentation/mmu.txt
	  for further information.

config HAVE_CONFIGURABLE_TEXT_BASE
	bool

config TEXT_BASE
	depends on HAVE_CONFIGURABLE_TEXT_BASE
	prompt "TEXT_BASE"
	hex
	default ARCH_TEXT_BASE
	help
	  The Address barebox gets linked at.

config HAVE_CONFIGURABLE_MEMORY_LAYOUT
	bool

choice
	prompt "select memory layout"
	depends on HAVE_CONFIGURABLE_MEMORY_LAYOUT
	default MEMORY_LAYOUT_DEFAULT

config MEMORY_LAYOUT_DEFAULT
	bool "use default memory layout"
	help
	  select this option to use bareboxs standard memory layout:
	  
	  stack
	  -----
	  malloc heap
	  -----
	  TEXT_BASE

config MEMORY_LAYOUT_FIXED
	bool "manually assign a memory layout"
	help
	  select this option to manually assign stack base and malloc
	  heap base

endchoice

config STACK_BASE
	depends on MEMORY_LAYOUT_FIXED
	hex
	prompt "STACK_BASE"

config STACK_SIZE
	hex
	default 0x8000
	prompt "Stack size"

config MALLOC_BASE
	depends on MEMORY_LAYOUT_FIXED
	hex
	prompt "MALLOC_BASE"

config MALLOC_SIZE
	hex
	default 0x400000
	prompt "malloc area size"
endmenu

config BROKEN
	bool
	prompt "Prompt for broken or incomplete code"

config EXPERIMENTAL
	bool
	prompt "Prompt for experimental code"

choice
	prompt "malloc implementation"

config MALLOC_DLMALLOC
	bool "dlmalloc"

config MALLOC_DUMMY
	bool "dummy malloc"
	help
	  select this option to use a dummy malloc implementation. With this
	  memory is never freed. This is suitable for well tested noninteractive
	  environments only.

endchoice

config MODULES
	depends on HAS_MODULES
	depends on EXPERIMENTAL
	bool "module support"
	help
	  This option enables support for loadable modules via insmod. Module
	  support is quite experimental at the moment. There is no convenient
	  way to compile modules and the list of exported symbols to actually
	  make use of modules is short to nonexistent

config KALLSYMS
	depends on HAS_KALLSYMS
	bool "kallsyms"
	help
	  With Kallsyms enabled all symbols are compiled into the barebox image.
	  This is useful to print a nice backtrace when an exception occurs.

config RELOCATABLE
	depends on PPC
	bool "generate relocatable barebox binary"
	help
	  A non relocatable barebox binary will run at it's compiled in
	  link address in RAM. This leads to smaller image sizes but may
	  put barebox just in the middle of RAM. With this option enabled
	  instead barebox can determine this address at runtime and thus
	  allowing it to relocate to the end of the available RAM. This
	  way you have the whole memory in a single piece.

config MACH_HAS_LOWLEVEL_INIT
	bool

config MACH_DO_LOWLEVEL_INIT
	bool "run machine low-level init"
	depends on MACH_HAS_LOWLEVEL_INIT
	default y
	help
	  This entry enables SDRAM and other board low level initialization
	  on many platforms. Disabling this option allows configurations to use
	  barebox as a second stage boot loader.

config ARCH_HAS_LOWLEVEL_INIT
	bool

config PROMPT
	string
	prompt "barebox command prompt"
	default "barebox:"

config BAUDRATE
	int
	prompt "Default baudrate"
	default 115200

config SIMPLE_READLINE
	bool
	default y
	depends on !CMDLINE_EDITING

config LONGHELP
	bool
	prompt "Enable long help texts"

config CBSIZE
	int
	prompt "Buffer size for input from the Console"
	default 1024

config MAXARGS
	int
	prompt "max. Number of arguments accepted for monitor commands"
	default 16

choice
	prompt "Select your shell"

	config SHELL_HUSH
		bool "hush parser"
		select ENVIRONMENT_VARIABLES
		select COMMAND_SUPPORT
		help
		  Enable hush support. This is the most advanced shell available
		  for barebox.

	config SHELL_SIMPLE
		bool "Simple parser"
		select COMMAND_SUPPORT
		help
		  simple shell. No if/then, no return values from commands, no loops

	config SHELL_NONE
		bool "no shell (noninteractive build)"
		depends on HAVE_NOSHELL
		help
		  No shell at all. This means no shell is started and your board has
		  to provide a run_shell() function which is started at the end of
		  the barebox startup process.
endchoice

config GLOB
	bool
	prompt "hush globbing support"
	depends on SHELL_HUSH
	help
	  If you want to use wildcards like * or ? say y here.
	
config PROMPT_HUSH_PS2
	string
	depends on SHELL_HUSH
	prompt "hush PS2"
	default "> "

config HUSH_FANCY_PROMPT
	bool
	depends on SHELL_HUSH
	select PROCESS_ESCAPE_SEQUENCE
	prompt "allow fancy hush prompts"
	help
	  Allow to set PS1 from the command line. PS1 can have several escaped commands
	  like \h for CONFIG_BOARDINFO or \w for the current working directory.

config HUSH_GETOPT
	bool
	depends on SHELL_HUSH
	prompt "enable builtin getopt"
	help
	  This enables a getopt function builtin to hush.

config CMDLINE_EDITING
	bool
	prompt "Enable command line editing"

config AUTO_COMPLETE
	bool
	depends on CMDLINE_EDITING
	prompt "Enable auto completion"

config MEM_SIZE
	bool
	prompt "Get available RAM size"

config MENU
	bool
	prompt "Menu Framework"
	help
	   a menu framework that allow us to create list menu to simplify
	   barebox and make it more user-frendly

config PASSWORD
	bool
	prompt "Password Framework"
	select DIGEST
	help
	  allow you to have password protection framework

if PASSWORD

choice
	prompt "passwd checksum"

config PASSWD_SUM_MD5
	bool "MD5"
	select MD5

config PASSWD_SUM_SHA1
	bool "SHA1"
	select SHA1

config PASSWD_SUM_SHA256
	bool "SHA256"
	select SHA256

endchoice

endif

config DYNAMIC_CRC_TABLE
	bool
	depends on CRC32
	prompt "Generate the crc32 table dynamically"
	default y
	help
	  Saying yes to this option saves around 800 bytes of binary size.
	  If unsure say yes.

config ERRNO_MESSAGES
	bool
	prompt "print error values as text"
	default y

config TIMESTAMP
	bool
	default y
	select GREGORIAN_CALENDER
	prompt "print timestamp information from images"
	help
	  When CONFIG_TIMESTAMP is selected, the timestamp
	  (date and time) of an image is printed by image
	  commands like bootm or iminfo. This option is
	  automatically enabled when you select CFG_CMD_DATE .

config CONSOLE_FULL
	bool
	default y
	prompt "Enable full console support"
	help
	  This option enables full console support capable of
	  handling multiple consoles.

config CONSOLE_SIMPLE
	bool
	default y
	depends on !CONSOLE_FULL

config CONSOLE_ACTIVATE_FIRST
	depends on CONSOLE_FULL
	bool
	default y
	prompt "activate first console on startup"
	help
	  Normally on startup all consoles are disabled, so you won't
	  see anything from barebox starting. Enabling this option
	  enables the first console.

config CONSOLE_ACTIVATE_ALL
	depends on CONSOLE_FULL
	depends on !CONSOLE_ACTIVATE_FIRST
	bool
	prompt "activate all consoles on startup"
	help
	  Enabling this options activates all consoles on startup, so
	  you will get output and a prompt on all consoles simultaneously.

config EARLY_CONSOLE_PORT
	string
	depends on HAS_EARLY_INIT
	prompt "Console device for early output"
	help
	  Choose the device on which you want to have early output printed
	  to. This is only used during startup when no device information
	  is available.

config EARLY_CONSOLE_BAUDRATE
	int
	default 115200
	depends on HAS_EARLY_INIT
	prompt "Early console baudrate"
	help
	  Choose the baudrate for your early console.

config OF_FLAT_TREE
	bool
	prompt "Open Firmware flat device tree support"

config PARTITION
	bool
	prompt "Enable Partitions"

config DEFAULT_ENVIRONMENT
	bool
	default y
	prompt "Compile in default environment"
	help
	  Enabling this option will give you a default environment when
	  the environment found in the environment sector is invalid

config DEFAULT_ENVIRONMENT_GENERIC
	bool
	depends on DEFAULT_ENVIRONMENT
	depends on SHELL_HUSH
	select HUSH_GETOPT
	select CMD_CRC
	select CMD_CRC_CMP
	prompt "Default environment generic"
	help
	  With this option barebox will use the generic default
	  environment found under defaultenv/ in the src tree.
	  The Directory given with DEFAULT_ENVIRONMENT_PATH
	  will be added to the default environment. This should
	  at least contain a /env/config file.
	  This will be able to overwrite the files from defaultenv.

config DEFAULT_ENVIRONMENT_PATH
	string
	depends on DEFAULT_ENVIRONMENT
	prompt "Default environment path"
	help
	  Space separated list of pathes the default environment will be taken from.
	  Relative pathes will be relative to the barebox Toplevel dir, but absolute
	  pathes are fine aswell.

config POLLER
	bool "generic polling infrastructure"

config ANTIREBOOTLOOP
	bool "Anti reboot loop feature"
	help
	  The anti reboot loop feature is a communication protocol between the
	  bootloader and the kernel that allows the bootloader to determine if a
	  certain kernel/rootfs image is "good". The way it works is that the
	  bootloader writes a certain bit pattern to a previously agreed memory
	  location. If a userspace app decides that the kernel has booted ok and
	  that the user space environment is sane, it tells the kernel which then
	  flips a bit in DRAM to communicate to the bootloader that this image is
	  considered "good".  Now, if the system reboots due to some failure
	  condition before said bit has been flipped, the bootloader is able to
	  detect this situation and switch back to a different kernel/rootfs
	  image.

if TPM

config TPM_LITE
	bool "Lightweight TPM library"
	default y

endif

endmenu

menu "Debugging                     "

config DEBUG_INFO
	bool
	prompt "enable debug symbols"
	help
	  Enable build of barebox with -g.

config ENABLE_FLASH_NOISE
	bool
	prompt "verbose flash handling"
	help
	  Enable this to get noisy flash handling routines

config ENABLE_PARTITION_NOISE
	bool
	prompt "verbose partition handling"
	help
	  Enable this to get noisy partition handling routines

config ENABLE_DEVICE_NOISE
	bool
	prompt "verbose device handling"
	help
	  Enable this to get noisy device handling routines

endmenu
