]> git.sur5r.net Git - kconfig-frontends/blobdiff - utils/merge
version: set version for 3.10.0.0
[kconfig-frontends] / utils / merge
index 974d5cb7e30a5eb8abdd718371341160f9964dbb..81b0c61bb9e2060c18fb9dd315e8a9e0ae8a195a 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,25 +112,33 @@ 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
 fi
 
+# If we have an output dir, setup the O= argument, otherwise leave
+# it blank, since O=. will create an unnecessary ./source softlink
+OUTPUT_ARG=""
+if [ "$OUTPUT" != "." ] ; then
+       OUTPUT_ARG="O=$OUTPUT"
+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 $OUTPUT_ARG $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"