[Buildroot] [v3, 2/4] barebox: adds option to build secondary config

Yegor Yefremov yegorslists at googlemail.com
Mon Feb 22 11:03:36 UTC 2016


On Wed, Jan 20, 2016 at 11:43 PM, Pieter Smith <pieter at boesman.nl> wrote:
> Support selection of secondary config, but version, source URL and patches are
> shared with barebox bootloader build.
>
> Signed-off-by: Pieter Smith <pieter at boesman.nl>

Tested-by: Yegor Yefremov <yegorslists at googlemail.com>

> ---
>  boot/barebox/Config.in                | 60 ++++++++++++++++++++++++++++++++++-
>  boot/barebox/barebox-2/barebox-2.hash |  1 +
>  boot/barebox/barebox-2/barebox-2.mk   | 54 +++++++++++++++++++++++++++++++
>  3 files changed, 114 insertions(+), 1 deletion(-)
>  create mode 120000 boot/barebox/barebox-2/barebox-2.hash
>  create mode 100644 boot/barebox/barebox-2/barebox-2.mk
>
> diff --git a/boot/barebox/Config.in b/boot/barebox/Config.in
> index ed120af..f848afe 100644
> --- a/boot/barebox/Config.in
> +++ b/boot/barebox/Config.in
> @@ -100,11 +100,20 @@ config BR2_TARGET_BAREBOX_ONE_CONFIG
>           Useful for building the traditional TPL (Tertiary Program
>           Loader).
>
> +config BR2_TARGET_BAREBOX_TWO_CONFIGS
> +       select BR2_TARGET_BAREBOX_1
> +       select BR2_TARGET_BAREBOX_2
> +       bool "Build 2 configs"
> +       help
> +         Build two barebox configurations.
> +         Useful for building an SPL (Secondary Program Loader) in addition to
> +         the traditional TPL (Tertiary Program Loader), such as the X-Loader
> +         or MLO for Texas Instruments processors.
> +
>  endchoice
>
>  config BR2_TARGET_BAREBOX_1
>         bool "Barebox configuration 1"
> -       default y
>
>  if BR2_TARGET_BAREBOX_1
>
> @@ -142,4 +151,53 @@ config BR2_TARGET_BAREBOX_CONFIG_FRAGMENT_FILES
>
>  endif
>
> +if BR2_TARGET_BAREBOX_TWO_CONFIGS
> +
> +config BR2_TARGET_BAREBOX_2
> +       bool "Barebox configuration 2"
> +
> +if BR2_TARGET_BAREBOX_2
> +
> +choice
> +       prompt "Type of configuration"
> +       default BR2_TARGET_BAREBOX_2_USE_DEFCONFIG
> +
> +config BR2_TARGET_BAREBOX_2_USE_DEFCONFIG
> +       bool "Using a defconfig"
> +
> +config BR2_TARGET_BAREBOX_2_USE_CUSTOM_CONFIG
> +       bool "Using a custom config file"
> +
> +endchoice
> +
> +config BR2_TARGET_BAREBOX_2_BOARD_DEFCONFIG
> +       string "Board defconfig"
> +       depends on BR2_TARGET_BAREBOX_2_USE_DEFCONFIG
> +       help
> +         Name of the board for which Barebox should be built, without
> +         the _defconfig suffix.
> +
> +
> +config BR2_TARGET_BAREBOX_2_CUSTOM_CONFIG_FILE
> +       string "Configuration file path"
> +       depends on BR2_TARGET_BAREBOX_2_USE_CUSTOM_CONFIG
> +       help
> +         Path to the barebox configuration file
> +
> +config BR2_TARGET_BAREBOX_2_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_2_INSTALL_FILENAME
> +       string "Destination image filename in output/images"
> +       default "MLO"
> +       help
> +         Name to give the image in the output/images directory.
> +
> +endif
> +
> +endif
> +
>  endif
> diff --git a/boot/barebox/barebox-2/barebox-2.hash b/boot/barebox/barebox-2/barebox-2.hash
> new file mode 120000
> index 0000000..b6462b8
> --- /dev/null
> +++ b/boot/barebox/barebox-2/barebox-2.hash
> @@ -0,0 +1 @@
> +../barebox.hash
> \ No newline at end of file
> diff --git a/boot/barebox/barebox-2/barebox-2.mk b/boot/barebox/barebox-2/barebox-2.mk
> new file mode 100644
> index 0000000..a735f67
> --- /dev/null
> +++ b/boot/barebox/barebox-2/barebox-2.mk
> @@ -0,0 +1,54 @@
> +################################################################################
> +#
> +# barebox-2
> +#
> +################################################################################
> +
> +BAREBOX_2_VERSION = $(BAREBOX_VERSION)
> +BAREBOX_2_SITE = $(BAREBOX_SITE)
> +BAREBOX_2_SITE_METHOD = $(BAREBOX_SITE_METHOD)
> +BAREBOX_2_SOURCE = $(BAREBOX_SOURCE)
> +BAREBOX_2_DEPENDENCIES = $(BAREBOX_DEPENDENCIES)
> +BAREBOX_2_LICENSE = $(BAREBOX_LICENSE)
> +BAREBOX_2_LICENSE_FILES = $(BAREBOX_LICENSE_FILES)
> +BAREBOX_2_POST_PATCH_HOOKS += $(BAREBOX_POST_PATCH_HOOKS)
> +BAREBOX_2_MAKE_FLAGS = $(BAREBOX_MAKE_FLAGS)
> +BAREBOX_2_MAKE_ENV = $(BAREBOX_MAKE_ENV)
> +BAREBOX_2_INSTALL_IMAGES = $(BAREBOX_INSTALL_IMAGES)
> +BAREBOX_2_INSTALL_DEST = $(BINARIES_DIR)/$(call qstrip,$(BR2_TARGET_BAREBOX_2_INSTALL_FILENAME))
> +
> +ifeq ($(BR2_TARGET_BAREBOX_2_USE_DEFCONFIG),y)
> +BAREBOX_2_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_TARGET_BAREBOX_2_BOARD_DEFCONFIG))_defconfig
> +else ifeq ($(BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG),y)
> +BAREBOX_2_KCONFIG_FILE = $(call qstrip,$(BR2_TARGET_BAREBOX_2_CUSTOM_CONFIG_FILE))
> +endif
> +
> +BAREBOX_2_KCONFIG_FRAGMENT_FILES = $(BAREBOX_KCONFIG_FRAGMENT_FILES)
> +BAREBOX_2_KCONFIG_EDITORS = $(BAREBOX_KCONFIG_EDITORS)
> +BAREBOX_2_KCONFIG_OPTS = $(BAREBOX_MAKE_FLAGS)
> +
> +define BAREBOX_2_BUILD_CMDS
> +       $(TARGET_MAKE_ENV) $(MAKE) $(BAREBOX_2_MAKE_FLAGS) -C $(@D)
> +endef
> +
> +define BAREBOX_2_INSTALL_IMAGES_CMDS
> +       if test -h $(@D)/barebox-flash-image ; then \
> +               cp -L $(@D)/barebox-flash-image $(BAREBOX_2_INSTALL_DEST) ; \
> +       else \
> +               cp $(@D)/barebox.bin $(BAREBOX_2_INSTALL_DEST);\
> +       fi
> +endef
> +
> +
> +# Checks to give errors that the user can understand
> +# Must be before we call to kconfig-package
> +ifeq ($(BR2_TARGET_BAREBOX_2)$(BR_BUILDING),yy)
> +# We must use the user-supplied kconfig value, because
> +# BAREBOX_2_KCONFIG_DEFCONFIG will at least contain the
> +# trailing _defconfig
> +ifeq ($(or $(BAREBOX_2_KCONFIG_FILE),$(call qstrip,$(BR2_TARGET_BAREBOX_2_BOARD_DEFCONFIG))),)
> +$(error No Barebox config. Check your BR2_TARGET_BAREBOX_2_BOARD_DEFCONFIG or BR2_TARGET_BAREBOX_2_CUSTOM_CONFIG_FILE settings)
> +endif
> +endif
> +
> +$(eval $(kconfig-package))
> --
> 2.5.0
>


More information about the buildroot mailing list