Fix make install with VPATH
authorCΓ©dric Villemain <cedric@2ndquadrant.fr>
Mon, 12 Aug 2013 14:10:00 +0000 (16:10 +0200)
committerCΓ©dric Villemain <cedric@2ndquadrant.fr>
Mon, 12 Aug 2013 14:13:30 +0000 (16:13 +0200)
patch based on upstream pgxs.mk helper

Makefile

index 79e7b4b80b5dc6c66a85313e62709c57c33894c3..857c6b184c6a0c0e485ad561eed5a40a8a6a5b0c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -14,46 +14,81 @@ DATA         = $(EXTENSION).sql uninstall_$(EXTENSION).sql
 REGRESS      = $(EXTENSION)
 pgext_files   := $(DOCS) $(DATA)
 
-# we need to build with Extension support:
 ifeq ($(BUILD_EXTENSION),yes)
-all: $(EXTENSION)--$(EXTVERSION).sql $(EXTENSION)--unpackaged--$(EXTVERSION).sql
+DATA        = $(EXTENSION)--unpackaged--$(EXTVERSION).sql $(EXTENSION)--$(EXTVERSION).sql
+REGRESS     = $(EXTENSION).ext
+EXTRA_CLEAN = $(DATA) $(EXTENSION).control
+pgext_files  := $(DOCS)
+endif
+
+PGXS := $(shell $(PG_CONFIG) --pgxs)
+include $(PGXS)
 
+# Build some more files for extension support:
+ifeq ($(BUILD_EXTENSION),yes)
 # this copy the extension.sql to extension--version.sql
 $(EXTENSION)--$(EXTVERSION).sql: $(EXTENSION).sql
-                       cp $< $@
+       cp $< $@
 
 # this build the extension--unpackaged--version.sql from uninstall_extension.sql
 $(EXTENSION)--unpackaged--$(EXTVERSION).sql: uninstall_$(EXTENSION).sql
-                       sed 's/DROP /ALTER EXTENSION $(EXTENSION) ADD /' $< > $@
+       sed 's/DROP /ALTER EXTENSION $(EXTENSION) ADD /' $< > $@
 
 # this build extension.control from extension.control.in
 $(EXTENSION).control: $(EXTENSION).control.in
-                       sed 's/EXTVERSION/$(EXTVERSION)/;s/EXTENSION/$(EXTENSION)/;s/EXTCOMMENT/$(EXTCOMMENT)/' $< > $@
+       sed 's/EXTVERSION/$(EXTVERSION)/;s/EXTENSION/$(EXTENSION)/;s/EXTCOMMENT/$(EXTCOMMENT)/' $< > $@
+endif
 
-DATA        = $(EXTENSION)--unpackaged--$(EXTVERSION).sql $(EXTENSION)--$(EXTVERSION).sql
-REGRESS     = $(EXTENSION).ext
-EXTRA_CLEAN = $(DATA) $(EXTENSION).control
-pgext_files  := $(DOCS)
+# Here we override targets
+# Recent PostgreSQL got a bugfix about that, here we just abuse the upstream fix in the mean-time
+# FIX HERE before PostgreSQL got the backpatch and push the latest minor, can remove this part when done
+ifeq ($(BUILD_EXTENSION),yes)
+
+install: all installdirs installcontrol installdata installdocs installscripts
+ifdef MODULES
+       $(INSTALL_SHLIB) $(addsuffix $(DLSUFFIX), $(MODULES)) '$(DESTDIR)$(pkglibdir)/'
+endif # MODULES
+
+installcontrol: $(addsuffix .control, $(EXTENSION))
+ifneq (,$(EXTENSION))
+       $(INSTALL_DATA) $^ '$(DESTDIR)$(datadir)/extension/'
 endif
 
-# Workaround for lack of good VPATH support in pgxs for extension/contrib
-ifdef VPATH
-pgext_files_build:= $(addprefix $(CURDIR)/, $(pgext_files))
-pgext_reg_files  := $(addprefix $(CURDIR)/sql/, $(notdir $(wildcard $(VPATH)/sql/*.sql)))
-pgext_reg_exp    := $(addprefix $(CURDIR)/expected/, $(notdir $(wildcard $(VPATH)/expected/*.out)))
-all: $(pgext_files_build) $(pgext_reg_files) $(pgext_reg_exp)
-$(pgext_files_build): $(CURDIR)/%: $(VPATH)/%
-       cp $< $@
-$(pgext_reg_files): $(CURDIR)/sql/%: $(VPATH)/sql/%
-       mkdir -p $(dir $(pgext_reg_files))
-       cp $< $@
-$(pgext_reg_exp): $(CURDIR)/expected/%: $(VPATH)/expected/%
-       mkdir -p $(dir $(pgext_reg_exp))
-       cp $< $@
-endif # VPATH
+installdata: $(DATA) $(DATA_built)
+ifneq (,$(DATA)$(DATA_built))
+       $(INSTALL_DATA) $^ '$(DESTDIR)$(datadir)/$(datamoduledir)/'
+endif
+
+installdocs: $(DOCS)
+ifdef DOCS
+ifdef docdir
+       $(INSTALL_DATA) $^ '$(DESTDIR)$(docdir)/$(docmoduledir)/'
+endif # docdir
+endif # DOCS
+
+installscripts: $(SCRIPTS) $(SCRIPTS_built)
+ifdef SCRIPTS
+       $(INSTALL_SCRIPT) $^ '$(DESTDIR)$(bindir)/'
+endif # SCRIPTS
+
+installdirs:
+ifneq (,$(EXTENSION))
+       $(MKDIR_P) '$(DESTDIR)$(datadir)/extension'
+endif
+ifneq (,$(DATA)$(DATA_built))
+       $(MKDIR_P) '$(DESTDIR)$(datadir)/$(datamoduledir)'
+endif
+ifneq (,$(MODULES))
+       $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'
+endif
+ifdef DOCS
+ifdef docdir
+       $(MKDIR_P) '$(DESTDIR)$(docdir)/$(docmoduledir)'
+endif # docdir
+endif # DOCS
+
+endif
 
-PGXS := $(shell $(PG_CONFIG) --pgxs)
-include $(PGXS)
 
 dist:
        git archive --prefix=$(EXTENSION)-$(EXTVERSION)/ -o ../$(EXTENSION)_$(EXTVERSION).orig.tar.gz HEAD