linux-yocto/scripts/config
Andi Kleen 2302e8730e kbuild: print usage with no arguments in scripts/config
Requested by Sam.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2009-01-14 21:40:49 +01:00

2.9 KiB
Executable File

#!/bin/bash

Manipulate options in a .config file from the command line

usage() { cat >&2 <<EOL Manipulate options in a .config file from the command line. Usage: config options command ... commands: --enable|-e option Enable option --disable|-d option Disable option --module|-m option Turn option into a module --state|-s option Print state of option (n,y,m,undef)

--enable-after|-E beforeopt option
                         Enable option directly after other option
--disable-after|-D beforeopt option
                         Disable option directly after other option
--module-after|-M beforeopt option
                         Turn option into module directly after other option

commands can be repeated multiple times

options: --file .config file to change (default .config)

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 }

checkarg() { ARG="$1" if [ "$ARG" = "" ] ; then usage fi case "$ARG" in CONFIG_*) ARG="${ARG/CONFIG_/}" ;; esac ARG="echo $ARG | tr a-z A-Z" }

replace() { sed -i -e "$@" $FN }

if [ "$1" = "--file" ]; then FN="$2" if [ "$FN" = "" ] ; then usage fi shift shift else FN=.config fi

if [ "$1" = "" ] ; then usage fi

while [ "$1" != "" ] ; do CMD="$1" shift case "$CMD" in --enable|-e) checkarg "$1" replace "s/# CONFIG_$ARG is not set/CONFIG_$ARG=y/" shift ;;

--disable|-d)
	checkarg "$1"
	replace "s/CONFIG_$ARG=[my]/# 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/"
	shift
	;;

--state|-s)
	checkarg "$1"
	if grep -q "# CONFIG_$ARG is not set" $FN ; then
		echo n
	else
		V="$(grep "^CONFIG_$ARG=" $FN)"
		if [ $? != 0 ] ; then
			echo undef
		else
			V="${V/CONFIG_$ARG=/}"
			V="${V/\"/}"
			echo "$V"
		fi
	fi
	shift
	;;

--enable-after|-E)
	checkarg "$1"
	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/"
	shift
	shift
	;;

--disable-after|-D)
	checkarg "$1"
	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/"
	shift
	shift
	;;

--module-after|-M)
	checkarg "$1"
	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/"
	shift
	shift
	;;

# undocumented because it ignores --file (fixme)
--refresh)
	yes "" | make oldconfig
	;;

*)
	usage
	;;
esac

done