[U-Boot] [PATCH 2/2] kbuild: remove scripts/multiconfig.sh

Masahiro Yamada yamada.masahiro at socionext.com
Fri Mar 13 10:08:55 CET 2015


We have switched to the single .config configuration system,
the same one as used in Linux Kernel.

The necessary glue code is small enough now, so move it to the
top-level Makefile and scripts/kconfig/Makefile, and then delete
scripts/multiconfig.sh.

Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
---

This patch requires
http://patchwork.ozlabs.org/patch/449347/
as a prerequisite.


 Makefile                 | 13 +++++--
 scripts/kconfig/Makefile | 10 ++++++
 scripts/multiconfig.sh   | 90 ------------------------------------------------
 3 files changed, 21 insertions(+), 92 deletions(-)
 delete mode 100755 scripts/multiconfig.sh

diff --git a/Makefile b/Makefile
index 9747bd2..73e1362 100644
--- a/Makefile
+++ b/Makefile
@@ -469,10 +469,10 @@ KBUILD_DEFCONFIG := sandbox_defconfig
 export KBUILD_DEFCONFIG KBUILD_KCONFIG
 
 config: scripts_basic outputmakefile FORCE
-	+$(Q)$(CONFIG_SHELL) $(srctree)/scripts/multiconfig.sh $@
+	$(Q)$(MAKE) $(build)=scripts/kconfig $@
 
 %config: scripts_basic outputmakefile FORCE
-	+$(Q)$(CONFIG_SHELL) $(srctree)/scripts/multiconfig.sh $@
+	$(Q)$(MAKE) $(build)=scripts/kconfig $@
 
 else
 # ===========================================================================
@@ -496,6 +496,15 @@ $(KCONFIG_CONFIG) include/config/auto.conf.cmd: ;
 # we execute the config step to be sure to catch updated Kconfig files
 include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
 	$(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
+	@# If the following part fails, include/config/auto.conf should be
+	@# deleted so "make silentoldconfig" will be re-run on the next build.
+	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.autoconf || \
+		{ rm -f include/config/auto.conf; false; }
+	@# include/config.h has been updated after "make silentoldconfig".
+	@# We need to touch include/config/auto.conf so it gets newer
+	@# than include/config.h.
+	@# Otherwise, 'make silentoldconfig' would be invoked twice.
+	$(Q)touch include/config/auto.conf
 
 -include include/autoconf.mk
 -include include/autoconf.mk.dep
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
index 349f770..ff4ce6e 100644
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
@@ -5,6 +5,12 @@
 PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config \
 	localmodconfig localyesconfig
 
+# Added for U-Boot
+#  Linux has defconfig files in arch/$(SRCARCH)/configs/,
+#  on the other hand, U-Boot does in configs/.
+#  Set SRCARCH to .. fake this Makefile.
+SRCARCH := ..
+
 ifdef KBUILD_KCONFIG
 Kconfig := $(KBUILD_KCONFIG)
 else
@@ -104,6 +110,10 @@ endif
 %_defconfig: $(obj)/conf
 	$(Q)$< --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
 
+# Added for U-Boot (backward compatibility)
+%_config: %_defconfig
+	@:
+
 configfiles=$(wildcard $(srctree)/kernel/configs/$(1).config $(srctree)/arch/$(SRCARCH)/configs/$(1).config)
 
 define mergeconfig
diff --git a/scripts/multiconfig.sh b/scripts/multiconfig.sh
deleted file mode 100755
index 9c6b256..0000000
--- a/scripts/multiconfig.sh
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/bin/sh
-#
-# A wrapper script to adjust Kconfig for U-Boot
-#
-# This file will be removed after cleaning up defconfig files
-#
-# Copyright (C) 2014, Masahiro Yamada <yamada.m at jp.panasonic.com>
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-set -e
-
-# Make a configuration target
-# Usage:
-#   run_make_config <target> <objdir>
-# <target>: Make target such as "config", "menuconfig", "defconfig", etc.
-run_make_config () {
-	# Linux expects defconfig files in arch/$(SRCARCH)/configs/ directory,
-	# but U-Boot has them in configs/ directory.
-	# Give SRCARCH=.. to fake scripts/kconfig/Makefile.
-	$MAKE -f $srctree/scripts/Makefile.build obj=scripts/kconfig SRCARCH=.. $1
-}
-
-do_silentoldconfig () {
-	run_make_config silentoldconfig
-
-	# If the following part fails, include/config/auto.conf should be
-	# deleted so "make silentoldconfig" will be re-run on the next build.
-	$MAKE -f $srctree/scripts/Makefile.autoconf || {
-		rm -f include/config/auto.conf
-		exit 1
-	}
-
-	# include/config.h has been updated after "make silentoldconfig".
-	# We need to touch include/config/auto.conf so it gets newer
-	# than include/config.h.
-	# Otherwise, 'make silentoldconfig' would be invoked twice.
-	touch include/config/auto.conf
-}
-
-cleanup_after_defconfig () {
-	rm -f configs/.tmp_defconfig
-	# ignore 'Directory not empty' error
-	# without using non-POSIX option '--ignore-fail-on-non-empty'
-	rmdir arch configs 2>/dev/null || true
-}
-
-# Usage:
-#  do_board_defconfig <board>_defconfig
-do_board_defconfig () {
-	defconfig_path=$srctree/configs/$1
-
-	if [ ! -r $defconfig_path ]; then
-		echo >&2 "***"
-		echo >&2 "*** Can't find default configuration \"configs/$1\"!"
-		echo >&2 "***"
-		exit 1
-	fi
-
-	mkdir -p arch configs
-	# prefix "*:" is deprecated.  Drop it simply.
-	sed -e 's/^[+A-Z]*://' $defconfig_path > configs/.tmp_defconfig
-
-	run_make_config .tmp_defconfig || {
-		cleanup_after_defconfig
-		exit 1
-	}
-
-	cleanup_after_defconfig
-}
-
-do_others () {
-	run_make_config $1
-}
-
-progname=$(basename $0)
-target=$1
-
-case $target in
-*_defconfig)
-	do_board_defconfig $target;;
-*_config)
-	# backward compatibility
-	do_board_defconfig ${target%_config}_defconfig;;
-silentoldconfig)
-	do_silentoldconfig;;
-*)
-	do_others $target;;
-esac
-- 
1.9.1



More information about the U-Boot mailing list