config BR2_TARGET_BAREBOX
	bool "Barebox"
	help
	  The Barebox bootloader, formerly known as U-Boot v2.

	  http://www.barebox.org

if BR2_TARGET_BAREBOX
choice
	prompt "version"
	help
	  Select the specific Barebox version you want to use

config BR2_TARGET_BAREBOX_LATEST_VERSION
	bool "2016.01.0"

config BR2_TARGET_BAREBOX_CUSTOM_VERSION
	bool "Custom version"
	help
	  This option allows to use a specific official versions

config BR2_TARGET_BAREBOX_CUSTOM_TARBALL
	bool "Custom tarball"

config BR2_TARGET_BAREBOX_CUSTOM_GIT
	bool "Custom Git repository"

endchoice

config BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE
	string "Barebox version"
	depends on BR2_TARGET_BAREBOX_CUSTOM_VERSION

if BR2_TARGET_BAREBOX_CUSTOM_TARBALL

config BR2_TARGET_BAREBOX_CUSTOM_TARBALL_LOCATION
	string "URL of custom Barebox tarball"

endif

config BR2_TARGET_BAREBOX_VERSION
	string
	default "2016.01.0"	if BR2_TARGET_BAREBOX_LATEST_VERSION
	default BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE if BR2_TARGET_BAREBOX_CUSTOM_VERSION
	default "custom"	if BR2_TARGET_BAREBOX_CUSTOM_TARBALL
	default BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION if BR2_TARGET_BAREBOX_CUSTOM_GIT

config BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR
	string "custom patch dir"
	help
	  If your board requires custom patches, add the path to the
	  directory containing the patches here. The patches must be
	  named barebox-<version>-<something>.patch.

	  Most users may leave this empty

if BR2_TARGET_BAREBOX_CUSTOM_GIT

config BR2_TARGET_BAREBOX_CUSTOM_GIT_REPO_URL
	string "URL of custom Git repository"

config BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION
	string "Custom Git version"

endif


choice
	prompt "Barebox configuration"
	default BR2_TARGET_BAREBOX_USE_DEFCONFIG

config BR2_TARGET_BAREBOX_USE_DEFCONFIG
	bool "Using a defconfig"

config BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG
	bool "Using a custom config file"

endchoice

config BR2_TARGET_BAREBOX_BOARD_DEFCONFIG
	string "board defconfig"
	depends on BR2_TARGET_BAREBOX_USE_DEFCONFIG
	help
	  Name of the board for which Barebox should be built, without
	  the _defconfig suffix.


config BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE
	string "Configuration file path"
	depends on BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG
	help
	  Path to the barebox configuration file

config BR2_TARGET_BAREBOX_CONFIG_FRAGMENT_FILES
	string "Additional configuration fragment files"
	help
	  A space-separated list of configuration fragment files,
	  that will be merged to the main Barebox configuration file.

config BR2_TARGET_BAREBOX_BAREBOXENV
	bool "bareboxenv tool in target"
	help
	  Install bareboxenv tool in target.

config BR2_TARGET_BAREBOX_CUSTOM_ENV
	bool "Generate an environment image"
	help
	  Generate a custom environment image. This environment will
	  contain the variables and scripts to be used at boot by
	  barebox.

config BR2_TARGET_BAREBOX_CUSTOM_ENV_PATH
	string "Environment path"
	depends on BR2_TARGET_BAREBOX_CUSTOM_ENV
	help
	  Path to the directory containing the custom barebox
	  environment. Depending on your setup, it will probably be
	  based on either the content of the defaultenv or
	  defaultenv-2 directories in the barebox source code, plus
	  the additions needed. The output will be an image in the
	  barebox devfs format, stored in the images directory, with
	  the same name as the directory name given here.

endif
