Support "O=config-dir" as the location of the .config file like (some) other kernel build (make) tools do. Someone asked for this "feature" a few months ago but I don't recall who it was. Also check for the existence of the config-dir/config-file and report if there is no such file instead of letting grep report that there is no such file. Signed-off-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> Cc: Masahiro Yamada <masahiroy@xxxxxxxxxx> Cc: Nick Desaulniers <ndesaulniers@xxxxxxxxxx> Cc: linux-kbuild@xxxxxxxxxxxxxxx Cc: Andi Kleen <ak@xxxxxxxxxxxxxxx> --- scripts/config | 44 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) --- linux-next-20211029.orig/scripts/config +++ linux-next-20211029/scripts/config @@ -37,6 +37,7 @@ commands: options: --file config-file .config file to change (default .config) + O=config-dir Specify the directory location of the config-file --keep-case|-k Keep next symbols' case (dont' upper-case it) $myname doesn't check the validity of the .config file. This is done at next @@ -124,15 +125,48 @@ undef_var() { txt_delete "^# $name is not set" "$FN" } -if [ "$1" = "--file" ]; then - FN="$2" - if [ "$FN" = "" ] ; then +DIR= +FN= + +while [ "$DIR" = "" -o "$FN" = "" ]; do + + if [ "$1" = "" ] ; then usage fi - shift 2 -else + if [ "$1" = "--file" ]; then + FN="$2" + if [ "$FN" = "" ] ; then + usage + fi + shift 2 + continue + fi + + optn=$1 + optnlen=${#optn} + if [ $optnlen -gt 1 ] && [ ${optn:0:2} = "O=" ]; then + DIR=${optn:2} + shift + if [ "$DIR" = "" ]; then + usage + fi + continue + fi + break # something other than --file or O=dir +done + +if [ "$FN" = "" ]; then FN=.config fi +if [ "$DIR" != "" ]; then + DIR=$DIR"/" +fi +FN="$DIR""$FN" + +if [ ! -r $FN ]; then + echo "No such config file: $FN" + exit +fi if [ "$1" = "" ] ; then usage