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