Commit 880f4499 authored by Arnaud Lacombe's avatar Arnaud Lacombe

genksyms: migrate parser to implicit rules

Signed-off-by: default avatarArnaud Lacombe <lacombar@gmail.com>
parent 6b19e7e4
keywords.c *.hash.c
lex.c *.lex.c
parse.[ch] *.tab.c
*.tab.h
genksyms genksyms
...@@ -2,52 +2,12 @@ ...@@ -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 @@ ...@@ -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 ([~%^&*+=|<>/-]=)|(&&)|("||")|(->)|(<<)|(>>) ...@@ -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. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment