PGXS on VPATH?

Started by Alvaro Herreraover 20 years ago3 messageshackers
Jump to latest
#1Alvaro Herrera
alvherre@2ndquadrant.com

Hi,

Is PGXS on VPATH builds supported? I was just testing tsearch2 and it
isn't working. Note that I'm first standing on the builddir and it
doesn't work; then I'm back at the srcdir and it does work.

07:02 jovan tsearch2 2$ pwd
/pgsql/build/00orig/contrib/tsearch2
07:02 jovan tsearch2 0$ LANG=C make USE_PGXS=1
make: *** No rule to make target `tsearch.sql.in', needed by `tsearch2.sql'. Stop.
07:02 jovan tsearch2 2$ cdsrc
07:02 jovan tsearch2 0$ pwd
/pgsql/source/00orig/contrib/tsearch2
07:02 jovan tsearch2 0$ LANG=C make USE_PGXS=1
sed -e 's,MODULE_PATHNAME,$libdir/tsearch2,g' tsearch.sql.in >tsearch2.sql
cp untsearch.sql.in untsearch2.sql
gcc -O2 -Wall -Wmissing-prototypes [...]

--
Alvaro Herrera http://www.amazon.com/gp/registry/CTMLCN8V17R4
"Changing the world ... one keyboard at a time!"
(www.DVzine.org)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#1)
Re: PGXS on VPATH?

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

Is PGXS on VPATH builds supported?

Probably not in the way you're thinking. IIRC pgxs.mk explicitly resets
VPATH, and I think it has to do that because any VPATH embedded in
Makefile.global would represent what was done at the time of building
the PG installation --- which has zip to do with where the PGXS-using
software is located.

It might work to explicitly set VPATH from the make command line:
make USE_PGXS=1 VPATH=whatever
as this should override the assignments in the makefiles.

regards, tom lane

#3Fabien COELHO
fabien@coelho.net
In reply to: Tom Lane (#2)
Re: PGXS on VPATH?

Dear Alvaro,

sorry for this late response.

Is PGXS on VPATH builds supported?

Probably not in the way you're thinking. IIRC pgxs.mk explicitly resets
VPATH, and I think it has to do that because any VPATH embedded in
Makefile.global would represent what was done at the time of building
the PG installation --- which has zip to do with where the PGXS-using
software is located.

It might work to explicitly set VPATH from the make command line:
make USE_PGXS=1 VPATH=whatever
as this should override the assignments in the makefiles.

Indeed.

There were some kind of issue with VPATH so that it was scratched when
building under pgxs.

ifdef PGXS
# We assume that we are in src/makefiles/, so top is ...
top_builddir := $(dir $(PGXS))../..
include $(top_builddir)/src/Makefile.global
top_srcdir = $(top_builddir)
srcdir = .
VPATH =
endif

Maybe something clever could be done with relative VPATHs, or by trying to
translate prefixes? On the other hand, I'm not a VPATH fan;-)

--
Fabien.