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
a4c9919e3a
commit
8e4cc8e887
|
|
@ -254,10 +254,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 --defines=parse.h -o $@ $<
|
||||
parse.h: parse.cc
|
||||
# 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
|
||||
|
|
|
|||
|
|
@ -88,9 +88,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 --defines=fp.h -o $@ $<
|
||||
fp.h: fp.cc
|
||||
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,10 +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 --defines=parse.h -o $@ $<
|
||||
parse.h: parse.cc
|
||||
# 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
|
||||
|
||||
|
|
|
|||
|
|
@ -149,20 +149,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: $(V2005) libvpi.a
|
||||
$(CC) @shared@ -o $@ $(V2005) -L. $(LDFLAGS) -lvpi $(VA_MATH_VPI_LDFLAGS)
|
||||
|
|
|
|||
|
|
@ -140,10 +140,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 --defines=parse.h -o $@ $<
|
||||
parse.h: parse.cc
|
||||
# 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