mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-30 19:48:19 +00:00 
			
		
		
		
	Align Kconfig and Kbuild logic to Linux 4.20 release with minimal impact
on files outside of this scope.
Our previous Kconfig sync was done by commit 587e4a429698 ("kconfig /
kbuild: Re-sync with Linux 4.19").
As part of this re-sync, a few related changes from previous Linux
releases were found to have been missed and merged in, and are not in
the following list.
The imported Linux commits are:
[From prior to v4.19]
b1e0d8b70fa3 kbuild: Fix gcc -x syntax
a4353898980c kconfig: add CC_IS_GCC and GCC_VERSION
469cb7376c06 kconfig: add CC_IS_CLANG and CLANG_VERSION
[From v4.19 to v4.20]
487c7c7702ab kbuild: prefix Makefile.dtbinst path with $(srctree) unconditionally
0d91bf584fe5 kbuild: remove old check for CFLAGS use
25815cf5ffec kbuild: hide most of targets when running config or mixed targets
00d78ab2ba75 kbuild: remove dead code in cmd_files calculation in top Makefile
23066c3f4e21 Compiler Attributes: enable -Wstringop-truncation on W=1 (gcc >= 8)
37c8a5fafa3b kbuild: consolidate Devicetree dtb build rules
80463f1b7bf9 kbuild: add --include-dir flag only for out-of-tree build
77ec0c20c7e0 kbuild: remove VERSION and PATCHLEVEL from $(objtree)/Makefile
74bc0c09b2da kbuild: remove user ID check in scripts/mkmakefile
4fd61277f662 kbuild: do not pass $(objtree) to scripts/mkmakefile
80d0dda3a4e5 kbuild: simplify command line creation in scripts/mkmakefile
fb073a4b473e kbuild: add -Wno-pointer-sign flag unconditionally
9df3e7a7d7d6 kbuild: add -Wno-unused-but-set-variable flag unconditionally
69ea912fda74 kbuild: remove unneeded link_multi_deps
7d0ea2524202 kbuild: use 'else ifeq' for checksrc to improve readability
04c459d20448 kconfig: remove oldnoconfig target
0085b4191f3e kconfig: remove silentoldconfig target
3f80babd9ca4 kbuild: remove unused cc-fullversion variable
2cd3faf87d2d merge_config.sh: Allow to define config prefix
076f421da5d4 kbuild: replace cc-name test with CONFIG_CC_IS_CLANG
6bbe4385d035 kconfig: merge_config: avoid false positive matches from comment lines
[From post v4.20]
885480b08469 Makefile: Move -Wno-unused-but-set-variable out of GCC only block
There are a number of changes related to additional warnings as well as
being able to drop cc-name entirely that have been omitted for now as
additional work is required first.
Cc: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
		
	
			
		
			
				
	
	
		
			176 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			176 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| #  merge_config.sh - Takes a list of config fragment values, and merges
 | |
| #  them one by one. Provides warnings on overridden values, and specified
 | |
| #  values that did not make it to the resulting .config file (due to missed
 | |
| #  dependencies or config symbol removal).
 | |
| #
 | |
| #  Portions reused from kconf_check and generate_cfg:
 | |
| #  http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/kconf_check
 | |
| #  http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/generate_cfg
 | |
| #
 | |
| #  Copyright (c) 2009-2010 Wind River Systems, Inc.
 | |
| #  Copyright 2011 Linaro
 | |
| #
 | |
| #  This program is free software; you can redistribute it and/or modify
 | |
| #  it under the terms of the GNU General Public License version 2 as
 | |
| #  published by the Free Software Foundation.
 | |
| #
 | |
| #  This program is distributed in the hope that it will be useful,
 | |
| #  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | |
| #  See the GNU General Public License for more details.
 | |
| 
 | |
| clean_up() {
 | |
| 	rm -f $TMP_FILE
 | |
| 	exit
 | |
| }
 | |
| trap clean_up HUP INT TERM
 | |
| 
 | |
| usage() {
 | |
| 	echo "Usage: $0 [OPTIONS] [CONFIG [...]]"
 | |
| 	echo "  -h    display this help text"
 | |
| 	echo "  -m    only merge the fragments, do not execute the make command"
 | |
| 	echo "  -n    use allnoconfig instead of alldefconfig"
 | |
| 	echo "  -r    list redundant entries when merging fragments"
 | |
| 	echo "  -O    dir to put generated output files.  Consider setting \$KCONFIG_CONFIG instead."
 | |
| 	echo
 | |
| 	echo "Used prefix: '$CONFIG_PREFIX'. You can redefine it with \$CONFIG_ environment variable."
 | |
| }
 | |
| 
 | |
| RUNMAKE=true
 | |
| ALLTARGET=alldefconfig
 | |
| WARNREDUN=false
 | |
| OUTPUT=.
 | |
| CONFIG_PREFIX=${CONFIG_-CONFIG_}
 | |
| 
 | |
| while true; do
 | |
| 	case $1 in
 | |
| 	"-n")
 | |
| 		ALLTARGET=allnoconfig
 | |
| 		shift
 | |
| 		continue
 | |
| 		;;
 | |
| 	"-m")
 | |
| 		RUNMAKE=false
 | |
| 		shift
 | |
| 		continue
 | |
| 		;;
 | |
| 	"-h")
 | |
| 		usage
 | |
| 		exit
 | |
| 		;;
 | |
| 	"-r")
 | |
| 		WARNREDUN=true
 | |
| 		shift
 | |
| 		continue
 | |
| 		;;
 | |
| 	"-O")
 | |
| 		if [ -d $2 ];then
 | |
| 			OUTPUT=$(echo $2 | sed 's/\/*$//')
 | |
| 		else
 | |
| 			echo "output directory $2 does not exist" 1>&2
 | |
| 			exit 1
 | |
| 		fi
 | |
| 		shift 2
 | |
| 		continue
 | |
| 		;;
 | |
| 	*)
 | |
| 		break
 | |
| 		;;
 | |
| 	esac
 | |
| done
 | |
| 
 | |
| if [ "$#" -lt 1 ] ; then
 | |
| 	usage
 | |
| 	exit
 | |
| fi
 | |
| 
 | |
| if [ -z "$KCONFIG_CONFIG" ]; then
 | |
| 	if [ "$OUTPUT" != . ]; then
 | |
| 		KCONFIG_CONFIG=$(readlink -m -- "$OUTPUT/.config")
 | |
| 	else
 | |
| 		KCONFIG_CONFIG=.config
 | |
| 	fi
 | |
| fi
 | |
| 
 | |
| INITFILE=$1
 | |
| shift;
 | |
| 
 | |
| if [ ! -r "$INITFILE" ]; then
 | |
| 	echo "The base file '$INITFILE' does not exist.  Exit." >&2
 | |
| 	exit 1
 | |
| fi
 | |
| 
 | |
| MERGE_LIST=$*
 | |
| SED_CONFIG_EXP1="s/^\(${CONFIG_PREFIX}[a-zA-Z0-9_]*\)=.*/\1/p"
 | |
| SED_CONFIG_EXP2="s/^# \(${CONFIG_PREFIX}[a-zA-Z0-9_]*\) is not set$/\1/p"
 | |
| 
 | |
| TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX)
 | |
| 
 | |
| echo "Using $INITFILE as base"
 | |
| cat $INITFILE > $TMP_FILE
 | |
| 
 | |
| # Merge files, printing warnings on overridden values
 | |
| for MERGE_FILE in $MERGE_LIST ; do
 | |
| 	echo "Merging $MERGE_FILE"
 | |
| 	if [ ! -r "$MERGE_FILE" ]; then
 | |
| 		echo "The merge file '$MERGE_FILE' does not exist.  Exit." >&2
 | |
| 		exit 1
 | |
| 	fi
 | |
| 	CFG_LIST=$(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $MERGE_FILE)
 | |
| 
 | |
| 	for CFG in $CFG_LIST ; do
 | |
| 		grep -q -w $CFG $TMP_FILE || continue
 | |
| 		PREV_VAL=$(grep -w $CFG $TMP_FILE)
 | |
| 		NEW_VAL=$(grep -w $CFG $MERGE_FILE)
 | |
| 		if [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then
 | |
| 			echo Value of $CFG is redefined by fragment $MERGE_FILE:
 | |
| 			echo Previous  value: $PREV_VAL
 | |
| 			echo New value:       $NEW_VAL
 | |
| 			echo
 | |
| 		elif [ "$WARNREDUN" = "true" ]; then
 | |
| 			echo Value of $CFG is redundant by fragment $MERGE_FILE:
 | |
| 		fi
 | |
| 		sed -i "/$CFG[ =]/d" $TMP_FILE
 | |
| 	done
 | |
| 	cat $MERGE_FILE >> $TMP_FILE
 | |
| done
 | |
| 
 | |
| if [ "$RUNMAKE" = "false" ]; then
 | |
| 	cp -T -- "$TMP_FILE" "$KCONFIG_CONFIG"
 | |
| 	echo "#"
 | |
| 	echo "# merged configuration written to $KCONFIG_CONFIG (needs make)"
 | |
| 	echo "#"
 | |
| 	clean_up
 | |
| 	exit
 | |
| fi
 | |
| 
 | |
| # If we have an output dir, setup the O= argument, otherwise leave
 | |
| # it blank, since O=. will create an unnecessary ./source softlink
 | |
| OUTPUT_ARG=""
 | |
| if [ "$OUTPUT" != "." ] ; then
 | |
| 	OUTPUT_ARG="O=$OUTPUT"
 | |
| fi
 | |
| 
 | |
| 
 | |
| # Use the merged file as the starting point for:
 | |
| # alldefconfig: Fills in any missing symbols with Kconfig default
 | |
| # allnoconfig: Fills in any missing symbols with # CONFIG_* is not set
 | |
| make KCONFIG_ALLCONFIG=$TMP_FILE $OUTPUT_ARG $ALLTARGET
 | |
| 
 | |
| 
 | |
| # Check all specified config values took (might have missed-dependency issues)
 | |
| for CFG in $(sed -n -e "$SED_CONFIG_EXP1" -e "$SED_CONFIG_EXP2" $TMP_FILE); do
 | |
| 
 | |
| 	REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE)
 | |
| 	ACTUAL_VAL=$(grep -w -e "$CFG" "$KCONFIG_CONFIG")
 | |
| 	if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then
 | |
| 		echo "Value requested for $CFG not in final .config"
 | |
| 		echo "Requested value:  $REQUESTED_VAL"
 | |
| 		echo "Actual value:     $ACTUAL_VAL"
 | |
| 		echo ""
 | |
| 	fi
 | |
| done
 | |
| 
 | |
| clean_up
 |