Improve support for building PGXS modules with VPATH.
A VPATH build will be performed when the module's make file path is not the current directory or when USE_VPATH is set. This will assist packagers and others who prefer to build without polluting the source directories. There is still a bit of work to do here, notably documentation, but it's probably a good idea to commit what we have so far and let people test it out on their modules. Cédric Villemain, with an addition from me.
This commit is contained in:
parent
6d432152b9
commit
6697aa2bc2
2 changed files with 50 additions and 20 deletions
|
@ -415,13 +415,23 @@ libpq_pgport = -L$(top_builddir)/src/port -lpgport \
|
|||
-L$(top_builddir)/src/common -lpgcommon $(libpq)
|
||||
endif
|
||||
|
||||
|
||||
# If PGXS is not defined, build libpq and libpgport dependancies as required.
|
||||
# If the build is with PGXS, then these are supposed to be already built and
|
||||
# installed, and we just ensure that the expected files exist.
|
||||
ifndef PGXS
|
||||
submake-libpq:
|
||||
$(MAKE) -C $(libpq_builddir) all
|
||||
else
|
||||
submake-libpq: $(libdir)/libpq.so ;
|
||||
endif
|
||||
|
||||
ifndef PGXS
|
||||
submake-libpgport:
|
||||
$(MAKE) -C $(top_builddir)/src/port all
|
||||
$(MAKE) -C $(top_builddir)/src/common all
|
||||
else
|
||||
submake-libpgport: $(libdir)/libpgport.a $(libdir)/libpgcommon.a ;
|
||||
endif
|
||||
|
||||
.PHONY: submake-libpq submake-libpgport
|
||||
|
||||
|
|
|
@ -62,8 +62,20 @@ top_builddir := $(dir $(PGXS))../..
|
|||
include $(top_builddir)/src/Makefile.global
|
||||
|
||||
top_srcdir = $(top_builddir)
|
||||
# If USE_VPATH is set or Makefile is not in current directory we are building
|
||||
# the extension with VPATH so we set the variable here
|
||||
ifdef USE_VPATH
|
||||
srcdir = $(USE_VPATH)
|
||||
VPATH = $(USE_VPATH)
|
||||
else
|
||||
ifeq ($(CURDIR),$(dir $(firstword $(MAKEFILE_LIST))))
|
||||
srcdir = .
|
||||
VPATH =
|
||||
else
|
||||
srcdir = $(dir $(firstword $(MAKEFILE_LIST)))
|
||||
VPATH = $(srcdir)
|
||||
endif
|
||||
endif
|
||||
|
||||
# These might be set in Makefile.global, but if they were not found
|
||||
# during the build of PostgreSQL, supply default values so that users
|
||||
|
@ -112,33 +124,40 @@ all: all-lib
|
|||
endif # MODULE_big
|
||||
|
||||
|
||||
install: all installdirs
|
||||
ifneq (,$(EXTENSION))
|
||||
$(INSTALL_DATA) $(addprefix $(srcdir)/, $(addsuffix .control, $(EXTENSION))) '$(DESTDIR)$(datadir)/extension/'
|
||||
endif # EXTENSION
|
||||
ifneq (,$(DATA)$(DATA_built))
|
||||
$(INSTALL_DATA) $(addprefix $(srcdir)/, $(DATA)) $(DATA_built) '$(DESTDIR)$(datadir)/$(datamoduledir)/'
|
||||
endif # DATA
|
||||
ifneq (,$(DATA_TSEARCH))
|
||||
$(INSTALL_DATA) $(addprefix $(srcdir)/, $(DATA_TSEARCH)) '$(DESTDIR)$(datadir)/tsearch_data/'
|
||||
endif # DATA_TSEARCH
|
||||
install: all installdirs installcontrol installdata installdatatsearch installdocs installscripts
|
||||
ifdef MODULES
|
||||
$(INSTALL_SHLIB) $(addsuffix $(DLSUFFIX), $(MODULES)) '$(DESTDIR)$(pkglibdir)/'
|
||||
endif # MODULES
|
||||
ifdef DOCS
|
||||
ifdef docdir
|
||||
$(INSTALL_DATA) $(addprefix $(srcdir)/, $(DOCS)) '$(DESTDIR)$(docdir)/$(docmoduledir)/'
|
||||
endif # docdir
|
||||
endif # DOCS
|
||||
ifdef PROGRAM
|
||||
$(INSTALL_PROGRAM) $(PROGRAM)$(X) '$(DESTDIR)$(bindir)'
|
||||
endif # PROGRAM
|
||||
|
||||
installcontrol: $(addsuffix .control, $(EXTENSION))
|
||||
ifneq (,$(EXTENSION))
|
||||
$(INSTALL_DATA) $< '$(DESTDIR)$(datadir)/extension/'
|
||||
endif
|
||||
|
||||
installdata: $(DATA) $(DATA_built)
|
||||
ifneq (,$(DATA)$(DATA_built))
|
||||
$(INSTALL_DATA) $^ '$(DESTDIR)$(datadir)/$(datamoduledir)/'
|
||||
endif
|
||||
|
||||
installdatatsearch: $(DATA_TSEARCH)
|
||||
ifneq (,$(DATA_TSEARCH))
|
||||
$(INSTALL_DATA) $^ '$(DESTDIR)$(datadir)/tsearch_data/'
|
||||
endif
|
||||
|
||||
installdocs: $(DOCS)
|
||||
ifdef DOCS
|
||||
ifdef docdir
|
||||
$(INSTALL_DATA) $^ '$(DESTDIR)$(docdir)/$(docmoduledir)/'
|
||||
endif # docdir
|
||||
endif # DOCS
|
||||
|
||||
installscripts: $(SCRIPTS) $(SCRIPTS_built)
|
||||
ifdef SCRIPTS
|
||||
$(INSTALL_SCRIPT) $(addprefix $(srcdir)/, $(SCRIPTS)) '$(DESTDIR)$(bindir)/'
|
||||
$(INSTALL_SCRIPT) $^ '$(DESTDIR)$(bindir)/'
|
||||
endif # SCRIPTS
|
||||
ifdef SCRIPTS_built
|
||||
$(INSTALL_SCRIPT) $(SCRIPTS_built) '$(DESTDIR)$(bindir)/'
|
||||
endif # SCRIPTS_built
|
||||
|
||||
ifdef MODULE_big
|
||||
install: install-lib
|
||||
|
@ -263,6 +282,7 @@ test_files_build := $(patsubst $(srcdir)/%, $(abs_builddir)/%, $(test_files_src)
|
|||
|
||||
all: $(test_files_build)
|
||||
$(test_files_build): $(abs_builddir)/%: $(srcdir)/%
|
||||
$(MKDIR_P) $(dir $@)
|
||||
ln -s $< $@
|
||||
endif # VPATH
|
||||
|
||||
|
|
Loading…
Reference in a new issue