mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-25 20:10:41 +08:00
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.
This commit is contained in:
parent
ab112068b6
commit
8521d13194
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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 $@ $<
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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:
|
||||
|
@ -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.
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
||||
|
@ -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) < $< > $@
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user