diff --git a/scripts/config/expr.h b/scripts/config/expr.h index fdeb1495f1..c1c56065b0 100644 --- a/scripts/config/expr.h +++ b/scripts/config/expr.h @@ -94,14 +94,13 @@ struct symbol { #define SYMBOL_AUTO 0x1000 #define SYMBOL_CHECKED 0x2000 #define SYMBOL_WARNED 0x8000 -#define SYMBOL_RESET 0x10000 #define SYMBOL_MAXLENGTH 256 #define SYMBOL_HASHSIZE 257 #define SYMBOL_HASHMASK 0xff enum prop_type { - P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE + P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE, P_RESET }; struct property { diff --git a/scripts/config/mconf.c b/scripts/config/mconf.c index 083b23efa3..74036174fc 100644 --- a/scripts/config/mconf.c +++ b/scripts/config/mconf.c @@ -888,6 +888,7 @@ static void conf_choice(struct menu *menu) const char *prompt = menu_get_prompt(menu); struct menu *child; struct symbol *active; + struct property *prop; int stat; active = sym_get_choice_value(menu->sym); @@ -920,9 +921,13 @@ static void conf_choice(struct menu *menu) case 0: if (sscanf(input_buf, "%p", &child) != 1) break; - if ((menu->sym->flags & SYMBOL_RESET) && - sym_get_tristate_value(child->sym) != yes) - conf_reset(); + + if (sym_get_tristate_value(child->sym) != yes) { + for_all_properties(menu->sym, prop, P_RESET) { + if (expr_calc_value(prop->visible.expr) != no) + conf_reset(); + } + } sym_set_tristate_value(child->sym, yes); return; case 1: diff --git a/scripts/config/zconf.tab.c_shipped b/scripts/config/zconf.tab.c_shipped index 10e94c9363..c7c0f0c42c 100644 --- a/scripts/config/zconf.tab.c_shipped +++ b/scripts/config/zconf.tab.c_shipped @@ -319,7 +319,7 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 275 +#define YYLAST 271 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 36 @@ -328,7 +328,7 @@ union yyalloc /* YYNRULES -- Number of rules. */ #define YYNRULES 106 /* YYNRULES -- Number of states. */ -#define YYNSTATES 178 +#define YYNSTATES 179 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -382,12 +382,12 @@ static const unsigned short int yyprhs[] = 53, 55, 57, 59, 61, 63, 65, 69, 72, 76, 79, 83, 86, 87, 90, 93, 96, 99, 102, 106, 111, 116, 121, 127, 130, 133, 135, 139, 140, 143, - 146, 149, 152, 155, 160, 164, 167, 170, 175, 176, - 179, 183, 185, 189, 190, 193, 196, 199, 203, 206, - 208, 212, 213, 216, 219, 222, 226, 230, 233, 236, - 239, 240, 243, 246, 249, 254, 258, 262, 263, 266, - 268, 270, 273, 276, 279, 281, 284, 285, 288, 290, - 294, 298, 302, 305, 309, 313, 315 + 146, 149, 152, 155, 160, 164, 167, 171, 176, 177, + 180, 184, 186, 190, 191, 194, 197, 200, 204, 207, + 209, 213, 214, 217, 220, 223, 227, 231, 234, 237, + 240, 241, 244, 247, 250, 255, 259, 263, 264, 267, + 269, 271, 274, 277, 280, 282, 285, 286, 289, 291, + 295, 299, 303, 306, 310, 314, 316 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -409,22 +409,22 @@ static const yysigned_char yyrhs[] = 48, 52, -1, 73, -1, 49, 54, 50, -1, -1, 52, 53, -1, 52, 70, -1, 52, 68, -1, 52, 31, -1, 52, 41, -1, 19, 72, 75, 31, -1, - 20, 71, 31, -1, 18, 31, -1, 25, 31, -1, - 21, 26, 75, 31, -1, -1, 54, 40, -1, 14, - 76, 74, -1, 73, -1, 55, 58, 56, -1, -1, - 58, 40, -1, 58, 62, -1, 58, 51, -1, 4, - 72, 31, -1, 59, 69, -1, 73, -1, 60, 63, - 61, -1, -1, 63, 40, -1, 63, 62, -1, 63, - 51, -1, 6, 72, 31, -1, 9, 72, 31, -1, - 65, 69, -1, 12, 31, -1, 67, 13, -1, -1, - 69, 70, -1, 69, 31, -1, 69, 41, -1, 16, - 24, 76, 31, -1, 16, 76, 31, -1, 17, 76, - 31, -1, -1, 72, 75, -1, 26, -1, 27, -1, - 5, 31, -1, 8, 31, -1, 15, 31, -1, 31, - -1, 74, 31, -1, -1, 14, 76, -1, 77, -1, - 77, 34, 77, -1, 77, 28, 77, -1, 30, 76, - 29, -1, 35, 76, -1, 76, 32, 76, -1, 76, - 33, 76, -1, 26, -1, 27, -1 + 20, 71, 31, -1, 18, 31, -1, 25, 75, 31, + -1, 21, 26, 75, 31, -1, -1, 54, 40, -1, + 14, 76, 74, -1, 73, -1, 55, 58, 56, -1, + -1, 58, 40, -1, 58, 62, -1, 58, 51, -1, + 4, 72, 31, -1, 59, 69, -1, 73, -1, 60, + 63, 61, -1, -1, 63, 40, -1, 63, 62, -1, + 63, 51, -1, 6, 72, 31, -1, 9, 72, 31, + -1, 65, 69, -1, 12, 31, -1, 67, 13, -1, + -1, 69, 70, -1, 69, 31, -1, 69, 41, -1, + 16, 24, 76, 31, -1, 16, 76, 31, -1, 17, + 76, 31, -1, -1, 72, 75, -1, 26, -1, 27, + -1, 5, 31, -1, 8, 31, -1, 15, 31, -1, + 31, -1, 74, 31, -1, -1, 14, 76, -1, 77, + -1, 77, 34, 77, -1, 77, 28, 77, -1, 30, + 76, 29, -1, 35, 76, -1, 76, 32, 76, -1, + 76, 33, 76, -1, 26, -1, 27, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -503,7 +503,7 @@ static const unsigned char yyr2[] = 1, 1, 1, 1, 1, 1, 3, 2, 3, 2, 3, 2, 0, 2, 2, 2, 2, 2, 3, 4, 4, 4, 5, 2, 2, 1, 3, 0, 2, 2, - 2, 2, 2, 4, 3, 2, 2, 4, 0, 2, + 2, 2, 2, 4, 3, 2, 3, 4, 0, 2, 3, 1, 3, 0, 2, 2, 2, 3, 2, 1, 3, 0, 2, 2, 2, 3, 3, 2, 2, 2, 0, 2, 2, 2, 4, 3, 3, 0, 2, 1, @@ -526,14 +526,14 @@ static const unsigned char yydefact[] = 0, 0, 0, 94, 7, 67, 75, 76, 28, 30, 0, 102, 0, 0, 60, 0, 0, 9, 10, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 37, - 36, 33, 0, 35, 34, 0, 0, 87, 0, 0, + 36, 33, 0, 35, 34, 0, 0, 87, 0, 96, 51, 52, 48, 50, 49, 59, 46, 45, 64, 66, 62, 65, 61, 82, 83, 81, 72, 74, 70, 73, 69, 95, 101, 103, 104, 100, 99, 27, 78, 0, 0, 0, 96, 0, 96, 96, 96, 0, 0, 79, - 55, 96, 0, 96, 56, 0, 85, 86, 0, 0, - 38, 88, 0, 0, 96, 26, 0, 54, 0, 84, - 97, 39, 40, 41, 0, 53, 57, 42 + 55, 96, 0, 96, 0, 0, 0, 85, 86, 0, + 38, 88, 0, 0, 96, 26, 0, 54, 0, 97, + 56, 84, 39, 40, 41, 0, 53, 57, 42 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -542,7 +542,7 @@ static const short int yydefgoto[] = -1, 1, 2, 26, 27, 100, 28, 29, 30, 31, 65, 101, 32, 33, 116, 34, 67, 112, 68, 35, 120, 36, 69, 37, 38, 128, 39, 71, 40, 41, - 42, 102, 103, 70, 104, 143, 144, 43, 74, 159, + 42, 102, 103, 70, 104, 143, 144, 43, 74, 155, 60, 61 }; @@ -551,33 +551,33 @@ static const short int yydefgoto[] = #define YYPACT_NINF -134 static const short int yypact[] = { - -134, 2, 160, -134, -21, -10, -10, -8, -10, -1, - 21, -10, 64, 68, 212, 84, -134, -134, -134, -134, - -134, -134, -134, -134, 125, -134, 128, -134, -134, -134, + -134, 2, 160, -134, -16, 53, 53, -14, 53, -8, + -1, 53, 26, 63, 60, 73, -134, -134, -134, -134, + -134, -134, -134, -134, 114, -134, 125, -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, - -134, -134, -134, -134, -134, -134, -134, 99, 112, -134, - 113, -134, -134, 124, 127, 141, -134, -134, 212, 212, - 3, -19, -134, 142, 153, 39, 102, 187, 226, 215, - 67, 215, 131, -134, 159, -134, -134, -134, -134, -134, - 34, -134, 212, 212, 159, 53, 53, -134, -134, 163, - 169, 65, 212, -10, -10, 212, 133, 53, 176, -134, - -134, -134, 203, -134, -134, 196, -10, -10, 202, 213, + -134, -134, -134, -134, -134, -134, -134, 124, 127, -134, + 128, -134, -134, 141, 142, 146, -134, -134, 60, 60, + 3, -18, -134, 153, 159, 39, 102, 187, 226, 215, + 67, 215, 131, -134, 163, -134, -134, -134, -134, -134, + 34, -134, 60, 60, 163, 103, 103, -134, -134, 169, + 186, 218, 60, 53, 53, 60, 201, 103, 227, -134, + -134, -134, 220, -134, -134, 207, 53, 53, 213, 229, -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, - -134, -134, -134, 200, -134, -134, -134, -134, -134, 212, - 178, 217, 240, 224, 240, 0, 240, 53, 225, -134, - -134, 240, 227, 240, -134, 220, -134, -134, 212, 228, - -134, -134, 229, 230, 240, -134, 231, -134, 232, -134, - 54, -134, -134, -134, 233, -134, -134, -134 + -134, -134, -134, 214, -134, -134, -134, -134, -134, 60, + 178, 183, 229, 224, 229, 0, 229, 103, 228, -134, + -134, 229, 230, 229, 60, 231, 219, -134, -134, 232, + -134, -134, 233, 234, 229, -134, 235, -134, 236, 111, + -134, -134, -134, -134, -134, 237, -134, -134, -134 }; /* YYPGOTO[NTERM-NUM]. */ static const short int yypgoto[] = { - -134, -134, -134, -134, 28, -46, -134, -134, -134, -134, - 235, -134, -134, -134, -134, 118, -134, -134, -134, -134, - -134, -134, -134, -134, -134, -134, 174, -134, -134, -134, - -134, -134, 199, 234, -45, 161, -5, 146, 207, -133, + -134, -134, -134, -134, 23, -46, -134, -134, -134, -134, + 239, -134, -134, -134, -134, 118, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, 185, -134, -134, -134, + -134, -134, 182, 217, -45, 164, -5, 28, 200, -133, -54, -78 }; @@ -588,66 +588,66 @@ static const short int yypgoto[] = #define YYTABLE_NINF -78 static const short int yytable[] = { - 47, 48, 3, 50, 80, 81, 53, 135, 136, 85, - 44, 161, 162, 163, 158, 86, 45, 46, 166, 147, - 168, 111, 114, 49, 124, 125, 124, 125, 133, 134, - 51, 174, 82, 83, 73, 82, 83, 140, 141, -29, + 47, 48, 3, 50, 80, 81, 53, 135, 136, 159, + 85, 161, 162, 163, 154, 44, 86, 49, 166, 147, + 168, 111, 114, 51, 124, 125, 124, 125, 133, 134, + 52, 175, 82, 83, 73, 82, 83, 140, 141, -29, 89, 145, -29, -29, -29, -29, -29, -29, -29, -29, - -29, 90, 52, -29, -29, 91, 92, -29, 93, 94, + -29, 90, 54, -29, -29, 91, 92, -29, 93, 94, 95, 96, 97, 132, -29, 98, 82, 83, 89, 164, - 99, -68, -68, -68, -68, -68, -68, -68, -68, 56, - 57, -68, -68, 91, 92, 155, 82, 83, 142, 139, - 54, 56, 57, 98, 55, 58, 115, 118, 123, 126, - 59, 151, -31, 89, 170, -31, -31, -31, -31, -31, - -31, -31, -31, -31, 90, 62, -31, -31, 91, 92, - -31, 93, 94, 95, 96, 97, 63, -31, 98, 64, - 73, -77, 89, 99, -77, -77, -77, -77, -77, -77, - -77, -77, -77, 75, 76, -77, -77, 91, 92, -77, - -77, -77, -77, -77, -77, 77, -77, 98, 78, 146, + 99, -68, -68, -68, -68, -68, -68, -68, -68, 45, + 46, -68, -68, 91, 92, 156, 56, 57, 142, 55, + 58, 115, 118, 98, 126, 59, 117, 122, 123, 130, + 169, 151, -31, 89, 62, -31, -31, -31, -31, -31, + -31, -31, -31, -31, 90, 63, -31, -31, 91, 92, + -31, 93, 94, 95, 96, 97, 64, -31, 98, 56, + 57, -77, 89, 99, -77, -77, -77, -77, -77, -77, + -77, -77, -77, 82, 83, -77, -77, 91, 92, -77, + -77, -77, -77, -77, -77, 73, -77, 98, 75, 76, -2, 4, 123, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 79, 87, 14, 15, 16, 148, 17, 18, - 19, 20, 21, 22, 88, 23, 24, 119, 89, 127, - 131, 25, -44, -44, 137, -44, -44, -44, -44, 90, - 138, -44, -44, 91, 92, 105, 106, 107, 108, 156, - 82, 83, 109, 98, 117, 122, 149, 130, 110, 6, - 7, 8, 9, 10, 11, 12, 13, 150, 153, 14, - 15, 7, 8, 83, 10, 11, 12, 13, 56, 57, - 14, 15, 58, 121, 154, 129, 25, 59, 157, 82, - 83, 169, 82, 83, 158, 160, 165, 25, 167, 171, - 172, 173, 175, 176, 177, 66, 113, 84, 152, 0, - 0, 0, 0, 0, 0, 72 + 12, 13, 77, 78, 14, 15, 16, 79, 17, 18, + 19, 20, 21, 22, 87, 23, 24, 119, 89, 127, + 88, 25, -44, -44, 131, -44, -44, -44, -44, 90, + 137, -44, -44, 91, 92, 105, 106, 107, 108, 157, + 82, 83, 109, 98, 158, 82, 83, 138, 110, 6, + 7, 8, 9, 10, 11, 12, 13, 146, 148, 14, + 15, 7, 8, 149, 10, 11, 12, 13, 150, 153, + 14, 15, 139, 154, 56, 57, 25, 83, 58, 113, + 171, 82, 83, 59, 121, 160, 129, 25, 72, 165, + 84, 167, 170, 172, 173, 174, 176, 177, 178, 66, + 0, 152 }; static const short int yycheck[] = { - 5, 6, 0, 8, 58, 59, 11, 85, 86, 28, - 31, 144, 145, 146, 14, 34, 26, 27, 151, 97, + 5, 6, 0, 8, 58, 59, 11, 85, 86, 142, + 28, 144, 145, 146, 14, 31, 34, 31, 151, 97, 153, 67, 67, 31, 70, 70, 72, 72, 82, 83, 31, 164, 32, 33, 31, 32, 33, 91, 92, 0, 1, 95, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 31, 14, 15, 16, 17, 18, 19, 20, + 11, 12, 26, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 29, 25, 26, 32, 33, 1, 147, 31, 4, 5, 6, 7, 8, 9, 10, 11, 26, - 27, 14, 15, 16, 17, 139, 32, 33, 93, 24, - 26, 26, 27, 26, 26, 30, 68, 69, 31, 71, - 35, 106, 0, 1, 158, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 31, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 1, 25, 26, 1, - 31, 0, 1, 31, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 31, 31, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 31, 25, 26, 31, 26, + 27, 14, 15, 16, 17, 139, 26, 27, 93, 26, + 30, 68, 69, 26, 71, 35, 68, 69, 31, 71, + 154, 106, 0, 1, 31, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 1, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 1, 25, 26, 26, + 27, 0, 1, 31, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 32, 33, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 31, 25, 26, 31, 31, 0, 1, 31, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 31, 31, 14, 15, 16, 1, 18, 19, + 10, 11, 31, 31, 14, 15, 16, 31, 18, 19, 20, 21, 22, 23, 31, 25, 26, 69, 1, 71, 31, 31, 5, 6, 31, 8, 9, 10, 11, 12, 31, 14, 15, 16, 17, 18, 19, 20, 21, 31, - 32, 33, 25, 26, 68, 69, 13, 71, 31, 4, - 5, 6, 7, 8, 9, 10, 11, 31, 26, 14, - 15, 5, 6, 33, 8, 9, 10, 11, 26, 27, - 14, 15, 30, 69, 31, 71, 31, 35, 31, 32, - 33, 31, 32, 33, 14, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 30, 67, 60, 107, -1, - -1, -1, -1, -1, -1, 41 + 32, 33, 25, 26, 31, 32, 33, 31, 31, 4, + 5, 6, 7, 8, 9, 10, 11, 26, 1, 14, + 15, 5, 6, 13, 8, 9, 10, 11, 31, 26, + 14, 15, 24, 14, 26, 27, 31, 33, 30, 67, + 31, 32, 33, 35, 69, 31, 71, 31, 41, 31, + 60, 31, 31, 31, 31, 31, 31, 31, 31, 30, + -1, 107 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -669,9 +669,9 @@ static const unsigned char yystos[] = 56, 62, 73, 31, 41, 70, 40, 51, 61, 62, 73, 31, 29, 76, 76, 77, 77, 31, 31, 24, 76, 76, 72, 71, 72, 76, 26, 77, 1, 13, - 31, 72, 71, 26, 31, 76, 31, 31, 14, 75, - 31, 75, 75, 75, 77, 31, 75, 31, 75, 31, - 76, 31, 31, 31, 75, 31, 31, 31 + 31, 72, 71, 26, 14, 75, 76, 31, 31, 75, + 31, 75, 75, 75, 77, 31, 75, 31, 75, 76, + 31, 31, 31, 31, 31, 75, 31, 31, 31 }; #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) @@ -1490,7 +1490,7 @@ yyreduce: case 56: { - current_entry->sym->flags |= SYMBOL_RESET; + menu_add_prop(P_RESET, NULL, NULL, yyvsp[-1].expr); ;} break; diff --git a/scripts/config/zconf.y b/scripts/config/zconf.y index ce13f02695..4b8ba45061 100644 --- a/scripts/config/zconf.y +++ b/scripts/config/zconf.y @@ -275,9 +275,9 @@ choice_option: T_OPTIONAL T_EOL printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); }; -choice_option: T_RESET T_EOL +choice_option: T_RESET if_expr T_EOL { - current_entry->sym->flags |= SYMBOL_RESET; + menu_add_prop(P_RESET, NULL, NULL, $2); }; choice_option: T_DEFAULT T_WORD if_expr T_EOL diff --git a/scripts/metadata.pl b/scripts/metadata.pl index 1228679795..b5ee31a49a 100755 --- a/scripts/metadata.pl +++ b/scripts/metadata.pl @@ -203,7 +203,7 @@ sub gen_target_config() { choice prompt "Target System" default LINUX_2_4_BRCM - reset + reset if !DEVEL EOF