From cae4dccc5aaee93e0ed258448f60d4178163ec1c Mon Sep 17 00:00:00 2001 From: John Naylor Date: Sat, 13 Aug 2022 13:35:14 +0700 Subject: [PATCH v201 9/9] Build exprscan.c standalone --- src/bin/pgbench/.gitignore | 1 + src/bin/pgbench/Makefile | 13 ++++++++++--- src/bin/pgbench/exprparse.y | 15 --------------- src/bin/pgbench/exprscan.l | 9 ++++++++- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/bin/pgbench/.gitignore b/src/bin/pgbench/.gitignore index 983a3cd7a6..07492a993c 100644 --- a/src/bin/pgbench/.gitignore +++ b/src/bin/pgbench/.gitignore @@ -1,3 +1,4 @@ +/exprparse.h /exprparse.c /exprscan.c /pgbench diff --git a/src/bin/pgbench/Makefile b/src/bin/pgbench/Makefile index f402fe7b91..6647c9fe97 100644 --- a/src/bin/pgbench/Makefile +++ b/src/bin/pgbench/Makefile @@ -10,6 +10,7 @@ include $(top_builddir)/src/Makefile.global OBJS = \ $(WIN32RES) \ exprparse.o \ + exprscan.o \ pgbench.o override CPPFLAGS := -I. -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS) @@ -26,8 +27,14 @@ all: pgbench pgbench: $(OBJS) | submake-libpq submake-libpgport submake-libpgfeutils $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) -# exprscan is compiled as part of exprparse -exprparse.o: exprscan.c +# See notes in src/backend/parser/Makefile about the following two rules +exprparse.h: exprparse.c + touch $@ + +exprparse.c: BISONFLAGS += -d + +# Force these dependencies to be known even without dependency info built: +exprparse.o exprscan.o: exprparse.h distprep: exprparse.c exprscan.c @@ -45,7 +52,7 @@ clean distclean: rm -rf tmp_check maintainer-clean: distclean - rm -f exprparse.c exprscan.c + rm -f exprparse.h exprparse.c exprscan.c check: $(prove_check) diff --git a/src/bin/pgbench/exprparse.y b/src/bin/pgbench/exprparse.y index b5592d4b97..ade2ecdaab 100644 --- a/src/bin/pgbench/exprparse.y +++ b/src/bin/pgbench/exprparse.y @@ -526,18 +526,3 @@ make_case(yyscan_t yyscanner, PgBenchExprList *when_then_list, PgBenchExpr *else find_func(yyscanner, "!case_end"), make_elist(else_part, when_then_list)); } - -/* - * exprscan.l is compiled as part of exprparse.y. Currently, this is - * unavoidable because exprparse does not create a .h file to export - * its token symbols. If these files ever grow large enough to be - * worth compiling separately, that could be fixed; but for now it - * seems like useless complication. - */ - -/* First, get rid of "#define yyscan_t" from pgbench.h */ -#undef yyscan_t -/* ... and the yylval macro, which flex will have its own definition for */ -#undef yylval - -#include "exprscan.c" diff --git a/src/bin/pgbench/exprscan.l b/src/bin/pgbench/exprscan.l index 4f63818606..6e9d949dcf 100644 --- a/src/bin/pgbench/exprscan.l +++ b/src/bin/pgbench/exprscan.l @@ -1,4 +1,4 @@ -%{ +%top{ /*------------------------------------------------------------------------- * * exprscan.l @@ -23,8 +23,15 @@ *------------------------------------------------------------------------- */ +#include "postgres_fe.h" + #include "fe_utils/psqlscan_int.h" +#include "pgbench.h" +#include "exprparse.h" +} + +%{ /* context information for reporting errors in expressions */ static const char *expr_source = NULL; static int expr_lineno = 0; -- 2.36.1