1/* 2 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org> 3 * Released under the terms of the GNU GPL v2.0. 4 */ 5 6#ifndef LKC_H 7#define LKC_H 8 9// Make some warnings go away 10#define YYENABLE_NLS 0 11#define YYLTYPE_IS_TRIVIAL 0 12 13#include "expr.h" 14 15#ifndef KBUILD_NO_NLS 16# include <libintl.h> 17#else 18# define gettext(Msgid) ((const char *) (Msgid)) 19# define textdomain(Domainname) ((const char *) (Domainname)) 20# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname)) 21#endif 22 23#ifdef __cplusplus 24extern "C" { 25#endif 26 27#ifdef LKC_DIRECT_LINK 28#define P(name,type,arg) extern type name arg 29#else 30#include "lkc_defs.h" 31#define P(name,type,arg) extern type (*name ## _p) arg 32#endif 33#include "lkc_proto.h" 34#undef P 35 36#define SRCTREE "srctree" 37 38#define PACKAGE "linux" 39#define LOCALEDIR "/usr/share/locale" 40 41#define _(text) gettext(text) 42#define N_(text) (text) 43 44 45#define TF_COMMAND 0x0001 46#define TF_PARAM 0x0002 47#define TF_OPTION 0x0004 48 49#define T_OPT_MODULES 1 50#define T_OPT_DEFCONFIG_LIST 2 51 52struct kconf_id { 53 int name; 54 int token; 55 unsigned int flags; 56 enum symbol_type stype; 57}; 58 59int zconfparse(void); 60void zconfdump(FILE *out); 61 62extern int zconfdebug; 63void zconf_starthelp(void); 64FILE *zconf_fopen(const char *name); 65void zconf_initscan(const char *name); 66void zconf_nextfile(const char *name); 67int zconf_lineno(void); 68char *zconf_curname(void); 69 70/* confdata.c */ 71char *conf_get_default_confname(void); 72 73/* kconfig_load.c */ 74void kconfig_load(void); 75 76/* menu.c */ 77void menu_init(void); 78struct menu *menu_add_menu(void); 79void menu_end_menu(void); 80void menu_add_entry(struct symbol *sym); 81void menu_end_entry(void); 82void menu_add_dep(struct expr *dep); 83struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep); 84struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); 85void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); 86void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); 87void menu_add_option(int token, char *arg); 88void menu_finalize(struct menu *parent); 89void menu_set_type(int type); 90 91/* util.c */ 92struct file *file_lookup(const char *name); 93int file_write_dep(const char *name); 94 95struct gstr { 96 size_t len; 97 char *s; 98}; 99struct gstr str_new(void); 100struct gstr str_assign(const char *s); 101void str_free(struct gstr *gs); 102void str_append(struct gstr *gs, const char *s); 103void str_printf(struct gstr *gs, const char *fmt, ...); 104const char *str_get(struct gstr *gs); 105 106/* symbol.c */ 107void sym_init(void); 108void sym_clear_all_valid(void); 109void sym_set_all_changed(void); 110void sym_set_changed(struct symbol *sym); 111struct symbol *sym_check_deps(struct symbol *sym); 112struct property *prop_alloc(enum prop_type type, struct symbol *sym); 113struct symbol *prop_get_symbol(struct property *prop); 114 115static inline tristate sym_get_tristate_value(struct symbol *sym) 116{ 117 return sym->curr.tri; 118} 119 120 121static inline struct symbol *sym_get_choice_value(struct symbol *sym) 122{ 123 return (struct symbol *)sym->curr.val; 124} 125 126static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval) 127{ 128 return sym_set_tristate_value(chval, yes); 129} 130 131static inline bool sym_is_choice(struct symbol *sym) 132{ 133 return sym->flags & SYMBOL_CHOICE ? true : false; 134} 135 136static inline bool sym_is_choice_value(struct symbol *sym) 137{ 138 return sym->flags & SYMBOL_CHOICEVAL ? true : false; 139} 140 141static inline bool sym_is_optional(struct symbol *sym) 142{ 143 return sym->flags & SYMBOL_OPTIONAL ? true : false; 144} 145 146static inline bool sym_has_value(struct symbol *sym) 147{ 148 return sym->flags & SYMBOL_DEF_USER ? true : false; 149} 150 151#ifdef __cplusplus 152} 153#endif 154 155#endif /* LKC_H */ 156