yann@1: /* yann@1: * Copyright (C) 2002 Roman Zippel yann@1: * Released under the terms of the GNU GPL v2.0. yann@1: */ yann@1: yann@1: #ifndef LKC_H yann@1: #define LKC_H yann@1: yann@1: #include "expr.h" yann@1: yann@1: #ifndef KBUILD_NO_NLS yann@1: # include yann@1: #else yann@1: # define gettext(Msgid) ((const char *) (Msgid)) yann@1: # define textdomain(Domainname) ((const char *) (Domainname)) yann@1: # define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname)) yann@1: #endif yann@1: yann@1: #ifdef __cplusplus yann@1: extern "C" { yann@1: #endif yann@1: yann@1: #ifdef LKC_DIRECT_LINK yann@1: #define P(name,type,arg) extern type name arg yann@1: #else yann@1: #include "lkc_defs.h" yann@1: #define P(name,type,arg) extern type (*name ## _p) arg yann@1: #endif yann@1: #include "lkc_proto.h" yann@1: #undef P yann@1: yann@1: #define SRCTREE "srctree" yann@1: yann@39: #define PROJECT_NAME "crosstool-NG" yann@1: #define PACKAGE "crosstool-NG" yann@1: #define LOCALEDIR "/usr/share/locale" yann@1: yann@1: #define _(text) gettext(text) yann@1: #define N_(text) (text) yann@1: yann@1: yann@1: #define TF_COMMAND 0x0001 yann@1: #define TF_PARAM 0x0002 yann@1: #define TF_OPTION 0x0004 yann@1: yann@1: #define T_OPT_MODULES 1 yann@1: #define T_OPT_DEFCONFIG_LIST 2 yann@1: yann@1: struct kconf_id { yann@1: int name; yann@1: int token; yann@1: unsigned int flags; yann@1: enum symbol_type stype; yann@1: }; yann@1: yann@1: int zconfparse(void); yann@1: void zconfdump(FILE *out); yann@1: yann@1: extern int zconfdebug; yann@1: void zconf_starthelp(void); yann@1: FILE *zconf_fopen(const char *name); yann@1: void zconf_initscan(const char *name); yann@1: void zconf_nextfile(const char *name); yann@1: int zconf_lineno(void); yann@1: char *zconf_curname(void); yann@1: yann@1: /* confdata.c */ yann@1: char *conf_get_default_confname(void); yann@39: void sym_set_change_count(int count); yann@39: void sym_add_change_count(int count); yann@1: yann@1: /* kconfig_load.c */ yann@1: void kconfig_load(void); yann@1: yann@1: /* menu.c */ yann@1: void menu_init(void); yann@1: struct menu *menu_add_menu(void); yann@1: void menu_end_menu(void); yann@1: void menu_add_entry(struct symbol *sym); yann@1: void menu_end_entry(void); yann@1: void menu_add_dep(struct expr *dep); yann@1: struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep); yann@1: struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); yann@1: void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); yann@1: void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); yann@1: void menu_add_option(int token, char *arg); yann@1: void menu_finalize(struct menu *parent); yann@1: void menu_set_type(int type); yann@1: yann@1: /* util.c */ yann@1: struct file *file_lookup(const char *name); yann@1: int file_write_dep(const char *name); yann@1: yann@1: struct gstr { yann@1: size_t len; yann@1: char *s; yann@1: }; yann@1: struct gstr str_new(void); yann@1: struct gstr str_assign(const char *s); yann@1: void str_free(struct gstr *gs); yann@1: void str_append(struct gstr *gs, const char *s); yann@1: void str_printf(struct gstr *gs, const char *fmt, ...); yann@1: const char *str_get(struct gstr *gs); yann@1: yann@1: /* symbol.c */ yann@1: void sym_init(void); yann@1: void sym_clear_all_valid(void); yann@1: void sym_set_all_changed(void); yann@1: void sym_set_changed(struct symbol *sym); yann@1: struct symbol *sym_check_deps(struct symbol *sym); yann@1: struct property *prop_alloc(enum prop_type type, struct symbol *sym); yann@1: struct symbol *prop_get_symbol(struct property *prop); yann@1: yann@1: static inline tristate sym_get_tristate_value(struct symbol *sym) yann@1: { yann@1: return sym->curr.tri; yann@1: } yann@1: yann@1: yann@1: static inline struct symbol *sym_get_choice_value(struct symbol *sym) yann@1: { yann@1: return (struct symbol *)sym->curr.val; yann@1: } yann@1: yann@1: static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval) yann@1: { yann@1: return sym_set_tristate_value(chval, yes); yann@1: } yann@1: yann@1: static inline bool sym_is_choice(struct symbol *sym) yann@1: { yann@1: return sym->flags & SYMBOL_CHOICE ? true : false; yann@1: } yann@1: yann@1: static inline bool sym_is_choice_value(struct symbol *sym) yann@1: { yann@1: return sym->flags & SYMBOL_CHOICEVAL ? true : false; yann@1: } yann@1: yann@1: static inline bool sym_is_optional(struct symbol *sym) yann@1: { yann@1: return sym->flags & SYMBOL_OPTIONAL ? true : false; yann@1: } yann@1: yann@1: static inline bool sym_has_value(struct symbol *sym) yann@1: { yann@1: return sym->flags & SYMBOL_DEF_USER ? true : false; yann@1: } yann@1: yann@1: #ifdef __cplusplus yann@1: } yann@1: #endif yann@1: yann@1: #endif /* LKC_H */