|
@@ -74,17 +74,60 @@ enum {
|
|
S_DEF_COUNT
|
|
S_DEF_COUNT
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * Represents a configuration symbol.
|
|
|
|
+ *
|
|
|
|
+ * Choices are represented as a special kind of symbol and have the
|
|
|
|
+ * SYMBOL_CHOICE bit set in 'flags'.
|
|
|
|
+ */
|
|
struct symbol {
|
|
struct symbol {
|
|
|
|
+ /* The next symbol in the same bucket in the symbol hash table */
|
|
struct symbol *next;
|
|
struct symbol *next;
|
|
|
|
+
|
|
|
|
+ /* The name of the symbol, e.g. "FOO" for 'config FOO' */
|
|
char *name;
|
|
char *name;
|
|
|
|
+
|
|
|
|
+ /* S_BOOLEAN, S_TRISTATE, ... */
|
|
enum symbol_type type;
|
|
enum symbol_type type;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * The calculated value of the symbol. The SYMBOL_VALID bit is set in
|
|
|
|
+ * 'flags' when this is up to date. Note that this value might differ
|
|
|
|
+ * from the user value set in e.g. a .config file, due to visibility.
|
|
|
|
+ */
|
|
struct symbol_value curr;
|
|
struct symbol_value curr;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * Values for the symbol provided from outside. def[S_DEF_USER] holds
|
|
|
|
+ * the .config value.
|
|
|
|
+ */
|
|
struct symbol_value def[S_DEF_COUNT];
|
|
struct symbol_value def[S_DEF_COUNT];
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * An upper bound on the tristate value the user can set for the symbol
|
|
|
|
+ * if it is a boolean or tristate. Calculated from prompt dependencies,
|
|
|
|
+ * which also inherit dependencies from enclosing menus, choices, and
|
|
|
|
+ * ifs. If 'n', the user value will be ignored.
|
|
|
|
+ *
|
|
|
|
+ * Symbols lacking prompts always have visibility 'n'.
|
|
|
|
+ */
|
|
tristate visible;
|
|
tristate visible;
|
|
|
|
+
|
|
|
|
+ /* SYMBOL_* flags */
|
|
int flags;
|
|
int flags;
|
|
|
|
+
|
|
|
|
+ /* List of properties. See prop_type. */
|
|
struct property *prop;
|
|
struct property *prop;
|
|
|
|
+
|
|
|
|
+ /* Dependencies from enclosing menus, choices, and ifs */
|
|
struct expr_value dir_dep;
|
|
struct expr_value dir_dep;
|
|
|
|
+
|
|
|
|
+ /* Reverse dependencies through being selected by other symbols */
|
|
struct expr_value rev_dep;
|
|
struct expr_value rev_dep;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * "Weak" reverse dependencies through being implied by other symbols
|
|
|
|
+ */
|
|
struct expr_value implied;
|
|
struct expr_value implied;
|
|
};
|
|
};
|
|
|
|
|
|
@@ -133,7 +176,7 @@ enum prop_type {
|
|
P_UNKNOWN,
|
|
P_UNKNOWN,
|
|
P_PROMPT, /* prompt "foo prompt" or "BAZ Value" */
|
|
P_PROMPT, /* prompt "foo prompt" or "BAZ Value" */
|
|
P_COMMENT, /* text associated with a comment */
|
|
P_COMMENT, /* text associated with a comment */
|
|
- P_MENU, /* prompt associated with a menuconfig option */
|
|
|
|
|
|
+ P_MENU, /* prompt associated with a menu or menuconfig symbol */
|
|
P_DEFAULT, /* default y */
|
|
P_DEFAULT, /* default y */
|
|
P_CHOICE, /* choice value */
|
|
P_CHOICE, /* choice value */
|
|
P_SELECT, /* select BAR */
|
|
P_SELECT, /* select BAR */
|