linux/scripts/kconfig/lkc.h
<<
>>
Prefs
   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#include "expr.h"
  10
  11#ifndef KBUILD_NO_NLS
  12# include <libintl.h>
  13#else
  14static inline const char *gettext(const char *txt) { return txt; }
  15static inline void textdomain(const char *domainname) {}
  16static inline void bindtextdomain(const char *name, const char *dir) {}
  17static inline char *bind_textdomain_codeset(const char *dn, char *c) { return c; }
  18#endif
  19
  20#ifdef __cplusplus
  21extern "C" {
  22#endif
  23
  24#ifdef LKC_DIRECT_LINK
  25#define P(name,type,arg)        extern type name arg
  26#else
  27#include "lkc_defs.h"
  28#define P(name,type,arg)        extern type (*name ## _p) arg
  29#endif
  30#include "lkc_proto.h"
  31#undef P
  32
  33#define SRCTREE "srctree"
  34
  35#ifndef PACKAGE
  36#define PACKAGE "linux"
  37#endif
  38
  39#define LOCALEDIR "/usr/share/locale"
  40
  41#define _(text) gettext(text)
  42#define N_(text) (text)
  43
  44#ifndef CONFIG_
  45#define CONFIG_ "CONFIG_"
  46#endif
  47
  48#define TF_COMMAND      0x0001
  49#define TF_PARAM        0x0002
  50#define TF_OPTION       0x0004
  51
  52enum conf_def_mode {
  53        def_default,
  54        def_yes,
  55        def_mod,
  56        def_no,
  57        def_random
  58};
  59
  60#define T_OPT_MODULES           1
  61#define T_OPT_DEFCONFIG_LIST    2
  62#define T_OPT_ENV               3
  63
  64struct kconf_id {
  65        int name;
  66        int token;
  67        unsigned int flags;
  68        enum symbol_type stype;
  69};
  70
  71#ifdef YYDEBUG
  72extern int zconfdebug;
  73#endif
  74
  75int zconfparse(void);
  76void zconfdump(FILE *out);
  77void zconf_starthelp(void);
  78FILE *zconf_fopen(const char *name);
  79void zconf_initscan(const char *name);
  80void zconf_nextfile(const char *name);
  81int zconf_lineno(void);
  82const char *zconf_curname(void);
  83
  84/* conf.c */
  85void xfgets(char *str, int size, FILE *in);
  86
  87/* confdata.c */
  88const char *conf_get_configname(void);
  89const char *conf_get_autoconfig_name(void);
  90char *conf_get_default_confname(void);
  91void sym_set_change_count(int count);
  92void sym_add_change_count(int count);
  93void conf_set_all_new_symbols(enum conf_def_mode mode);
  94
  95/* confdata.c and expr.c */
  96static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out)
  97{
  98        if (fwrite(str, len, count, out) < count)
  99                fprintf(stderr, "\nError in writing or end of file.\n");
 100}
 101
 102/* kconfig_load.c */
 103void kconfig_load(void);
 104
 105/* menu.c */
 106void _menu_init(void);
 107void menu_warn(struct menu *menu, const char *fmt, ...);
 108struct menu *menu_add_menu(void);
 109void menu_end_menu(void);
 110void menu_add_entry(struct symbol *sym);
 111void menu_end_entry(void);
 112void menu_add_dep(struct expr *dep);
 113void menu_add_visibility(struct expr *dep);
 114struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep);
 115struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep);
 116void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
 117void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);
 118void menu_add_option(int token, char *arg);
 119void menu_finalize(struct menu *parent);
 120void menu_set_type(int type);
 121
 122/* util.c */
 123struct file *file_lookup(const char *name);
 124int file_write_dep(const char *name);
 125
 126struct gstr {
 127        size_t len;
 128        char  *s;
 129        /*
 130        * when max_width is not zero long lines in string s (if any) get
 131        * wrapped not to exceed the max_width value
 132        */
 133        int max_width;
 134};
 135struct gstr str_new(void);
 136struct gstr str_assign(const char *s);
 137void str_free(struct gstr *gs);
 138void str_append(struct gstr *gs, const char *s);
 139void str_printf(struct gstr *gs, const char *fmt, ...);
 140const char *str_get(struct gstr *gs);
 141
 142/* symbol.c */
 143extern struct expr *sym_env_list;
 144
 145void sym_init(void);
 146void sym_clear_all_valid(void);
 147void sym_set_all_changed(void);
 148void sym_set_changed(struct symbol *sym);
 149struct symbol *sym_choice_default(struct symbol *sym);
 150const char *sym_get_string_default(struct symbol *sym);
 151struct symbol *sym_check_deps(struct symbol *sym);
 152struct property *prop_alloc(enum prop_type type, struct symbol *sym);
 153struct symbol *prop_get_symbol(struct property *prop);
 154struct property *sym_get_env_prop(struct symbol *sym);
 155
 156static inline tristate sym_get_tristate_value(struct symbol *sym)
 157{
 158        return sym->curr.tri;
 159}
 160
 161
 162static inline struct symbol *sym_get_choice_value(struct symbol *sym)
 163{
 164        return (struct symbol *)sym->curr.val;
 165}
 166
 167static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval)
 168{
 169        return sym_set_tristate_value(chval, yes);
 170}
 171
 172static inline bool sym_is_choice(struct symbol *sym)
 173{
 174        return sym->flags & SYMBOL_CHOICE ? true : false;
 175}
 176
 177static inline bool sym_is_choice_value(struct symbol *sym)
 178{
 179        return sym->flags & SYMBOL_CHOICEVAL ? true : false;
 180}
 181
 182static inline bool sym_is_optional(struct symbol *sym)
 183{
 184        return sym->flags & SYMBOL_OPTIONAL ? true : false;
 185}
 186
 187static inline bool sym_has_value(struct symbol *sym)
 188{
 189        return sym->flags & SYMBOL_DEF_USER ? true : false;
 190}
 191
 192#ifdef __cplusplus
 193}
 194#endif
 195
 196#endif /* LKC_H */
 197