kconfig/lkc.h
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Feb 24 11:00:05 2007 +0000 (2007-02-24)
changeset 1 eeea35fbf182
child 39 af42eec9d383
permissions -rw-r--r--
Add the full crosstool-NG sources to the new repository of its own.
You might just say: 'Yeah! crosstool-NG's got its own repo!".
Unfortunately, that's because the previous repo got damaged beyond repair and I had no backup.
That means I'm putting backups in place in the afternoon.
That also means we've lost history... :-(
     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 #define PROJECT_NAME "crosstool-NG"
    10 
    11 // Make some warnings go away
    12 #define YYENABLE_NLS 0
    13 #define YYLTYPE_IS_TRIVIAL 0
    14 
    15 #include "expr.h"
    16 
    17 #ifndef KBUILD_NO_NLS
    18 # include <libintl.h>
    19 #else
    20 # define gettext(Msgid) ((const char *) (Msgid))
    21 # define textdomain(Domainname) ((const char *) (Domainname))
    22 # define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
    23 #endif
    24 
    25 #ifdef __cplusplus
    26 extern "C" {
    27 #endif
    28 
    29 #ifdef LKC_DIRECT_LINK
    30 #define P(name,type,arg)	extern type name arg
    31 #else
    32 #include "lkc_defs.h"
    33 #define P(name,type,arg)	extern type (*name ## _p) arg
    34 #endif
    35 #include "lkc_proto.h"
    36 #undef P
    37 
    38 #define SRCTREE "srctree"
    39 
    40 #define PACKAGE "crosstool-NG"
    41 #define LOCALEDIR "/usr/share/locale"
    42 
    43 #define _(text) gettext(text)
    44 #define N_(text) (text)
    45 
    46 
    47 #define TF_COMMAND	0x0001
    48 #define TF_PARAM	0x0002
    49 #define TF_OPTION	0x0004
    50 
    51 #define T_OPT_MODULES		1
    52 #define T_OPT_DEFCONFIG_LIST	2
    53 
    54 struct kconf_id {
    55 	int name;
    56 	int token;
    57 	unsigned int flags;
    58 	enum symbol_type stype;
    59 };
    60 
    61 int zconfparse(void);
    62 void zconfdump(FILE *out);
    63 
    64 extern int zconfdebug;
    65 void zconf_starthelp(void);
    66 FILE *zconf_fopen(const char *name);
    67 void zconf_initscan(const char *name);
    68 void zconf_nextfile(const char *name);
    69 int zconf_lineno(void);
    70 char *zconf_curname(void);
    71 
    72 /* confdata.c */
    73 char *conf_get_default_confname(void);
    74 
    75 /* kconfig_load.c */
    76 void kconfig_load(void);
    77 
    78 /* menu.c */
    79 void menu_init(void);
    80 struct menu *menu_add_menu(void);
    81 void menu_end_menu(void);
    82 void menu_add_entry(struct symbol *sym);
    83 void menu_end_entry(void);
    84 void menu_add_dep(struct expr *dep);
    85 struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep);
    86 struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep);
    87 void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
    88 void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);
    89 void menu_add_option(int token, char *arg);
    90 void menu_finalize(struct menu *parent);
    91 void menu_set_type(int type);
    92 
    93 /* util.c */
    94 struct file *file_lookup(const char *name);
    95 int file_write_dep(const char *name);
    96 
    97 struct gstr {
    98 	size_t len;
    99 	char  *s;
   100 };
   101 struct gstr str_new(void);
   102 struct gstr str_assign(const char *s);
   103 void str_free(struct gstr *gs);
   104 void str_append(struct gstr *gs, const char *s);
   105 void str_printf(struct gstr *gs, const char *fmt, ...);
   106 const char *str_get(struct gstr *gs);
   107 
   108 /* symbol.c */
   109 void sym_init(void);
   110 void sym_clear_all_valid(void);
   111 void sym_set_all_changed(void);
   112 void sym_set_changed(struct symbol *sym);
   113 struct symbol *sym_check_deps(struct symbol *sym);
   114 struct property *prop_alloc(enum prop_type type, struct symbol *sym);
   115 struct symbol *prop_get_symbol(struct property *prop);
   116 
   117 static inline tristate sym_get_tristate_value(struct symbol *sym)
   118 {
   119 	return sym->curr.tri;
   120 }
   121 
   122 
   123 static inline struct symbol *sym_get_choice_value(struct symbol *sym)
   124 {
   125 	return (struct symbol *)sym->curr.val;
   126 }
   127 
   128 static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval)
   129 {
   130 	return sym_set_tristate_value(chval, yes);
   131 }
   132 
   133 static inline bool sym_is_choice(struct symbol *sym)
   134 {
   135 	return sym->flags & SYMBOL_CHOICE ? true : false;
   136 }
   137 
   138 static inline bool sym_is_choice_value(struct symbol *sym)
   139 {
   140 	return sym->flags & SYMBOL_CHOICEVAL ? true : false;
   141 }
   142 
   143 static inline bool sym_is_optional(struct symbol *sym)
   144 {
   145 	return sym->flags & SYMBOL_OPTIONAL ? true : false;
   146 }
   147 
   148 static inline bool sym_has_value(struct symbol *sym)
   149 {
   150 	return sym->flags & SYMBOL_DEF_USER ? true : false;
   151 }
   152 
   153 #ifdef __cplusplus
   154 }
   155 #endif
   156 
   157 #endif /* LKC_H */