diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-10 19:06:46 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-10 19:06:46 -0400 |
| commit | b202c0d5205662fd96f7151afa83f891f2f4d542 (patch) | |
| tree | 1e44a453662d0a8b26b3d7799f280f6ddbd67403 /scripts/kconfig | |
| parent | cb63fc26623ee38fd84d71ea5a98189240ec2e1b (diff) | |
| parent | b57caaaed2bd127fe656e6c145970ed6a05c0125 (diff) | |
Merge branch 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
Pull kconfig updates from Michal Marek:
- dependency solver fix for make defconfig
- randconfig fixes, one of which had to be reverted again
- more user-friendly sorting of search results
- hex and range keywords support longs
- fix for [mn]conf not to rely on particular behavior of the LINES and
COLS variables
- cleanup of magic constants in kconfig/lxdialog
- [mn]conf formatting fixes
- fix for scripts/config's help text in out-of-tree usage (under a
different name)
* 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
kconfig: allow "hex" and "range" to support longs
Revert "kconfig: fix randomising choice entries in presence of KCONFIG_ALLCONFIG"
kconfig: fix randomising choice entries in presence of KCONFIG_ALLCONFIG
kconfig: loop as long as we changed some symbols in randconfig
kconfig/[mn]conf: make it explicit in the search box that a regexp is possible
kconfig: sort found symbols by relevance
kconfig/conf: print the seed used to initialise the RNG for randconfig
kconfig/conf: accept a base-16 seed for randconfig
kconfig/conf: fix randconfig setting multiple symbols in a choice
scripts/config: replace hard-coded script name by a dynamic value
mconf/nconf: mark empty menus/menuconfigs different from non-empty ones
nconf: use function calls instead of ncurses' variables LINES and COLS
mconf: use function calls instead of ncurses' variables LINES and COLS
kconfig/lxdialog: handle newline characters in print_autowrap()
kconfig/lxdialog: Use new mininimum resize definitions in conf_choice()
kconfig/lxdialog: Add definitions for mininimum (re)size values
kconfig: Fix defconfig when one choice menu selects options that another choice menu depends on
Diffstat (limited to 'scripts/kconfig')
| -rw-r--r-- | scripts/kconfig/conf.c | 6 | ||||
| -rw-r--r-- | scripts/kconfig/confdata.c | 33 | ||||
| -rw-r--r-- | scripts/kconfig/expr.h | 3 | ||||
| -rw-r--r-- | scripts/kconfig/lkc.h | 3 | ||||
| -rw-r--r-- | scripts/kconfig/lkc_proto.h | 1 | ||||
| -rw-r--r-- | scripts/kconfig/lxdialog/checklist.c | 8 | ||||
| -rw-r--r-- | scripts/kconfig/lxdialog/dialog.h | 14 | ||||
| -rw-r--r-- | scripts/kconfig/lxdialog/inputbox.c | 8 | ||||
| -rw-r--r-- | scripts/kconfig/lxdialog/menubox.c | 6 | ||||
| -rw-r--r-- | scripts/kconfig/lxdialog/textbox.c | 6 | ||||
| -rw-r--r-- | scripts/kconfig/lxdialog/util.c | 46 | ||||
| -rw-r--r-- | scripts/kconfig/lxdialog/yesno.c | 8 | ||||
| -rw-r--r-- | scripts/kconfig/mconf.c | 21 | ||||
| -rw-r--r-- | scripts/kconfig/menu.c | 16 | ||||
| -rw-r--r-- | scripts/kconfig/nconf.c | 39 | ||||
| -rw-r--r-- | scripts/kconfig/nconf.gui.c | 20 | ||||
| -rw-r--r-- | scripts/kconfig/symbol.c | 99 |
17 files changed, 242 insertions, 95 deletions
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index bde5b95c8c19..d19944f9c3ac 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c | |||
| @@ -527,11 +527,12 @@ int main(int ac, char **av) | |||
| 527 | seed_env = getenv("KCONFIG_SEED"); | 527 | seed_env = getenv("KCONFIG_SEED"); |
| 528 | if( seed_env && *seed_env ) { | 528 | if( seed_env && *seed_env ) { |
| 529 | char *endp; | 529 | char *endp; |
| 530 | int tmp = (int)strtol(seed_env, &endp, 10); | 530 | int tmp = (int)strtol(seed_env, &endp, 0); |
| 531 | if (*endp == '\0') { | 531 | if (*endp == '\0') { |
| 532 | seed = tmp; | 532 | seed = tmp; |
| 533 | } | 533 | } |
| 534 | } | 534 | } |
| 535 | fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed ); | ||
| 535 | srand(seed); | 536 | srand(seed); |
| 536 | break; | 537 | break; |
| 537 | } | 538 | } |
| @@ -653,7 +654,8 @@ int main(int ac, char **av) | |||
| 653 | conf_set_all_new_symbols(def_default); | 654 | conf_set_all_new_symbols(def_default); |
| 654 | break; | 655 | break; |
| 655 | case randconfig: | 656 | case randconfig: |
| 656 | conf_set_all_new_symbols(def_random); | 657 | /* Really nothing to do in this loop */ |
| 658 | while (conf_set_all_new_symbols(def_random)) ; | ||
| 657 | break; | 659 | break; |
| 658 | case defconfig: | 660 | case defconfig: |
| 659 | conf_set_all_new_symbols(def_default); | 661 | conf_set_all_new_symbols(def_default); |
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c index 43eda40c3838..c55c227af463 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c | |||
| @@ -1040,7 +1040,7 @@ void conf_set_changed_callback(void (*fn)(void)) | |||
| 1040 | conf_changed_callback = fn; | 1040 | conf_changed_callback = fn; |
| 1041 | } | 1041 | } |
| 1042 | 1042 | ||
| 1043 | static void randomize_choice_values(struct symbol *csym) | 1043 | static bool randomize_choice_values(struct symbol *csym) |
| 1044 | { | 1044 | { |
| 1045 | struct property *prop; | 1045 | struct property *prop; |
| 1046 | struct symbol *sym; | 1046 | struct symbol *sym; |
| @@ -1053,7 +1053,7 @@ static void randomize_choice_values(struct symbol *csym) | |||
| 1053 | * In both cases stop. | 1053 | * In both cases stop. |
| 1054 | */ | 1054 | */ |
| 1055 | if (csym->curr.tri != yes) | 1055 | if (csym->curr.tri != yes) |
| 1056 | return; | 1056 | return false; |
| 1057 | 1057 | ||
| 1058 | prop = sym_get_choice_prop(csym); | 1058 | prop = sym_get_choice_prop(csym); |
| 1059 | 1059 | ||
| @@ -1077,13 +1077,18 @@ static void randomize_choice_values(struct symbol *csym) | |||
| 1077 | else { | 1077 | else { |
| 1078 | sym->def[S_DEF_USER].tri = no; | 1078 | sym->def[S_DEF_USER].tri = no; |
| 1079 | } | 1079 | } |
| 1080 | sym->flags |= SYMBOL_DEF_USER; | ||
| 1081 | /* clear VALID to get value calculated */ | ||
| 1082 | sym->flags &= ~SYMBOL_VALID; | ||
| 1080 | } | 1083 | } |
| 1081 | csym->flags |= SYMBOL_DEF_USER; | 1084 | csym->flags |= SYMBOL_DEF_USER; |
| 1082 | /* clear VALID to get value calculated */ | 1085 | /* clear VALID to get value calculated */ |
| 1083 | csym->flags &= ~(SYMBOL_VALID); | 1086 | csym->flags &= ~(SYMBOL_VALID); |
| 1087 | |||
| 1088 | return true; | ||
| 1084 | } | 1089 | } |
| 1085 | 1090 | ||
| 1086 | static void set_all_choice_values(struct symbol *csym) | 1091 | void set_all_choice_values(struct symbol *csym) |
| 1087 | { | 1092 | { |
| 1088 | struct property *prop; | 1093 | struct property *prop; |
| 1089 | struct symbol *sym; | 1094 | struct symbol *sym; |
| @@ -1100,10 +1105,10 @@ static void set_all_choice_values(struct symbol *csym) | |||
| 1100 | } | 1105 | } |
| 1101 | csym->flags |= SYMBOL_DEF_USER; | 1106 | csym->flags |= SYMBOL_DEF_USER; |
| 1102 | /* clear VALID to get value calculated */ | 1107 | /* clear VALID to get value calculated */ |
| 1103 | csym->flags &= ~(SYMBOL_VALID); | 1108 | csym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES); |
| 1104 | } | 1109 | } |
| 1105 | 1110 | ||
| 1106 | void conf_set_all_new_symbols(enum conf_def_mode mode) | 1111 | bool conf_set_all_new_symbols(enum conf_def_mode mode) |
| 1107 | { | 1112 | { |
| 1108 | struct symbol *sym, *csym; | 1113 | struct symbol *sym, *csym; |
| 1109 | int i, cnt, pby, pty, ptm; /* pby: probability of boolean = y | 1114 | int i, cnt, pby, pty, ptm; /* pby: probability of boolean = y |
| @@ -1151,6 +1156,7 @@ void conf_set_all_new_symbols(enum conf_def_mode mode) | |||
| 1151 | exit( 1 ); | 1156 | exit( 1 ); |
| 1152 | } | 1157 | } |
| 1153 | } | 1158 | } |
| 1159 | bool has_changed = false; | ||
| 1154 | 1160 | ||
| 1155 | for_all_symbols(i, sym) { | 1161 | for_all_symbols(i, sym) { |
| 1156 | if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID)) | 1162 | if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID)) |
| @@ -1158,6 +1164,7 @@ void conf_set_all_new_symbols(enum conf_def_mode mode) | |||
| 1158 | switch (sym_get_type(sym)) { | 1164 | switch (sym_get_type(sym)) { |
| 1159 | case S_BOOLEAN: | 1165 | case S_BOOLEAN: |
| 1160 | case S_TRISTATE: | 1166 | case S_TRISTATE: |
| 1167 | has_changed = true; | ||
| 1161 | switch (mode) { | 1168 | switch (mode) { |
| 1162 | case def_yes: | 1169 | case def_yes: |
| 1163 | sym->def[S_DEF_USER].tri = yes; | 1170 | sym->def[S_DEF_USER].tri = yes; |
| @@ -1202,14 +1209,26 @@ void conf_set_all_new_symbols(enum conf_def_mode mode) | |||
| 1202 | * selected in a choice block and we set it to yes, | 1209 | * selected in a choice block and we set it to yes, |
| 1203 | * and the rest to no. | 1210 | * and the rest to no. |
| 1204 | */ | 1211 | */ |
| 1212 | if (mode != def_random) { | ||
| 1213 | for_all_symbols(i, csym) { | ||
| 1214 | if ((sym_is_choice(csym) && !sym_has_value(csym)) || | ||
| 1215 | sym_is_choice_value(csym)) | ||
| 1216 | csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES; | ||
| 1217 | } | ||
| 1218 | } | ||
| 1219 | |||
| 1205 | for_all_symbols(i, csym) { | 1220 | for_all_symbols(i, csym) { |
| 1206 | if (sym_has_value(csym) || !sym_is_choice(csym)) | 1221 | if (sym_has_value(csym) || !sym_is_choice(csym)) |
| 1207 | continue; | 1222 | continue; |
| 1208 | 1223 | ||
| 1209 | sym_calc_value(csym); | 1224 | sym_calc_value(csym); |
| 1210 | if (mode == def_random) | 1225 | if (mode == def_random) |
| 1211 | randomize_choice_values(csym); | 1226 | has_changed = randomize_choice_values(csym); |
| 1212 | else | 1227 | else { |
| 1213 | set_all_choice_values(csym); | 1228 | set_all_choice_values(csym); |
| 1229 | has_changed = true; | ||
| 1230 | } | ||
| 1214 | } | 1231 | } |
| 1232 | |||
| 1233 | return has_changed; | ||
| 1215 | } | 1234 | } |
diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h index cdd48600e02a..df198a5f4822 100644 --- a/scripts/kconfig/expr.h +++ b/scripts/kconfig/expr.h | |||
| @@ -106,6 +106,9 @@ struct symbol { | |||
| 106 | #define SYMBOL_DEF3 0x40000 /* symbol.def[S_DEF_3] is valid */ | 106 | #define SYMBOL_DEF3 0x40000 /* symbol.def[S_DEF_3] is valid */ |
