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