]> git.ipfire.org Git - thirdparty/bird.git/blobdiff - conf/Makefile
Conf: Switch for faster (and slightly bigger) lexer
[thirdparty/bird.git] / conf / Makefile
index 9dff45820c15ed92287a7493ac8c1191cb0bbef1..984624b4098806caca191a2b04b0fe2f316ae366 100644 (file)
@@ -1,29 +1,33 @@
-source=cf-parse.tab.c cf-lex.c conf.c
-root-rel=../
+src := cf-parse.tab.c cf-lex.c conf.c
+obj := $(src-o-files)
 
-include ../Rules
+$(all-daemon)
 
-conf-src=$(srcdir)/conf
-conf-fragments=$(conf-src)/confbase.Y @CONFS@ $(addsuffix /config.Y,$(static-dir-paths))
+tests_objs := $(tests_objs) $(src-o-files)
 
 ifdef DEBUG
 BISON_DEBUG=-t
 #FLEX_DEBUG=-d
 endif
 
-cf-parse.tab.c cf-parse-tab.h: cf-parse.y
-       $(BISON) -bcf-parse -dv -pcf_ $(BISON_DEBUG) cf-parse.y
+$(conf-y-targets): $(s)confbase.Y $(s)flowspec.Y
+       $(M4) $(M4FLAGS) -P $| $^ >$@
 
-cf-parse.y: $(conf-fragments) $(conf-src)/gen_parser.m4
-       $(M4) -P $(conf-src)/gen_parser.m4 $(conf-fragments) >cf-parse.y
+$(o)cf-parse.y: | $(s)gen_parser.m4
+$(o)keywords.h: | $(s)gen_keywords.m4
+$(o)commands.h: | $(s)gen_commands.m4 $(srcdir)/client/cmds.m4
 
-keywords.h: $(conf-fragments) $(conf-src)/gen_keywords.m4
-       $(M4) -P $(conf-src)/gen_keywords.m4 $(conf-fragments) >keywords.h
+$(o)cf-parse.tab.h: $(o)cf-parse.tab.c
 
-commands.h: $(conf-fragments) $(conf-src)/gen_commands.m4 $(srcdir)/client/cmds.m4
-       $(M4) -P $(conf-src)/gen_commands.m4 $(srcdir)/client/cmds.m4 $(conf-fragments) | sort >commands.h
+$(o)cf-parse.tab.c: $(o)cf-parse.y
+       $(BISON) $(BISON_DEBUG) $(BISONFLAGS) -dv -pcf_ -b $(@:.tab.c=) $<
 
-cf-lex.c: cf-lex.l
-       $(FLEX) $(FLEX_DEBUG) -sB8 -ocf-lex.c -Pcf_ cf-lex.l
+$(o)cf-lex.c: $(s)cf-lex.l
+       $(FLEX) $(FLEX_DEBUG) -f -s -B -8 -Pcf_ -o$@ $<
 
-depend: keywords.h commands.h cf-parse.tab.c cf-lex.c
+$(o)cf-lex.o: $(o)cf-parse.tab.h $(o)keywords.h
+$(o)cf-lex.o: CFLAGS+=-Wno-sign-compare -Wno-unused-function
+
+$(addprefix $(o), cf-parse.y keywords.h commands.h cf-parse.tab.h cf-parse.tab.c cf-lex.c): $(objdir)/.dir-stamp
+
+$(call clean,cf-parse.tab.h cf-parse.tab.c cf-parse.y keywords.h commands.h cf-lex.c cf-parse.output)