Michal Marek 411abb
#! /bin/bash
Michal Marek 411abb
Jiri Slaby e94bac
# This is a list of toolchain-dependent configs. That is: only those which
Jiri Slaby e94bac
# change .config when gcc, ld, or similar changes.
Jiri Slaby e94bac
#
Jiri Slaby 67c6b5
# please keep them sorted alphabetically
Jiri Slaby a1976d
declare -a IGNORED_CONFIGS_RE=(
Andreas Schwab bdc0bf
	'AS_HAS_[A-Z0-9_]*'
Michal Suchanek bd64cb
	'AS_VERSION'
Jiri Slaby f61e95
	'CC_CAN_[A-Z_]*'
Jiri Slaby f61e95
	'CC_HAS_[A-Z_]*'
Jiri Slaby f61e95
	'CC_HAVE_[A-Z_]*'
Jiri Slaby f61e95
	'CC_VERSION_TEXT'
Michal Kubecek 887416
	'FTRACE_MCOUNT_USE_[A-Z_]*'
Jiri Slaby f61e95
	'GCC_VERSION'
Jiri Slaby a14607
	'G*CC[0-9]*_NO_[A-Z_]*'
Jiri Slaby f61e95
	'HAVE_[A-Z]*_COMPILER'
Jiri Slaby f61e95
	'LD_VERSION'
Michal Suchanek 88ba5e
	'PAHOLE_VERSION'
Jiri Slaby e9f2ba
	'TOOLCHAIN_HAS_[A-Z_]*'
Jiri Slaby f61e95
	'TOOLS_SUPPORT_[A-Z_]*'
Michal Kubecek 887416
	'OBJTOOL'
Jiri Slaby a1976d
)
Jiri Slaby a1976d
Jiri Slaby a1976d
declare -a SED_ARGS=()
Jiri Slaby a1976d
Jiri Slaby a1976d
for CONFIG in "${IGNORED_CONFIGS_RE[@]}"; do
Jiri Slaby f61e95
	SED_ARGS+=(-e "/\\<CONFIG_$CONFIG\\>/ d")
Jiri Slaby a1976d
done
Jiri Slaby a1976d
Jiri Slaby a1976d
SED_ARGS+=(
Jiri Slaby a1976d
	-e '/^# .* is not set$/p'
Jiri Slaby a1976d
	-e '/^$\|^#/d'
Jiri Slaby a1976d
)
Jiri Slaby a1976d
Michal Marek 411abb
differences="$(
Jiri Slaby a1976d
    diff -bU0 <(sed "${SED_ARGS[@]}" "$1" | sort) \
Jiri Slaby a1976d
	      <(sed "${SED_ARGS[@]}" "$2" | sort) \
Michal Marek 411abb
    | grep '^[-+][^-+]'
Michal Marek 411abb
)" || true
Michal Marek 411abb
if [ -n "$differences" ]; then
Michal Marek 411abb
    echo
Michal Marek 411abb
    echo "Changes after running \`make oldconfig':"
Michal Marek 411abb
    echo "$differences"
Michal Marek 411abb
    echo
Michal Marek 411abb
    if echo "$differences" | grep -q '^+' ; then
Michal Marek 411abb
	exit 1
Michal Marek 411abb
    fi
Michal Marek 411abb
fi