@@ -21,6 +21,10 @@ depfile = $(subst $(comma),_,$(dot-target).d)
basetarget = $(basename $(notdir $@))
###
+# filename of first prerequisite with directory and extension stripped
+baseprereq = $(basename $(notdir $<))
+
+###
# Escape single quote for use in echo statements
escsq = $(subst $(squote),'\$(squote)',$1)
@@ -171,14 +171,15 @@ $(src)/%.hash.c_shipped: $(src)/%.gperf
# LEX
# ---------------------------------------------------------------------------
quiet_cmd_flex = LEX $@
- cmd_flex = flex -o$@ -L $<
+ cmd_flex = flex -o$@ -L -P $(if $(LEX_PREFIX_${baseprereq}),$(LEX_PREFIX_${baseprereq}),yy) $<
+
$(src)/%.lex.c_shipped: $(src)/%.l
$(call cmd,flex)
# YACC
# ---------------------------------------------------------------------------
quiet_cmd_bison = YACC $@
- cmd_bison = bison -o$@ -d -t -l $<
+ cmd_bison = bison -o$@ -d -t -l -p $(if $(YACC_PREFIX_${baseprereq}),$(YACC_PREFIX_${baseprereq}),yy) $<
$(src)/%.tab.c_shipped: $(src)/%.y
$(call cmd,bison)
@@ -223,6 +223,9 @@ HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC)
HOSTCFLAGS_zconf.lex.o := -I$(src)
HOSTCFLAGS_zconf.tab.o := -I$(src)
+LEX_PREFIX_zconf := zconf
+YACC_PREFIX_zconf := zconf
+
HOSTLOADLIBES_qconf = $(KC_QT_LIBS) -ldl
HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) -D LKC_DIRECT_LINK
@@ -68,7 +68,7 @@ struct kconf_id {
enum symbol_type stype;
};
-extern int yydebug;
+extern int zconfdebug;
int zconfparse(void);
void zconfdump(FILE *out);
@@ -101,11 +101,11 @@ n [A-Za-z0-9_]
current_pos.file = current_file;
current_pos.lineno = current_file->lineno;
if (id && id->flags & TF_COMMAND) {
- yylval.id = id;
+ zconflval.id = id;
return id->token;
}
alloc_string(yytext, yyleng);
- yylval.string = text;
+ zconflval.string = text;
return T_WORD;
}
.
@@ -134,11 +134,11 @@ n [A-Za-z0-9_]
({n}|[-/.])+ {
const struct kconf_id *id = kconf_id_lookup(yytext, yyleng);
if (id && id->flags & TF_PARAM) {
- yylval.id = id;
+ zconflval.id = id;
return id->token;
}
alloc_string(yytext, yyleng);
- yylval.string = text;
+ zconflval.string = text;
return T_WORD;
}
#.* /* comment */
@@ -152,7 +152,7 @@ n [A-Za-z0-9_]
<STRING>{
[^'"\\\n]+/\n {
append_string(yytext, yyleng);
- yylval.string = text;
+ zconflval.string = text;
return T_WORD_QUOTE;
}
[^'"\\\n]+ {
@@ -160,7 +160,7 @@ n [A-Za-z0-9_]
}
\\.?/\n {
append_string(yytext + 1, yyleng - 1);
- yylval.string = text;
+ zconflval.string = text;
return T_WORD_QUOTE;
}
\\.? {
@@ -169,7 +169,7 @@ n [A-Za-z0-9_]
\'|\" {
if (str == yytext[0]) {
BEGIN(PARAM);
- yylval.string = text;
+ zconflval.string = text;
return T_WORD_QUOTE;
} else
append_string(yytext, 1);
@@ -252,7 +252,7 @@ void zconf_starthelp(void)
static void zconf_endhelp(void)
{
- yylval.string = text;
+ zconflval.string = text;
BEGIN(INITIAL);
}
@@ -21,10 +21,10 @@
int cdebug = PRINTD;
-extern int yylex(void);
+extern int zconflex(void);
static void zconfprint(const char *err, ...);
static void zconf_error(const char *err, ...);
-static void yyerror(const char *err);
+static void zconferror(const char *err);
static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken);
struct symbol *symbol_hash[SYMBOL_HASHSIZE];
@@ -499,12 +499,12 @@ void conf_parse(const char *name)
modules_sym->flags |= SYMBOL_AUTO;
rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL);
- if (getenv("ZCONF_DEBUG")) {
- extern int yydebug;
- yydebug = 1;
- }
- yyparse();
- if (yynerrs)
+#if YYDEBUG
+ if (getenv("ZCONF_DEBUG"))
+ zconfdebug = 1;
+#endif
+ zconfparse();
+ if (zconfnerrs)
exit(1);
if (!modules_sym->prop) {
struct property *prop;
@@ -519,9 +519,9 @@ void conf_parse(const char *name)
menu_finalize(&rootmenu);
for_all_symbols(i, sym) {
if (sym_check_deps(sym))
- yynerrs++;
+ zconfnerrs++;
}
- if (yynerrs)
+ if (zconfnerrs)
exit(1);
sym_set_change_count(1);
}
@@ -546,7 +546,7 @@ static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtok
if (id->token != endtoken) {
zconf_error("unexpected '%s' within %s block",
kconf_id_strings + id->name, zconf_tokenname(starttoken));
- yynerrs++;
+ zconfnerrs++;
return false;
}
if (current_menu->file != current_file) {
@@ -555,7 +555,7 @@ static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtok
fprintf(stderr, "%s:%d: location of the '%s'\n",
current_menu->file->name, current_menu->lineno,
zconf_tokenname(starttoken));
- yynerrs++;
+ zconfnerrs++;
return false;
}
return true;
@@ -576,7 +576,7 @@ static void zconf_error(const char *err, ...)
{
va_list ap;
- yynerrs++;
+ zconfnerrs++;
fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
va_start(ap, err);
vfprintf(stderr, err, ap);
@@ -584,7 +584,7 @@ static void zconf_error(const char *err, ...)
fprintf(stderr, "\n");
}
-static void yyerror(const char *err)
+static void zconferror(const char *err)
{
fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
}