merge_config.sh: Add option to specify output dir
authorZhangfei Gao <zhangfei.gao@linaro.org>
Mon, 3 Dec 2012 07:36:10 +0000 (15:36 +0800)
committerMichal Marek <mmarek@suse.cz>
Sun, 9 Dec 2012 17:22:17 +0000 (18:22 +0100)
Provide a -O option to specify dir to put generated .config
Then merge_config.sh does not need to be copied to target dir,
for easy re-usage in other script

Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Tested-by: Jon Medhurst (Tixy) <tixy@linaro.org>
Acked-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Michal Marek <mmarek@suse.cz>
scripts/kconfig/merge_config.sh

index 974d5cb7e30a5eb8abdd718371341160f9964dbb..05274fccb88e2cfed658cdabfec42a481f876f59 100755 (executable)
@@ -32,11 +32,13 @@ usage() {
        echo "  -m    only merge the fragments, do not execute the make command"
        echo "  -n    use allnoconfig instead of alldefconfig"
        echo "  -r    list redundant entries when merging fragments"
+       echo "  -O    dir to put generated output files"
 }
 
 MAKE=true
 ALLTARGET=alldefconfig
 WARNREDUN=false
+OUTPUT=.
 
 while true; do
        case $1 in
@@ -59,6 +61,16 @@ while true; do
                shift
                continue
                ;;
+       "-O")
+               if [ -d $2 ];then
+                       OUTPUT=$(echo $2 | sed 's/\/*$//')
+               else
+                       echo "output directory $2 does not exist" 1>&2
+                       exit 1
+               fi
+               shift 2
+               continue
+               ;;
        *)
                break
                ;;
@@ -100,9 +112,9 @@ for MERGE_FILE in $MERGE_LIST ; do
 done
 
 if [ "$MAKE" = "false" ]; then
-       cp $TMP_FILE .config
+       cp $TMP_FILE $OUTPUT/.config
        echo "#"
-       echo "# merged configuration written to .config (needs make)"
+       echo "# merged configuration written to $OUTPUT/.config (needs make)"
        echo "#"
        clean_up
        exit
@@ -111,14 +123,14 @@ fi
 # Use the merged file as the starting point for:
 # alldefconfig: Fills in any missing symbols with Kconfig default
 # allnoconfig: Fills in any missing symbols with # CONFIG_* is not set
-make KCONFIG_ALLCONFIG=$TMP_FILE $ALLTARGET
+make KCONFIG_ALLCONFIG=$TMP_FILE O=$OUTPUT $ALLTARGET
 
 
 # Check all specified config values took (might have missed-dependency issues)
 for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do
 
        REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE)
-       ACTUAL_VAL=$(grep -w -e "$CFG" .config)
+       ACTUAL_VAL=$(grep -w -e "$CFG" $OUTPUT/.config)
        if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then
                echo "Value requested for $CFG not in final .config"
                echo "Requested value:  $REQUESTED_VAL"