]> granicus.if.org Git - postgresql/commitdiff
Fix missing dependencies in ecpg's test Makefiles.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 9 May 2014 02:34:51 +0000 (22:34 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 9 May 2014 02:34:51 +0000 (22:34 -0400)
Ensure that ecpg preprocessor output files are rebuilt when re-testing
after a change in the ecpg preprocessor itself, or a change in any of
several include files that get copied verbatim into the output files.
The lack of these dependencies was what created problems for Kevin Grittner
after the recent pgindent run.  There's no way for --enable-depend to
discover these dependencies automatically, so we've gotta put them into
the Makefiles by hand.

While at it, reduce the amount of duplication in the ecpg invocations.

src/interfaces/ecpg/test/Makefile.regress
src/interfaces/ecpg/test/compat_informix/Makefile
src/interfaces/ecpg/test/preproc/Makefile
src/interfaces/ecpg/test/sql/Makefile

index edfece07df6dbd8dd73680ca672ce2ff0cae2ab6..fd6e83aeafa2dc0c159e883c8dc47adcc925ace4 100644 (file)
@@ -1,3 +1,6 @@
+# This file is included into the Makefiles of subdirectories of ecpg/test/,
+# so the file references have one more level of .. than you might expect.
+
 override CPPFLAGS := -I../../include -I$(top_srcdir)/src/interfaces/ecpg/include \
        -I$(libpq_srcdir) $(CPPFLAGS)
 override CFLAGS += $(PTHREAD_CFLAGS)
@@ -5,13 +8,25 @@ override CFLAGS += $(PTHREAD_CFLAGS)
 override LDFLAGS := -L../../ecpglib -L../../pgtypeslib $(filter-out -l%, $(libpq)) $(LDFLAGS)
 override LIBS := -lecpg -lpgtypes $(filter -l%, $(libpq)) $(LIBS) $(PTHREAD_LIBS)
 
-ECPG = ../../preproc/ecpg --regression -I$(srcdir)/../../include
+# Standard way to invoke the ecpg preprocessor
+ECPG = ../../preproc/ecpg --regression -I$(srcdir)/../../include -I$(srcdir)
+
+# Files that most or all ecpg preprocessor test outputs depend on
+ECPG_TEST_DEPENDENCIES = ../../preproc/ecpg \
+       $(srcdir)/../regression.h \
+       $(srcdir)/../../include/sqlca.h \
+       $(srcdir)/../../include/sqlda.h \
+       $(srcdir)/../../include/sqltypes.h \
+       $(srcdir)/../../include/sql3types.h
 
 %: %.o
        $(CC) $(CFLAGS) $< $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@
 
-%.c: %.pgc ../regression.h
-       $(ECPG) -o $@ -I$(srcdir) $<
+# Caution: this build rule is overridden in some child Makefiles
+# where it's necessary to use nondefault switches to ecpg;
+# make sure those rules match except for the extra switches.
+%.c: %.pgc $(ECPG_TEST_DEPENDENCIES)
+       $(ECPG) -o $@ $<
 
 clean:
        rm -f $(TESTS) $(TESTS:%=%.o) $(TESTS:%=%.c)
index a8e2ca972ece17ff2069561a08d2ea2f8e4207e7..8a5e8544967539611f1d0e1acbc2d6d0ff10e59d 100644 (file)
@@ -3,9 +3,8 @@ top_builddir = ../../../../..
 include $(top_builddir)/src/Makefile.global
 include $(top_srcdir)/$(subdir)/../Makefile.regress
 
-# special informix compatibility switches
+# Use special informix compatibility switch for all tests in this directory
 ECPG += -C INFORMIX
-ECPG_NOIND  = $(ECPG) -r no_indicator
 
 override LDFLAGS := -L../../compatlib $(LDFLAGS)
 override LIBS := -lecpg_compat $(LIBS)
@@ -22,26 +21,5 @@ TESTS = test_informix test_informix.c \
 
 all: $(TESTS)
 
-test_informix.c: test_informix.pgc ../regression.h
-       $(ECPG) -o $@ -I$(srcdir) $<
-
-test_informix2.c: test_informix2.pgc ../regression.h
-       $(ECPG) -o $@ -I$(srcdir) $<
-
-sqlda.c: sqlda.pgc ../regression.h
-       $(ECPG) -o $@ -I$(srcdir) $<
-
-dec_test.c: dec_test.pgc ../regression.h
-       $(ECPG) -o $@ -I$(srcdir) $<
-
-rfmtdate.c: rfmtdate.pgc ../regression.h
-       $(ECPG) -o $@ -I$(srcdir) $<
-
-rfmtlong.c: rfmtlong.pgc ../regression.h
-       $(ECPG) -o $@ -I$(srcdir) $<
-
-rnull.c: rnull.pgc ../regression.h
-       $(ECPG_NOIND) -o $@ -I$(srcdir) $<
-
-charfuncs.c: charfuncs.pgc ../regression.h
-       $(ECPG) -o $@ -I$(srcdir) $<
+rnull.c: rnull.pgc $(ECPG_TEST_DEPENDENCIES)
+       $(ECPG) -r no_indicator -o $@ $<
index 95eb154cf12105971c06da3c6907679c9c9bf5fe..d658a4d6b2c323ed035895cc83ce93bc8dd5d8e2 100644 (file)
@@ -19,14 +19,14 @@ TESTS = array_of_struct array_of_struct.c \
 
 all: $(TESTS)
 
-array_of_struct.c:     array_of_struct.pgc ../regression.h
-       $(ECPG) -c -o $@ -I$(srcdir) $<
+array_of_struct.c: array_of_struct.pgc $(ECPG_TEST_DEPENDENCIES)
+       $(ECPG) -c -o $@ $<
 
-pointer_to_struct.c:   pointer_to_struct.pgc ../regression.h
-       $(ECPG) -c -o $@ -I$(srcdir) $<
+pointer_to_struct.c: pointer_to_struct.pgc $(ECPG_TEST_DEPENDENCIES)
+       $(ECPG) -c -o $@ $<
 
-autoprep.c:     autoprep.pgc ../regression.h
-       $(ECPG) -r prepare -o $@ -I$(srcdir) $<
+autoprep.c: autoprep.pgc $(ECPG_TEST_DEPENDENCIES)
+       $(ECPG) -r prepare -o $@ $<
 
-strings.c:     strings.pgc strings.h ../regression.h
-       $(ECPG) -i -o $@ -I$(srcdir) $<
+strings.c: strings.pgc strings.h $(ECPG_TEST_DEPENDENCIES)
+       $(ECPG) -i -o $@ $<
index 18c37b665e17dbd0bf65b4dd1ee00dcefa490e02..6bc67e92daf8f2f9b44fb9f97f5e91f938ae0877 100644 (file)
@@ -26,5 +26,5 @@ TESTS = array array.c \
 
 all: $(TESTS)
 
-oldexec.c:     oldexec.pgc ../regression.h
-       $(ECPG) -r questionmarks -o $@ -I$(srcdir) $<
+oldexec.c: oldexec.pgc $(ECPG_TEST_DEPENDENCIES)
+       $(ECPG) -r questionmarks -o $@ $<