From 5f9eb2207500f16a598866884f8ee5343ae8949f Mon Sep 17 00:00:00 2001 From: Masahiro Yamada Date: Fri, 13 Mar 2015 18:08:55 +0900 Subject: [PATCH] kbuild: remove scripts/multiconfig.sh 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 Reviewed-by: Simon Glass --- 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 1b3ebe7dc2..346ea27664 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 349f77038e..ff4ce6e92c 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 9c6b256349..0000000000 --- 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 -# -# SPDX-License-Identifier: GPL-2.0+ -# - -set -e - -# Make a configuration target -# Usage: -# run_make_config -# : 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 _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 -- 2.39.5