22#
33# Makefile for parser
44#
5- # $Header: /cvsroot/pgsql/src/backend/parser/Makefile,v 1.34 2001/08/09 18:13:23 petere Exp $
5+ # $Header: /cvsroot/pgsql/src/backend/parser/Makefile,v 1.35 2001/11/16 16:32:33 petere Exp $
66#
77# -------------------------------------------------------------------------
88
@@ -20,15 +20,26 @@ all: SUBSYS.o
2020SUBSYS.o :$(OBJS )
2121$(LD ) $(LDREL ) $(LDOUT ) $@ $^
2222
23- $(srcdir ) /gram.c$(srcdir ) /parse.h : gram.y
23+
24+ # There is no correct way to write a rule that generates two files.
25+ # Rules with two targets don't have that meaning, they are merely
26+ # shorthand for two otherwise separate rules. To be safe for parallel
27+ # make, we must chain the dependencies like this. The semicolon is
28+ # important, otherwise make will choose the built-in rule for
29+ # gram.y=>gram.c.
30+
31+ $(srcdir ) /gram.c :$(srcdir ) /parse.h ;
32+
33+ $(srcdir ) /parse.h : gram.y
2434ifdef YACC
2535$(YACC) -d $(YFLAGS) $<
26- mv y.tab.c $(srcdir)/gram.c
27- mv y.tab.h $(srcdir)/parse.h
36+ mv-f y.tab.c $(srcdir)/gram.c
37+ mv-f y.tab.h $(srcdir)/parse.h
2838else
2939@$(missing) bison $< $@
3040endif
3141
42+
3243$(srcdir ) /scan.c : scan.l
3344ifdef FLEX
3445$(FLEX) $(FLEXFLAGS) -Pbase_yy -o'$@' $<