]> granicus.if.org Git - postgresql/commitdiff
Do not build psql's flex module on its own, but instead include it in
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 10 Nov 2009 23:12:29 +0000 (23:12 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 10 Nov 2009 23:12:29 +0000 (23:12 +0000)
mainloop.c.  This ensures that postgres_fe.h is read before including
any system headers, which is necessary to avoid problems on some platforms
where we make nondefault selections of feature macros for stdio.h or
other headers.  We have had this policy for flex modules in the backend
for many years, but for some reason it was not applied to psql.
Per trouble report from Alexandra Roy and diagnosis by Albe Laurenz.

src/bin/psql/Makefile
src/bin/psql/mainloop.c

index 968c12f3b7183675f0766ac44e62fc5531eb9410..23df265f0e33929916746ba4348b4ff5bd2d714f 100644 (file)
@@ -5,7 +5,7 @@
 # Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
 #
-# $PostgreSQL: pgsql/src/bin/psql/Makefile,v 1.60 2008/01/01 19:45:55 momjian Exp $
+# $PostgreSQL: pgsql/src/bin/psql/Makefile,v 1.60.2.1 2009/11/10 23:12:29 tgl Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -21,7 +21,7 @@ override CPPFLAGS := -I$(srcdir) -I$(libpq_srcdir) -I$(top_srcdir)/src/bin/pg_du
 
 OBJS=  command.o common.o help.o input.o stringutils.o mainloop.o copy.o \
        startup.o prompt.o variables.o large_obj.o print.o describe.o \
-       psqlscan.o tab-complete.o mbprint.o dumputils.o $(WIN32RES)
+       tab-complete.o mbprint.o dumputils.o $(WIN32RES)
 
 EXTRA_OBJS = $(top_builddir)/src/backend/parser/keywords.o
 
@@ -46,6 +46,9 @@ $(srcdir)/sql_help.h:
        @echo "*** Perl is needed to build psql help."
 endif
 
+# psqlscan is compiled as part of mainloop
+mainloop.o: psqlscan.c
+
 $(srcdir)/psqlscan.c: psqlscan.l
 ifdef FLEX
        $(FLEX) $(FLEXFLAGS) -o'$@' $<
index 613dab0506efd6fb581b0bde4fb75cefd0804cc3..2012b94b22e90a69eee56ad75ba4b26ec9e28652 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2008, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/mainloop.c,v 1.87 2008/01/01 19:45:56 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/mainloop.c,v 1.87.2.1 2009/11/10 23:12:29 tgl Exp $
  */
 #include "postgres_fe.h"
 #include "mainloop.h"
@@ -370,3 +370,13 @@ MainLoop(FILE *source)
 
        return successResult;
 }      /* MainLoop() */
+
+
+/*
+ * psqlscan.c is #include'd here instead of being compiled on its own.
+ * This is because we need postgres_fe.h to be read before any system
+ * include files, else things tend to break on platforms that have
+ * multiple infrastructures for stdio.h and so on.  flex is absolutely
+ * uncooperative about that, so we can't compile psqlscan.c on its own.
+ */
+#include "psqlscan.c"