scripts/config: add option to not upper-case symbols

Currently, scripts/config mangles the config option symbols to always
be upper-case.

While the Linux kernel almost exclusively uses upper-case symbols, there
are still a few symbols with lower-case which this script can not handle:

  $ grep -r -E '^[[:space:]]*config[[:space:]]+[^[:space:]]*[[:lower:]][^[:space:]=.]*$' . |wc -l
  173
(that's roughly 1.3% of the symbols in 3.5-rc1)

Eg.:
  ./arch/arm/Kconfig:config VFPv3
  ./arch/powerpc/platforms/Kconfig.cputype:config 40x
  ./arch/x86/Kconfig:config SCx200HR_TIMER
  ./drivers/video/console/Kconfig:config FONT_8x8
  ./drivers/video/Kconfig:config NTSC_640x480

Also, other projects that use kconfig may allow for lower- or mixed-case
symbols, and may find easier to reuse this script than implement each
their own (potentially flawed) logic. For such a use-case, see:
    http://marc.info/?l=linux-kbuild&m=133409932115848&w=2

This patch adds a new option to keep the given case, and keep the current
default to upper-case the symbols.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Michal Marek <mmarek@suse.cz>
This commit is contained in:
Yann E. MORIN 2012-06-08 01:48:55 +02:00 committed by Michal Marek
parent f8f5701bda
commit 4edc7e32af
1 changed files with 15 additions and 3 deletions

View File

@ -26,10 +26,14 @@ commands:
commands can be repeated multiple times commands can be repeated multiple times
options: options:
--file .config file to change (default .config) --file config-file .config file to change (default .config)
--keep-case|-k Keep next symbols' case (dont' upper-case it)
config doesn't check the validity of the .config file. This is done at next config doesn't check the validity of the .config file. This is done at next
make time. make time.
By default, config will upper-case the given symbol. Use --keep-case to keep
the case of all following symbols unchanged.
EOL EOL
exit 1 exit 1
} }
@ -44,7 +48,9 @@ checkarg() {
ARG="${ARG/CONFIG_/}" ARG="${ARG/CONFIG_/}"
;; ;;
esac esac
if [ "$MUNGE_CASE" = "yes" ] ; then
ARG="`echo $ARG | tr a-z A-Z`" ARG="`echo $ARG | tr a-z A-Z`"
fi
} }
set_var() { set_var() {
@ -75,10 +81,16 @@ if [ "$1" = "" ] ; then
usage usage
fi fi
MUNGE_CASE=yes
while [ "$1" != "" ] ; do while [ "$1" != "" ] ; do
CMD="$1" CMD="$1"
shift shift
case "$CMD" in case "$CMD" in
--keep-case|-k)
MUNGE_CASE=no
shift
continue
;;
--refresh) --refresh)
;; ;;
--*-after) --*-after)