Use GNU make pattern rules to handle multiple file output from bison.
With a pattern rule, the recipe will only be executed once, even when the rule has multiple targets. Using this to handle the output from bison is included as an example in the GNU make manual. This fixes the makefiles so that bison-generated header files will be regenerated if they are deleted.
This commit is contained in:
parent
e013745035
commit
b988543096
|
|
@ -252,12 +252,9 @@ lexor.o: lexor.cc parse.h
|
|||
|
||||
parse.o: parse.cc
|
||||
|
||||
# Build this in two steps to avoid parallel build issues (see pr3462585)
|
||||
parse.cc: $(srcdir)/parse.y
|
||||
$(YACC) --verbose -t -p VL -d -o $@ $<
|
||||
parse.h: parse.cc
|
||||
mv parse.cc.h $@ 2>/dev/null || mv parse.hh $@
|
||||
touch $@
|
||||
# Use pattern rules to avoid parallel build issues (see pr3462585)
|
||||
parse%cc parse%h: $(srcdir)/parse%y
|
||||
$(YACC) --verbose -t -p VL --defines=parse.h -o parse.cc $<
|
||||
|
||||
syn-rules.cc: $(srcdir)/syn-rules.y
|
||||
$(YACC) --verbose -t -p syn_ -o $@ $<
|
||||
|
|
|
|||
|
|
@ -85,10 +85,9 @@ iverilog@EXEEXT@: $O
|
|||
cflexor.c: $(srcdir)/cflexor.lex
|
||||
$(LEX) -s -t $< > $@
|
||||
|
||||
# Build this in two steps to avoid parallel build issues (see pr3462585)
|
||||
cfparse.c: $(srcdir)/cfparse.y
|
||||
$(YACC) --verbose -t -p cf -d -o $@ $<
|
||||
cfparse.h: cfparse.c
|
||||
# Use pattern rules to avoid parallel build issues (see pr3462585)
|
||||
cfparse%c cfparse%h: $(srcdir)/cfparse%y
|
||||
$(YACC) --verbose -t -p cf -d -o cfparse.c $<
|
||||
|
||||
%.o: %.c
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) @DEPENDENCY_FLAG@ -c $< -o $*.o
|
||||
|
|
|
|||
|
|
@ -87,11 +87,8 @@ fp_lex.o: fp_lex.cc fp.h
|
|||
fp_lex.cc: $(srcdir)/fp.lex
|
||||
$(LEX) -s -ofp_lex.cc $(srcdir)/fp.lex
|
||||
|
||||
fp.cc: $(srcdir)/fp.y
|
||||
$(YACC) --verbose -t -p fp -d -o $@ $<
|
||||
fp.h: fp.cc
|
||||
mv fp.cc.h $@ 2>/dev/null || mv fp.hh $@
|
||||
touch $@
|
||||
fp%cc fp%h: $(srcdir)/fp%y
|
||||
$(YACC) --verbose -t -p fp --defines=fp.h -o fp.cc $<
|
||||
|
||||
ifeq (@WIN32@,yes)
|
||||
TGTLDFLAGS=-L.. -livl
|
||||
|
|
|
|||
|
|
@ -115,12 +115,9 @@ parse.o: parse.cc
|
|||
lexor.cc: $(srcdir)/lexor.lex
|
||||
$(LEX) -s -olexor.cc $(srcdir)/lexor.lex
|
||||
|
||||
# Build this in two steps to avoid parallel build issues (see pr3462585)
|
||||
parse.cc: $(srcdir)/parse.y
|
||||
$(YACC) --verbose -t -d -o $@ $<
|
||||
parse.h: parse.cc
|
||||
mv parse.cc.h $@ 2>/dev/null || mv parse.hh $@
|
||||
touch $@
|
||||
# Use pattern rules to avoid parallel build issues (see pr3462585)
|
||||
parse%cc parse%h: $(srcdir)/parse%y
|
||||
$(YACC) --verbose -t --defines=parse.h -o parse.cc $<
|
||||
|
||||
lexor_keyword.o: lexor_keyword.cc parse.h
|
||||
|
||||
|
|
|
|||
|
|
@ -136,20 +136,18 @@ sdf_lexor.o: sdf_lexor.c sdf_parse.h
|
|||
sdf_lexor.c: $(srcdir)/sdf_lexor.lex
|
||||
$(LEX) -t $< > $@
|
||||
|
||||
# Build this in two steps to avoid parallel build issues (see pr3462585)
|
||||
sdf_parse.c: $(srcdir)/sdf_parse.y
|
||||
$(YACC) --verbose -t -p sdf -d -o $@ $<
|
||||
sdf_parse.h: sdf_parse.c
|
||||
# Use pattern rules to avoid parallel build issues (see pr3462585)
|
||||
sdf_parse%c sdf_parse%h: $(srcdir)/sdf_parse%y
|
||||
$(YACC) --verbose -t -p sdf -d -o sdf_parse.c $<
|
||||
|
||||
table_mod_lexor.o: table_mod_lexor.c table_mod_parse.h
|
||||
|
||||
table_mod_lexor.c: $(srcdir)/table_mod_lexor.lex
|
||||
$(LEX) -t $< > $@
|
||||
|
||||
# Build this in two steps to avoid parallel build issues (see pr3462585)
|
||||
table_mod_parse.c: $(srcdir)/table_mod_parse.y
|
||||
$(YACC) --verbose -t -p tblmod -d -o $@ $<
|
||||
table_mod_parse.h: table_mod_parse.c
|
||||
# Use pattern rules to avoid parallel build issues (see pr3462585)
|
||||
table_mod_parse%c table_mod_parse%h: $(srcdir)/table_mod_parse%y
|
||||
$(YACC) --verbose -t -p tblmod -d -o table_mod_parse.c $<
|
||||
|
||||
v2005_math.vpi: $M ../vvp/libvpi.a
|
||||
$(CC) @shared@ -o $@ $M -L../vvp $(LDFLAGS) -lvpi $(VA_MATH_VPI_LDFLAGS)
|
||||
|
|
|
|||
|
|
@ -163,12 +163,9 @@ parse.o: parse.cc
|
|||
|
||||
tables.o: tables.cc
|
||||
|
||||
# Build this in two steps to avoid parallel build issues (see pr3462585)
|
||||
parse.cc: $(srcdir)/parse.y
|
||||
$(YACC) --verbose -t -d -o $@ $<
|
||||
parse.h: parse.cc
|
||||
mv parse.cc.h $@ 2>/dev/null || mv parse.hh $@
|
||||
touch $@
|
||||
# Use pattern rules to avoid parallel build issues (see pr3462585)
|
||||
parse%cc parse%h: $(srcdir)/parse%y
|
||||
$(YACC) --verbose -t --defines=parse.h -o parse.cc $<
|
||||
|
||||
lexor.cc: $(srcdir)/lexor.lex
|
||||
$(LEX) -s -olexor.cc $(srcdir)/lexor.lex
|
||||
|
|
|
|||
Loading…
Reference in New Issue