diff options
author | Peter Eisentraut | 2012-10-11 10:57:04 +0000 |
---|---|---|
committer | Peter Eisentraut | 2012-10-11 10:57:04 +0000 |
commit | 8521d131941be5a177270bc428fa8e684cd645b5 (patch) | |
tree | bfbf285859f3770aedc6b3c674a45d45cc4be5fe | |
parent | ab112068b657a2bd30a7f953c732e2ee75a606f5 (diff) |
Refactor flex and bison make rules
Numerous flex and bison make rules have appeared in the source tree
over time, and they are all virtually identical, so we can replace
them by pattern rules with some variables for customization.
Users of pgxs will also be able to benefit from this.
-rw-r--r-- | contrib/cube/Makefile | 14 | ||||
-rw-r--r-- | contrib/seg/Makefile | 14 | ||||
-rw-r--r-- | src/Makefile.global.in | 16 | ||||
-rw-r--r-- | src/backend/bootstrap/Makefile | 16 | ||||
-rw-r--r-- | src/backend/parser/Makefile | 20 | ||||
-rw-r--r-- | src/backend/replication/Makefile | 14 | ||||
-rw-r--r-- | src/backend/utils/misc/Makefile | 7 | ||||
-rw-r--r-- | src/bin/psql/Makefile | 11 | ||||
-rw-r--r-- | src/interfaces/ecpg/preproc/Makefile | 15 | ||||
-rw-r--r-- | src/pl/plpgsql/src/Makefile | 9 | ||||
-rw-r--r-- | src/test/isolation/Makefile | 14 |
11 files changed, 24 insertions, 126 deletions
diff --git a/contrib/cube/Makefile b/contrib/cube/Makefile index 19fd7dc658..b5cd5d0f33 100644 --- a/contrib/cube/Makefile +++ b/contrib/cube/Makefile @@ -27,20 +27,6 @@ endif # cubescan is compiled as part of cubeparse cubeparse.o: cubescan.c -cubeparse.c: cubeparse.y -ifdef BISON - $(BISON) $(BISONFLAGS) -o $@ $< -else - @$(missing) bison $< $@ -endif - -cubescan.c: cubescan.l -ifdef FLEX - $(FLEX) $(FLEXFLAGS) -o'$@' $< -else - @$(missing) flex $< $@ -endif - distprep: cubeparse.c cubescan.c maintainer-clean: diff --git a/contrib/seg/Makefile b/contrib/seg/Makefile index d84934c67f..fb9c5765c3 100644 --- a/contrib/seg/Makefile +++ b/contrib/seg/Makefile @@ -25,20 +25,6 @@ endif # segscan is compiled as part of segparse segparse.o: segscan.c -segparse.c: segparse.y -ifdef BISON - $(BISON) $(BISONFLAGS) -o $@ $< -else - @$(missing) bison $< $@ -endif - -segscan.c: segscan.l -ifdef FLEX - $(FLEX) $(FLEXFLAGS) -o'$@' $< -else - @$(missing) flex $< $@ -endif - distprep: segparse.c segscan.c maintainer-clean: diff --git a/src/Makefile.global.in b/src/Makefile.global.in index 000bfd772a..fbaaaf995b 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -500,6 +500,22 @@ TAS = @TAS@ # # Global targets and rules +%.c: %.l +ifdef FLEX + $(FLEX) $(if $(FLEX_NO_BACKUP),-b) $(FLEXFLAGS) -o'$@' $< + @$(if $(FLEX_NO_BACKUP),if [ `wc -l <lex.backup` -eq 1 ]; then rm lex.backup; else echo "Scanner requires backup; see lex.backup." 1>&2; exit 1; fi) +else + @$(missing) flex $< '$@' +endif + +%.c: %.y + $(if $(BISON_CHECK_CMD),$(BISON_CHECK_CMD)) +ifdef BISON + $(BISON) $(BISONFLAGS) -o $@ $< +else + @$(missing) bison $< $@ +endif + %.i: %.c $(CPP) $(CPPFLAGS) -o $@ $< diff --git a/src/backend/bootstrap/Makefile b/src/backend/bootstrap/Makefile index a77d864800..672bc8b6d7 100644 --- a/src/backend/bootstrap/Makefile +++ b/src/backend/bootstrap/Makefile @@ -16,24 +16,8 @@ OBJS= bootparse.o bootstrap.o include $(top_srcdir)/src/backend/common.mk - # bootscanner is compiled as part of bootparse bootparse.o: bootscanner.c -bootparse.c: bootparse.y -ifdef BISON - $(BISON) $(BISONFLAGS) -o $@ $< -else - @$(missing) bison $< $@ -endif - -bootscanner.c: bootscanner.l -ifdef FLEX - $(FLEX) $(FLEXFLAGS) -o'$@' $< -else - @$(missing) flex $< $@ -endif - - # bootparse.c and bootscanner.c are in the distribution tarball, so # they are not cleaned here. diff --git a/src/backend/parser/Makefile b/src/backend/parser/Makefile index 1f48e16a76..0395bd5934 100644 --- a/src/backend/parser/Makefile +++ b/src/backend/parser/Makefile @@ -17,8 +17,6 @@ OBJS= analyze.o gram.o keywords.o kwlookup.o parser.o \ parse_expr.o parse_func.o parse_node.o parse_oper.o parse_param.o \ parse_relation.o parse_target.o parse_type.o parse_utilcmd.o scansup.o -FLEXFLAGS = -CF -b -p -p - include $(top_srcdir)/src/backend/common.mk @@ -40,22 +38,12 @@ endif gram.h: gram.c ; -gram.c: gram.y - $(PERL) $(srcdir)/check_keywords.pl $< $(top_srcdir)/src/include/parser/kwlist.h -ifdef BISON - $(BISON) -d $(BISONFLAGS) -o $@ $< -else - @$(missing) bison $< $@ -endif +gram.c: BISONFLAGS += -d +gram.c: BISON_CHECK_CMD = $(PERL) $(srcdir)/check_keywords.pl $< $(top_srcdir)/src/include/parser/kwlist.h -scan.c: scan.l -ifdef FLEX - $(FLEX) $(FLEXFLAGS) -o'$@' $< - @if [ `wc -l <lex.backup` -eq 1 ]; then rm lex.backup; else echo "Scanner requires backup, see lex.backup."; exit 1; fi -else - @$(missing) flex $< $@ -endif +scan.c: FLEXFLAGS = -CF -p -p +scan.c: FLEX_NO_BACKUP=yes # Force these dependencies to be known even without dependency info built: diff --git a/src/backend/replication/Makefile b/src/backend/replication/Makefile index 1f93ac1e5d..2dde0118a4 100644 --- a/src/backend/replication/Makefile +++ b/src/backend/replication/Makefile @@ -22,19 +22,5 @@ include $(top_srcdir)/src/backend/common.mk # repl_scanner is compiled as part of repl_gram repl_gram.o: repl_scanner.c -repl_gram.c: repl_gram.y -ifdef BISON - $(BISON) $(BISONFLAGS) -o $@ $< -else - @$(missing) bison $< $@ -endif - -repl_scanner.c: repl_scanner.l -ifdef FLEX - $(FLEX) $(FLEXFLAGS) -o'$@' $< -else - @$(missing) flex $< $@ -endif - # repl_gram.c and repl_scanner.c are in the distribution tarball, so # they are not cleaned here. diff --git a/src/backend/utils/misc/Makefile b/src/backend/utils/misc/Makefile index 08be3bd699..c7b745e513 100644 --- a/src/backend/utils/misc/Makefile +++ b/src/backend/utils/misc/Makefile @@ -28,13 +28,6 @@ include $(top_srcdir)/src/backend/common.mk # guc-file is compiled as part of guc guc.o: guc-file.c -guc-file.c: guc-file.l -ifdef FLEX - $(FLEX) $(FLEXFLAGS) -o'$@' $< -else - @$(missing) flex $< $@ -endif - # Note: guc-file.c is not deleted by 'make clean', # since we want to ship it in distribution tarballs. clean: diff --git a/src/bin/psql/Makefile b/src/bin/psql/Makefile index 771fd712e4..9a6776ae83 100644 --- a/src/bin/psql/Makefile +++ b/src/bin/psql/Makefile @@ -26,8 +26,6 @@ OBJS= command.o common.o help.o input.o stringutils.o mainloop.o copy.o \ sql_help.o \ $(WIN32RES) -FLEXFLAGS = -Cfe -b -p -p - all: psql @@ -49,13 +47,8 @@ sql_help.h: create_help.pl $(wildcard $(REFDOCDIR)/*.sgml) # psqlscan is compiled as part of mainloop mainloop.o: psqlscan.c -psqlscan.c: psqlscan.l -ifdef FLEX - $(FLEX) $(FLEXFLAGS) -o'$@' $< - @if [ `wc -l <lex.backup` -eq 1 ]; then rm lex.backup; else echo "Scanner requires backup, see lex.backup."; exit 1; fi -else - @$(missing) flex $< $@ -endif +psqlscan.c: FLEXFLAGS = -Cfe -p -p +psqlscan.c: FLEX_NO_BACKUP=yes distprep: sql_help.h psqlscan.c diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile index dec425e553..6e117d49c7 100644 --- a/src/interfaces/ecpg/preproc/Makefile +++ b/src/interfaces/ecpg/preproc/Makefile @@ -42,20 +42,7 @@ ecpg: $(OBJS) | submake-libpgport preproc.o: pgc.c preproc.h: preproc.c ; - -preproc.c: preproc.y -ifdef BISON - $(BISON) -d $(BISONFLAGS) -o $@ $< -else - @$(missing) bison $< $@ -endif - -pgc.c: pgc.l -ifdef FLEX - $(FLEX) $(FLEXFLAGS) -o'$@' $< -else - @$(missing) flex $< $@ -endif +preproc.c: BISONFLAGS += -d preproc.y: ../../../backend/parser/gram.y parse.pl ecpg.addons ecpg.header ecpg.tokens ecpg.trailer ecpg.type $(PERL) $(srcdir)/parse.pl $(srcdir) < $< > $@ diff --git a/src/pl/plpgsql/src/Makefile b/src/pl/plpgsql/src/Makefile index 0db0dc5692..852b0c7ae4 100644 --- a/src/pl/plpgsql/src/Makefile +++ b/src/pl/plpgsql/src/Makefile @@ -55,15 +55,8 @@ uninstall-headers: pl_gram.o pl_handler.o pl_comp.o pl_exec.o pl_funcs.o pl_scanner.o: plpgsql.h pl_gram.h plerrcodes.h # See notes in src/backend/parser/Makefile about the following two rules - pl_gram.h: pl_gram.c ; - -pl_gram.c: pl_gram.y -ifdef BISON - $(BISON) -d $(BISONFLAGS) -o $@ $< -else - @$(missing) bison $< $@ -endif +pl_gram.c: BISONFLAGS += -d # generate plerrcodes.h from src/backend/utils/errcodes.txt plerrcodes.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-plerrcodes.pl diff --git a/src/test/isolation/Makefile b/src/test/isolation/Makefile index 482ac3ecb9..6579be148c 100644 --- a/src/test/isolation/Makefile +++ b/src/test/isolation/Makefile @@ -43,20 +43,6 @@ specparse.h: specparse.c ; # specscanner is compiled as part of specparse specparse.o: specscanner.c -specparse.c: specparse.y -ifdef BISON - $(BISON) $(BISONFLAGS) -o $@ $< -else - @$(missing) bison $< $@ -endif - -specscanner.c: specscanner.l -ifdef FLEX - $(FLEX) $(FLEXFLAGS) -o'$@' $< -else - @$(missing) flex $< $@ -endif - # specparse.c and specscanner.c are in the distribution tarball, # so do not clean them here clean distclean: |