genksyms: migrate parser to implicit rules
Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
This commit is contained in:
7
scripts/genksyms/.gitignore
vendored
7
scripts/genksyms/.gitignore
vendored
@@ -1,4 +1,5 @@
|
|||||||
keywords.c
|
*.hash.c
|
||||||
lex.c
|
*.lex.c
|
||||||
parse.[ch]
|
*.tab.c
|
||||||
|
*.tab.h
|
||||||
genksyms
|
genksyms
|
||||||
|
@@ -2,52 +2,12 @@
|
|||||||
hostprogs-y := genksyms
|
hostprogs-y := genksyms
|
||||||
always := $(hostprogs-y)
|
always := $(hostprogs-y)
|
||||||
|
|
||||||
genksyms-objs := genksyms.o parse.o lex.o
|
genksyms-objs := genksyms.o parse.tab.o lex.lex.o
|
||||||
|
|
||||||
# -I needed for generated C source (shipped source)
|
# -I needed for generated C source (shipped source)
|
||||||
HOSTCFLAGS_parse.tab.o := -I$(src)
|
HOSTCFLAGS_parse.tab.o := -I$(src)
|
||||||
|
HOSTCFLAGS_lex.lex.o := -I$(src)
|
||||||
|
|
||||||
# dependencies on generated files need to be listed explicitly
|
# dependencies on generated files need to be listed explicitly
|
||||||
$(obj)/lex.o: $(obj)/parse.h $(obj)/keywords.c
|
$(obj)/lex.lex.o: $(obj)/keywords.hash.c $(obj)/parse.tab.h
|
||||||
|
|
||||||
# -I needed for generated C source (shipped source)
|
|
||||||
HOSTCFLAGS_lex.o := -I$(src)
|
|
||||||
|
|
||||||
ifdef GENERATE_PARSER
|
|
||||||
|
|
||||||
# gperf
|
|
||||||
|
|
||||||
quiet_cmd_keywords.c = GPERF $@
|
|
||||||
cmd_keywords.c = gperf -L ANSI-C -a -C -E -g -H is_reserved_hash \
|
|
||||||
-k 1,3,$$ -N is_reserved_word -p -t $< > $@
|
|
||||||
|
|
||||||
$(obj)/keywords.c: $(obj)/keywords.gperf FORCE
|
|
||||||
$(call if_changed,keywords.c)
|
|
||||||
cp $@ $@_shipped
|
|
||||||
|
|
||||||
# flex
|
|
||||||
|
|
||||||
quiet_cmd_lex.c = FLEX $@
|
|
||||||
cmd_lex.c = flex -o$@ -d $<
|
|
||||||
|
|
||||||
$(obj)/lex.c: $(obj)/lex.l $(obj)/keywords.c FORCE
|
|
||||||
$(call if_changed,lex.c)
|
|
||||||
cp $@ $@_shipped
|
|
||||||
|
|
||||||
# bison
|
|
||||||
|
|
||||||
quiet_cmd_parse.c = BISON $@
|
|
||||||
cmd_parse.c = bison -o$@ -dtv $(filter-out FORCE,$^)
|
|
||||||
|
|
||||||
$(obj)/parse.c: $(obj)/parse.y FORCE
|
|
||||||
$(call if_changed,parse.c)
|
|
||||||
cp $@ $@_shipped
|
|
||||||
cp $(@:.c=.h) $(@:.c=.h)_shipped
|
|
||||||
|
|
||||||
$(obj)/parse.h: $(obj)/parse.c ;
|
|
||||||
|
|
||||||
clean-files += parse.output
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
targets += keywords.c lex.c parse.c parse.h
|
|
||||||
|
@@ -29,7 +29,7 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#include "genksyms.h"
|
#include "genksyms.h"
|
||||||
#include "parse.h"
|
#include "parse.tab.h"
|
||||||
|
|
||||||
/* We've got a two-level lexer here. We let flex do basic tokenization
|
/* We've got a two-level lexer here. We let flex do basic tokenization
|
||||||
and then we categorize those basic tokens in the second stage. */
|
and then we categorize those basic tokens in the second stage. */
|
||||||
@@ -94,7 +94,7 @@ MC_TOKEN ([~%^&*+=|<>/-]=)|(&&)|("||")|(->)|(<<)|(>>)
|
|||||||
|
|
||||||
/* Bring in the keyword recognizer. */
|
/* Bring in the keyword recognizer. */
|
||||||
|
|
||||||
#include "keywords.c"
|
#include "keywords.hash.c"
|
||||||
|
|
||||||
|
|
||||||
/* Macros to append to our phrase collection list. */
|
/* Macros to append to our phrase collection list. */
|
||||||
|
Reference in New Issue
Block a user