# 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:
# 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:
#
# 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 $@ $<
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.
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
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:
# 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.
# 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:
sql_help.o \
$(WIN32RES)
-FLEXFLAGS = -Cfe -b -p -p
-
all: psql
# 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
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) < $< > $@
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
# 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: