diff options
Diffstat (limited to 'scripts/kconfig/expr.h')
| -rw-r--r-- | scripts/kconfig/expr.h | 28 | 
1 files changed, 20 insertions, 8 deletions
diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h index 184eb6a0b50..412ea8a2abb 100644 --- a/scripts/kconfig/expr.h +++ b/scripts/kconfig/expr.h @@ -10,7 +10,9 @@  extern "C" {  #endif +#include <assert.h>  #include <stdio.h> +#include "list.h"  #ifndef __cplusplus  #include <stdbool.h>  #endif @@ -20,12 +22,8 @@ struct file {  	struct file *parent;  	const char *name;  	int lineno; -	int flags;  }; -#define FILE_BUSY		0x0001 -#define FILE_SCANNED		0x0002 -  typedef enum tristate {  	no, mod, yes  } tristate; @@ -95,7 +93,7 @@ struct symbol {  #define SYMBOL_CHOICEVAL  0x0020  /* used as a value in a choice block */  #define SYMBOL_VALID      0x0080  /* set when symbol.curr is calculated */  #define SYMBOL_OPTIONAL   0x0100  /* choice is optional - values can be 'n' */ -#define SYMBOL_WRITE      0x0200  /* ? */ +#define SYMBOL_WRITE      0x0200  /* write symbol to file (KCONFIG_CONFIG) */  #define SYMBOL_CHANGED    0x0400  /* ? */  #define SYMBOL_AUTO       0x1000  /* value from environment variable */  #define SYMBOL_CHECKED    0x2000  /* used during dependency checking */ @@ -108,6 +106,12 @@ struct symbol {  #define SYMBOL_DEF3       0x40000  /* symbol.def[S_DEF_3] is valid */  #define SYMBOL_DEF4       0x80000  /* symbol.def[S_DEF_4] is valid */ +/* choice values need to be set before calculating this symbol value */ +#define SYMBOL_NEED_SET_CHOICE_VALUES  0x100000 + +/* Set symbol to y if allnoconfig; used for symbols that hide others */ +#define SYMBOL_ALLNOCONFIG_Y 0x200000 +  #define SYMBOL_MAXLENGTH	256  #define SYMBOL_HASHSIZE		9973 @@ -164,6 +168,7 @@ struct menu {  	struct menu *list;  	struct symbol *sym;  	struct property *prompt; +	struct expr *visibility;  	struct expr *dep;  	unsigned int flags;  	char *help; @@ -175,7 +180,14 @@ struct menu {  #define MENU_CHANGED		0x0001  #define MENU_ROOT		0x0002 -#ifndef SWIG +struct jump_key { +	struct list_head entries; +	size_t offset; +	struct menu *target; +	int index; +}; + +#define JUMP_NB			9  extern struct file *file_list;  extern struct file *current_file; @@ -191,7 +203,7 @@ struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e  struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2);  struct expr *expr_alloc_and(struct expr *e1, struct expr *e2);  struct expr *expr_alloc_or(struct expr *e1, struct expr *e2); -struct expr *expr_copy(struct expr *org); +struct expr *expr_copy(const struct expr *org);  void expr_free(struct expr *e);  int expr_eq(struct expr *e1, struct expr *e2);  void expr_eliminate_eq(struct expr **ep1, struct expr **ep2); @@ -206,6 +218,7 @@ struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2);  struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2);  void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2);  struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym); +struct expr *expr_simplify_unmet_dep(struct expr *e1, struct expr *e2);  void expr_fprint(struct expr *e, FILE *out);  struct gstr; /* forward */ @@ -220,7 +233,6 @@ static inline int expr_is_no(struct expr *e)  {  	return e && (e->type == E_SYMBOL && e->left.sym == &symbol_no);  } -#endif  #ifdef __cplusplus  }  | 
