diff options
-rw-r--r-- | Makefile | 13 | ||||
-rw-r--r-- | scripts/kconfig/Makefile | 10 | ||||
-rwxr-xr-x | scripts/multiconfig.sh | 90 |
3 files changed, 21 insertions, 92 deletions
@@ -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 349f77038e6..ff4ce6e92cb 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 9c6b2563492..00000000000 --- 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@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 |