Alvaro Herrera wrote:
> I'm finding that this patch is needed to make this build on VPATH:
I cannot reproduce any problem with a vpath build. Make sure you have
really cleaned the source tree from previous rounds. Some of the files
involved are symlinks, which might confuse make.
> Index: src/backend/parser/Makefile
> ===================================================================
> RCS file: /cvsroot/pgsql/src/backend/parser/Makefile,v
> retrieving revision 1.47
> diff -c -p -r1.47 Makefile
> *** src/backend/parser/Makefile 29 Aug 2008 13:02:32 -0000 1.47
> --- src/backend/parser/Makefile 29 Aug 2008 16:17:16 -0000
> *************** subdir = src/backend/parser
> *** 10,16 ****
> top_builddir = ../../..
> include $(top_builddir)/src/Makefile.global
>
> ! override CPPFLAGS := -I$(srcdir) $(CPPFLAGS)
>
> OBJS= analyze.o gram.o keywords.o parser.o parse_agg.o parse_clause.o \
> parse_expr.o parse_func.o parse_node.o parse_oper.o parse_relation.o \
> --- 10,16 ----
> top_builddir = ../../..
> include $(top_builddir)/src/Makefile.global
>
> ! override CPPFLAGS := -I$(srcdir)/.. $(CPPFLAGS)
>
> OBJS= analyze.o gram.o keywords.o parser.o parse_agg.o parse_clause.o \
> parse_expr.o parse_func.o parse_node.o parse_oper.o parse_relation.o \
This would create a reference to src/backend, but no .h file should ever
live there.
> The problem is that keywords.c is #including "parser/gram.h" but since
> we're doing a -I.../backend/parser then it doesn't find it.
>
> I don't understand why it was working previously.
I think the -I$(srcdir) is actually useless, and you are just
accidentally adapting it for your workaround.