Fix PGXS support for building loadable modules on AIX.

Building a shlib on AIX requires use of the mkldexport.sh script, but we
failed to install that, preventing its use from non-source-tree contexts.
Also, Makefile.aix had the wrong idea about where to find the installed
copy of the postgres.imp symbol file used by AIX.

Per report from John Pierce.  Patch all the way back, since this has been
broken since the beginning of PGXS.
This commit is contained in:
Tom Lane 2012-10-09 21:04:30 -04:00
parent 36df743a4a
commit 3aa082f37a
2 changed files with 6 additions and 2 deletions

View File

@ -183,6 +183,7 @@ else
endif
ifeq ($(MAKE_EXPORTS), true)
$(INSTALL_DATA) $(POSTGRES_IMP) '$(DESTDIR)$(pkglibdir)/$(POSTGRES_IMP)'
$(INSTALL_PROGRAM) $(MKLDEXPORT) '$(DESTDIR)$(pgxsdir)/$(MKLDEXPORT_DIR)/mkldexport.sh'
endif
.PHONY: install-bin
@ -201,6 +202,7 @@ endif
endif
ifeq ($(MAKE_EXPORTS), true)
$(mkinstalldirs) '$(DESTDIR)$(pkglibdir)'
$(mkinstalldirs) '$(DESTDIR)$(pgxsdir)/$(MKLDEXPORT_DIR)'
endif
@ -210,6 +212,7 @@ uninstall:
rm -f '$(DESTDIR)$(bindir)/postgres$(X)' '$(DESTDIR)$(bindir)/postmaster'
ifeq ($(MAKE_EXPORTS), true)
rm -f '$(DESTDIR)$(pkglibdir)/$(POSTGRES_IMP)'
rm -f '$(DESTDIR)$(pgxsdir)/$(MKLDEXPORT_DIR)/mkldexport.sh'
endif
ifeq ($(PORTNAME), cygwin)
ifeq ($(MAKE_DLL), true)

View File

@ -30,12 +30,13 @@ IMPSUFF= .imp
POSTGRES_IMP= postgres$(IMPSUFF)
ifdef PGXS
BE_DLLLIBS= -Wl,-bI:$(bindir)/postgres/$(POSTGRES_IMP)
BE_DLLLIBS= -Wl,-bI:$(pkglibdir)/$(POSTGRES_IMP)
else
BE_DLLLIBS= -Wl,-bI:$(top_builddir)/src/backend/$(POSTGRES_IMP)
endif
MKLDEXPORT=$(top_srcdir)/src/backend/port/aix/mkldexport.sh
MKLDEXPORT_DIR=src/backend/port/aix
MKLDEXPORT=$(top_srcdir)/$(MKLDEXPORT_DIR)/mkldexport.sh
%$(EXPSUFF): %.o
$(MKLDEXPORT) $*.o > $*$(EXPSUFF)