diff options
Diffstat (limited to 'scripts/solution_kconfig')
| -rwxr-xr-x | scripts/solution_kconfig | 38 | 
1 files changed, 38 insertions, 0 deletions
diff --git a/scripts/solution_kconfig b/scripts/solution_kconfig new file mode 100755 index 0000000..7f9e5dd --- /dev/null +++ b/scripts/solution_kconfig @@ -0,0 +1,38 @@ +#!/bin/bash + +SAT_FOLDER="$1" +CONF="$2" +LINKER="$1/linker" +SOLUTION="$1/solution" + +SAT=`head -1 "$SOLUTION"` +SOL=`tail -1 "$SOLUTION"` + +if [[ ! -w "$CONF" ]]; then +	echo "No file \"$CONF\"" >&2 +	exit 1 +fi + +if [[ "$SAT" != "SAT" ]]; then +	echo "No solution" >&2 +	exit 1 +fi + +for exp in $SOL; do +	if [[ "$exp" != "0" ]]; then +		if [[ `echo "$exp" | head -c 1` = "-" ]]; then +			exp=`echo "$exp" | cut -c 2-` +			not="n" +		else +			not="y" +		fi +		lnk=`grep -e "^$exp:" "$LINKER" | sed 's/^[0-9]*\://'` +		if [[ "$lnk" != NONAMEGEN* ]]; then # Ignore no name configs +			if [[ -z `grep "^CONFIG_$lnk" "$CONF"` ]]; then +				echo "CONFIG_$lnk=$not" >> "$CONF" +			else +				sed "s/^CONFIG_$lnk=.*/CONFIG_$lnk=$not/" "$CONF" > "$CONF" +			fi +		fi +	fi +done  | 
