kbuild: handle non-existing options in scripts/config

If an option does not exist in .config, set it at the end of the file.

Signed-off-by: Michal Marek <mmarek@suse.cz>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
This commit is contained in:
Michal Marek 2009-06-14 22:48:07 +02:00 committed by Sam Ravnborg
parent 17b1f0de79
commit 5664322247

View File

@ -26,8 +26,6 @@ options:
config doesn't check the validity of the .config file. This is done at next
make time.
The options need to be already in the file before they can be changed,
but sometimes you can cheat with the --*-after options.
EOL
exit 1
}
@ -45,8 +43,18 @@ checkarg() {
ARG="`echo $ARG | tr a-z A-Z`"
}
replace() {
sed -i -e "$@" $FN
set_var() {
local name=$1 new=$2 before=$3
name_re="^($name=|# $name is not set)"
before_re="^($before=|# $before is not set)"
if test -n "$before" && grep -Eq "$before_re" "$FN"; then
sed -ri "/$before_re/a $new" "$FN"
elif grep -Eq "$name_re" "$FN"; then
sed -ri "s:$name_re.*:$new:" "$FN"
else
echo "$new" >>"$FN"
fi
}
if [ "$1" = "--file" ]; then
@ -70,20 +78,19 @@ while [ "$1" != "" ] ; do
case "$CMD" in
--enable|-e)
checkarg "$1"
replace "s/# CONFIG_$ARG is not set/CONFIG_$ARG=y/"
set_var "CONFIG_$ARG" "CONFIG_$ARG=y"
shift
;;
--disable|-d)
checkarg "$1"
replace "s/CONFIG_$ARG=[my]/# CONFIG_$ARG is not set/"
set_var "CONFIG_$ARG" "# CONFIG_$ARG is not set"
shift
;;
--module|-m)
checkarg "$1"
replace "s/CONFIG_$ARG=y/CONFIG_$ARG=m/" \
-e "s/# CONFIG_$ARG is not set/CONFIG_$ARG=m/"
set_var "CONFIG_$ARG" "CONFIG_$ARG=m"
shift
;;
@ -109,9 +116,7 @@ while [ "$1" != "" ] ; do
A=$ARG
checkarg "$2"
B=$ARG
replace "/CONFIG_$A=[my]/aCONFIG_$B=y" \
-e "/# CONFIG_$ARG is not set/a/CONFIG_$ARG=y" \
-e "s/# CONFIG_$ARG is not set/CONFIG_$ARG=y/"
set_var "CONFIG_$B" "CONFIG_$B=y" "CONFIG_$A"
shift
shift
;;
@ -121,9 +126,7 @@ while [ "$1" != "" ] ; do
A=$ARG
checkarg "$2"
B=$ARG
replace "/CONFIG_$A=[my]/a# CONFIG_$B is not set" \
-e "/# CONFIG_$ARG is not set/a/# CONFIG_$ARG is not set" \
-e "s/CONFIG_$ARG=[my]/# CONFIG_$ARG is not set/"
set_var "CONFIG_$B" "# CONFIG_$B is not set" "CONFIG_$A"
shift
shift
;;
@ -133,10 +136,7 @@ while [ "$1" != "" ] ; do
A=$ARG
checkarg "$2"
B=$ARG
replace "/CONFIG_$A=[my]/aCONFIG_$B=m" \
-e "/# CONFIG_$ARG is not set/a/CONFIG_$ARG=m" \
-e "s/CONFIG_$ARG=y/CONFIG_$ARG=m/" \
-e "s/# CONFIG_$ARG is not set/CONFIG_$ARG=m/"
set_var "CONFIG_$B" "CONFIG_$B=m" "CONFIG_$A"
shift
shift
;;