summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meskes2008-11-14 17:11:40 +0000
committerMichael Meskes2008-11-14 17:11:40 +0000
commit47e7f9e2e556649004f93962c41294c304c9e3a3 (patch)
tree0a5929b8366fece1eeeffac224d7d1a0d9a87dc8
parentdde29859642fd82a7225450c269d82583b3e449e (diff)
Enable script to generate preproc.y in build process.
-rw-r--r--src/interfaces/ecpg/preproc/.cvsignore1
-rw-r--r--src/interfaces/ecpg/preproc/Makefile11
-rw-r--r--src/tools/msvc/Solution.pm13
3 files changed, 21 insertions, 4 deletions
diff --git a/src/interfaces/ecpg/preproc/.cvsignore b/src/interfaces/ecpg/preproc/.cvsignore
index ae37387ece..b89e319672 100644
--- a/src/interfaces/ecpg/preproc/.cvsignore
+++ b/src/interfaces/ecpg/preproc/.cvsignore
@@ -1,3 +1,4 @@
+preproc.y
preproc.c
preproc.h
pgc.c
diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile
index 1a342d08b3..1920d49f80 100644
--- a/src/interfaces/ecpg/preproc/Makefile
+++ b/src/interfaces/ecpg/preproc/Makefile
@@ -38,27 +38,30 @@ preproc.o: $(srcdir)/pgc.c
$(srcdir)/preproc.h: $(srcdir)/preproc.c ;
-$(srcdir)/preproc.c: preproc.y
+$(srcdir)/preproc.c: $(srcdir)/preproc.y
ifdef BISON
$(BISON) -d $(BISONFLAGS) -o $@ $<
else
@$(missing) bison $< $@
endif
-$(srcdir)/pgc.c: pgc.l
+$(srcdir)/pgc.c: $(srcdir)/pgc.l
ifdef FLEX
$(FLEX) $(FLEXFLAGS) -o'$@' $<
else
@$(missing) flex $< $@
endif
+$(srcdir)/preproc.y: $(top_srcdir)/src/backend/parser/gram.y
+ $(PERL) $(srcdir)/parse.pl $(srcdir) < $< > $@
+
ecpg_keywords.o c_keywords.o keywords.o preproc.o parser.o: preproc.h
# instead of maintaining our own list, take the one from the backend
keywords.c: % : $(top_srcdir)/src/backend/parser/%
rm -f $@ && $(LN_S) $< .
-distprep: $(srcdir)/preproc.c $(srcdir)/preproc.h $(srcdir)/pgc.c
+distprep: $(srcdir)/preproc.y $(srcdir)/preproc.c $(srcdir)/preproc.h $(srcdir)/pgc.c
install: all installdirs
$(INSTALL_PROGRAM) ecpg$(X) '$(DESTDIR)$(bindir)'
@@ -78,4 +81,4 @@ clean distclean:
# want to ship those files in the distribution for people with
# inadequate tools.
maintainer-clean: distclean
- rm -f $(srcdir)/preproc.c $(srcdir)/preproc.h $(srcdir)/pgc.c
+ rm -f $(srcdir)/preproc.y $(srcdir)/preproc.c $(srcdir)/preproc.h $(srcdir)/pgc.c
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 25ad5439c8..fce55aca3c 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -239,6 +239,19 @@ s{PG_VERSION_STR "[^"]+"}{__STRINGIFY(x) #x\n#define __STRINGIFY2(z) __STRINGIFY
if (
IsNewer(
+ 'src\interfaces\ecpg\preproc\preproc.y',
+ 'src\backend\parser\gram.y'
+ )
+ )
+ {
+ print "Generating preproc.y...\n";
+ chdir('src\interfaces\ecpg\preproc');
+ system('perl parse.pl < ..\..\..\backend\parser\gram.y > preproc.y');
+ chdir('..\..\..\..');
+ }
+
+ if (
+ IsNewer(
'src\interfaces\ecpg\include\ecpg_config.h',
'src\interfaces\ecpg\include\ecpg_config.h.in'
)