diff mbox

[3/4] boot/uboot: add support for the kconfig infrastructure

Message ID 1429361566-3538-3-git-send-email-joerg.krause@embedded.rocks
State Superseded
Headers show

Commit Message

Jörg Krause April 18, 2015, 12:52 p.m. UTC
With the patchset "kconfig: turnaround into single .config" [1] U-Boot
switched to a single .config file for board configuration. This allows
us to use the kconfig-package infrastructure.

For providing backward compatibility with older U-Boot version a user choice
between the new Kconfig and the legacy build system is introduced. Kconfig
is chosen as the default build system.

This patch supersedes
"boot/uboot: Add support for Kbuild & Kconfig build system" [2]

[1] http://lists.denx.de/pipermail/u-boot/2015-February/205490.html
[2] http://patchwork.ozlabs.org/patch/436498/

Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
---
 boot/uboot/Config.in | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 boot/uboot/uboot.mk  | 28 ++++++++++++++++++++++++++--
 2 files changed, 74 insertions(+), 2 deletions(-)

Comments

Thomas Petazzoni April 19, 2015, 8:10 a.m. UTC | #1
Dear Jörg Krause,

On Sat, 18 Apr 2015 14:52:45 +0200, Jörg Krause wrote:
> With the patchset "kconfig: turnaround into single .config" [1] U-Boot
> switched to a single .config file for board configuration. This allows
> us to use the kconfig-package infrastructure.
> 
> For providing backward compatibility with older U-Boot version a user choice
> between the new Kconfig and the legacy build system is introduced. Kconfig
> is chosen as the default build system.
> 
> This patch supersedes
> "boot/uboot: Add support for Kbuild & Kconfig build system" [2]
> 
> [1] http://lists.denx.de/pipermail/u-boot/2015-February/205490.html
> [2] http://patchwork.ozlabs.org/patch/436498/
> 
> Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>

This patch does not apply. Can you refresh it on the latest master?

Also, some comments below.

>  if BR2_TARGET_UBOOT
> +choice
> +	prompt "Build system"
> +	default BR2_TARGET_UBOOT_BUILD_SYSTEM_KBUILD
> +
> +config BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
> +	bool "Legacy"
> +	help
> +	  Select this option if you use an old U-Boot (older than 2014.10),
> +	  so that we use the old build system.
> +
> +config BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
> +	bool "Kconfig"
> +	default y

Not needed.

> +	help
> +	  Select this option if you use a recent U-Boot version (2015.04 or
> +	  newer), so that we use the Kconfig build system.

Something is unclear: legacy build system is for U-Boot older than
2014.10, and Kconfig is for U-Boot newer than 2015.04. What happens for
Buildroot versions in between, such as 2015.01 ?

Thanks,

Thomas
diff mbox

Patch

diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in
index 7cf695c..f44c3de 100644
--- a/boot/uboot/Config.in
+++ b/boot/uboot/Config.in
@@ -4,6 +4,26 @@  config BR2_TARGET_UBOOT
 	  Build "Das U-Boot" Boot Monitor
 
 if BR2_TARGET_UBOOT
+choice
+	prompt "Build system"
+	default BR2_TARGET_UBOOT_BUILD_SYSTEM_KBUILD
+
+config BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
+	bool "Legacy"
+	help
+	  Select this option if you use an old U-Boot (older than 2014.10),
+	  so that we use the old build system.
+
+config BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
+	bool "Kconfig"
+	default y
+	help
+	  Select this option if you use a recent U-Boot version (2015.04 or
+	  newer), so that we use the Kconfig build system.
+
+endchoice
+
+if BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
 config BR2_TARGET_UBOOT_BOARDNAME
 	string "U-Boot board name"
 	help
@@ -11,6 +31,7 @@  config BR2_TARGET_UBOOT_BOARDNAME
 	  This will be suffixed with _config to meet U-Boot standard naming.
 	  See boards.cfg in U-Boot source code for the list of available
 	  configurations.
+endif
 
 choice
 	prompt "U-Boot Version"
@@ -79,6 +100,33 @@  config BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR
 
 	  Most users may leave this empty
 
+if BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
+choice
+	prompt "U-Boot configuration"
+	default BR2_TARGET_UBOOT_USE_DEFCONFIG
+
+config BR2_TARGET_UBOOT_USE_DEFCONFIG
+	bool "Using an in-tree board defconfig file"
+
+config BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG
+	bool "Using a custom board (def)config file"
+
+endchoice
+
+config BR2_TARGET_UBOOT_BOARD_DEFCONFIG
+	string "Board defconfig"
+	depends on BR2_TARGET_UBOOT_USE_DEFCONFIG
+	help
+	  Name of the board for which U-Boot should be built, without
+	  the _defconfig suffix.
+
+config BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE
+	string "Configuration file path"
+	depends on BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG
+	help
+	  Path to the U-Boot configuration file.
+endif
+
 choice
 	prompt "U-Boot binary format"
 	default BR2_TARGET_UBOOT_FORMAT_BIN
diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
index a9ba054..941b721 100644
--- a/boot/uboot/uboot.mk
+++ b/boot/uboot/uboot.mk
@@ -93,6 +93,7 @@  endef
 UBOOT_POST_PATCH_HOOKS += UBOOT_APPLY_CUSTOM_PATCHES
 endif
 
+ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y)
 define UBOOT_CONFIGURE_CMDS
 	$(TARGET_CONFIGURE_OPTS) 	\
 		$(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS)		\
@@ -111,6 +112,18 @@  define UBOOT_CONFIGURE_CMDS
 	$(call insert_define,CONFIG_ETH1ADDR,$(BR2_TARGET_UBOOT_ETH1ADDR))
 	@echo "#endif /* __BR2_ADDED_CONFIG_H */" >> $(@D)/include/config.h
 endef
+else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y)
+ifeq ($(BR2_TARGET_UBOOT_USE_DEFCONFIG),y)
+UBOOT_SOURCE_CONFIG = $(UBOOT_DIR)/configs/$(call qstrip,\
+	$(BR2_TARGET_UBOOT_BOARD_DEFCONFIG))_defconfig
+else ifeq ($(BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG),y)
+UBOOT_SOURCE_CONFIG = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE))
+endif # BR2_TARGET_UBOOT_USE_DEFCONFIG
+
+UBOOT_KCONFIG_FILE = $(UBOOT_SOURCE_CONFIG)
+UBOOT_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig
+UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS)
+endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
 
 define UBOOT_BUILD_CMDS
 	$(TARGET_CONFIGURE_OPTS) 	\
@@ -165,14 +178,25 @@  endif
 UBOOT_DEPENDENCIES += host-uboot-tools
 endif
 
+ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y)
 $(eval $(generic-package))
+else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y)
+$(eval $(kconfig-package))
+endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
 
 ifeq ($(BR2_TARGET_UBOOT),y)
 # we NEED a board name unless we're at make source
 ifeq ($(filter source,$(MAKECMDGOALS)),)
+
+ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y)
 ifeq ($(UBOOT_BOARD_NAME),)
-$(error NO U-Boot board name set. Check your BR2_TARGET_UBOOT_BOARDNAME setting)
-endif
+$(error No U-Boot board name set. Check your BR2_TARGET_UBOOT_BOARDNAME setting)
+endif # UBOOT_BOARD_NAME
+else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y)
+ifeq ($(UBOOT_SOURCE_CONFIG),)
+$(error No U-Boot config file. Check your BR2_TARGET_UBOOT_BOARD_DEFCONFIG or BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE settings)
+endif # UBOOT_SOURCE_CONFIG
+endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
 
 ifeq ($(BR2_TARGET_UBOOT_CUSTOM_VERSION),y)
 ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE)),)