kconfig/lkc.h
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Thu Dec 27 12:45:22 2012 +0100 (2012-12-27)
changeset 3152 b286c7993be5
parent 943 1cca90ce0481
permissions -rw-r--r--
scripts/addToolsVersion: properly handle .in vs. .in.2

While most components have their version in the .in file, some
have it in the .in.2 (eg. elf2flt).

Currently, to handle this case, we indiscriminately munge both files,
but this is wrong: in the elf2flt case, if we add a binutils version,
we do not want it to be added to elf2flt, and conversely.

So, for each tool, we need to explicitly know what file to munge.

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