diff options
| -rwxr-xr-x | scripts/kconfig/merge_config.sh | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/scripts/kconfig/merge_config.sh b/scripts/kconfig/merge_config.sh index 974d5cb7e30a..05274fccb88e 100755 --- a/scripts/kconfig/merge_config.sh +++ b/scripts/kconfig/merge_config.sh | |||
| @@ -32,11 +32,13 @@ usage() { | |||
| 32 | echo " -m only merge the fragments, do not execute the make command" | 32 | echo " -m only merge the fragments, do not execute the make command" |
| 33 | echo " -n use allnoconfig instead of alldefconfig" | 33 | echo " -n use allnoconfig instead of alldefconfig" |
| 34 | echo " -r list redundant entries when merging fragments" | 34 | echo " -r list redundant entries when merging fragments" |
| 35 | echo " -O dir to put generated output files" | ||
| 35 | } | 36 | } |
| 36 | 37 | ||
| 37 | MAKE=true | 38 | MAKE=true |
| 38 | ALLTARGET=alldefconfig | 39 | ALLTARGET=alldefconfig |
| 39 | WARNREDUN=false | 40 | WARNREDUN=false |
| 41 | OUTPUT=. | ||
| 40 | 42 | ||
| 41 | while true; do | 43 | while true; do |
| 42 | case $1 in | 44 | case $1 in |
| @@ -59,6 +61,16 @@ while true; do | |||
| 59 | shift | 61 | shift |
| 60 | continue | 62 | continue |
| 61 | ;; | 63 | ;; |
| 64 | "-O") | ||
| 65 | if [ -d $2 ];then | ||
| 66 | OUTPUT=$(echo $2 | sed 's/\/*$//') | ||
| 67 | else | ||
| 68 | echo "output directory $2 does not exist" 1>&2 | ||
| 69 | exit 1 | ||
| 70 | fi | ||
| 71 | shift 2 | ||
| 72 | continue | ||
| 73 | ;; | ||
| 62 | *) | 74 | *) |
| 63 | break | 75 | break |
| 64 | ;; | 76 | ;; |
| @@ -100,9 +112,9 @@ for MERGE_FILE in $MERGE_LIST ; do | |||
| 100 | done | 112 | done |
| 101 | 113 | ||
| 102 | if [ "$MAKE" = "false" ]; then | 114 | if [ "$MAKE" = "false" ]; then |
| 103 | cp $TMP_FILE .config | 115 | cp $TMP_FILE $OUTPUT/.config |
| 104 | echo "#" | 116 | echo "#" |
| 105 | echo "# merged configuration written to .config (needs make)" | 117 | echo "# merged configuration written to $OUTPUT/.config (needs make)" |
| 106 | echo "#" | 118 | echo "#" |
| 107 | clean_up | 119 | clean_up |
| 108 | exit | 120 | exit |
| @@ -111,14 +123,14 @@ fi | |||
| 111 | # Use the merged file as the starting point for: | 123 | # Use the merged file as the starting point for: |
| 112 | # alldefconfig: Fills in any missing symbols with Kconfig default | 124 | # alldefconfig: Fills in any missing symbols with Kconfig default |
| 113 | # allnoconfig: Fills in any missing symbols with # CONFIG_* is not set | 125 | # allnoconfig: Fills in any missing symbols with # CONFIG_* is not set |
| 114 | make KCONFIG_ALLCONFIG=$TMP_FILE $ALLTARGET | 126 | make KCONFIG_ALLCONFIG=$TMP_FILE O=$OUTPUT $ALLTARGET |
| 115 | 127 | ||
| 116 | 128 | ||
| 117 | # Check all specified config values took (might have missed-dependency issues) | 129 | # Check all specified config values took (might have missed-dependency issues) |
| 118 | for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do | 130 | for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do |
| 119 | 131 | ||
| 120 | REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) | 132 | REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) |
| 121 | ACTUAL_VAL=$(grep -w -e "$CFG" .config) | 133 | ACTUAL_VAL=$(grep -w -e "$CFG" $OUTPUT/.config) |
| 122 | if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then | 134 | if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then |
| 123 | echo "Value requested for $CFG not in final .config" | 135 | echo "Value requested for $CFG not in final .config" |
| 124 | echo "Requested value: $REQUESTED_VAL" | 136 | echo "Requested value: $REQUESTED_VAL" |
