From 525a6a0d4580f52c13f0c9b7c9d82a4f96ef92fa Mon Sep 17 00:00:00 2001 From: Noah Misch Date: Wed, 15 Jul 2015 21:00:26 -0400 Subject: [PATCH] AIX: Link TRANSFORM modules with their dependencies. The result closely resembles linking of these modules for the "win32" port. Augment the $(exports_file) header so the file is also usable as an import file. Unfortunately, relocating an AIX installation will now require adding $(pkglibdir) to LD_LIBRARY_PATH. Back-patch to 9.5, where the modules were introduced. --- contrib/hstore_plperl/Makefile | 7 ++++++- contrib/hstore_plpython/Makefile | 7 ++++++- contrib/ltree_plpython/Makefile | 7 ++++++- src/Makefile.shlib | 3 ++- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/contrib/hstore_plperl/Makefile b/contrib/hstore_plperl/Makefile index 19a8ab4493..d789b99375 100644 --- a/contrib/hstore_plperl/Makefile +++ b/contrib/hstore_plperl/Makefile @@ -23,10 +23,15 @@ include $(top_builddir)/src/Makefile.global include $(top_srcdir)/contrib/contrib-global.mk endif +# In configurations that forbid undefined symbols in libraries, link with each +# dependency. This does preclude pgxs builds. +ifeq ($(PORTNAME), aix) +rpathdir = $(pkglibdir):$(perl_archlibexp)/CORE +SHLIB_LINK += ../hstore/libhstore.exp $(perl_embed_ldflags) +endif ifeq ($(PORTNAME), win32) # these settings are the same as for plperl override CPPFLAGS += -DPLPERL_HAVE_UID_GID -Wno-comment -# This means we need an in-tree build on Windows, not a pgxs build SHLIB_LINK += ../hstore/libhstore.a $(wildcard ../../src/pl/plperl/libperl*.a) endif diff --git a/contrib/hstore_plpython/Makefile b/contrib/hstore_plpython/Makefile index 6ee434bafa..395fc73753 100644 --- a/contrib/hstore_plpython/Makefile +++ b/contrib/hstore_plpython/Makefile @@ -23,8 +23,13 @@ include $(top_builddir)/src/Makefile.global include $(top_srcdir)/contrib/contrib-global.mk endif +# In configurations that forbid undefined symbols in libraries, link with each +# dependency. This does preclude pgxs builds. +ifeq ($(PORTNAME), aix) +rpathdir = $(pkglibdir):$(python_libdir) +SHLIB_LINK += ../hstore/libhstore.exp $(python_libspec) $(python_additional_libs) $(wildcard ../../src/pl/plpython/libplpython*.exp) +endif ifeq ($(PORTNAME), win32) -# This means we need an in-tree build on Windows, not a pgxs build SHLIB_LINK += ../hstore/libhstore.a $(wildcard ../../src/pl/plpython/libpython*.a) $(wildcard ../../src/pl/plpython/libplpython*.a) endif diff --git a/contrib/ltree_plpython/Makefile b/contrib/ltree_plpython/Makefile index 0eeb9b83eb..20b0dcfbc5 100644 --- a/contrib/ltree_plpython/Makefile +++ b/contrib/ltree_plpython/Makefile @@ -23,8 +23,13 @@ include $(top_builddir)/src/Makefile.global include $(top_srcdir)/contrib/contrib-global.mk endif +# In configurations that forbid undefined symbols in libraries, link with each +# dependency. This does preclude pgxs builds. +ifeq ($(PORTNAME), aix) +rpathdir = $(pkglibdir):$(python_libdir) +SHLIB_LINK += $(python_libspec) $(python_additional_libs) $(wildcard ../../src/pl/plpython/libplpython*.exp) +endif ifeq ($(PORTNAME), win32) -# This means we need an in-tree build on Windows, not a pgxs build SHLIB_LINK += $(wildcard ../../src/pl/plpython/libpython*.a) $(wildcard ../../src/pl/plpython/libplpython*.a) endif diff --git a/src/Makefile.shlib b/src/Makefile.shlib index 50c3805eec..86db52fe5e 100644 --- a/src/Makefile.shlib +++ b/src/Makefile.shlib @@ -111,6 +111,7 @@ ifeq ($(PORTNAME), aix) shlib = lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION) endif haslibarule = yes + # $(exports_file) is also usable as an import file exports_file = lib$(NAME).exp endif @@ -341,7 +342,7 @@ $(shlib) $(stlib): $(OBJS) | $(SHLIB_PREREQS) rm -f $(stlib) $(LINK.static) $(stlib) $^ $(RANLIB) $(stlib) - $(MKLDEXPORT) $(stlib) >$(exports_file) + $(MKLDEXPORT) $(stlib) $(shlib) >$(exports_file) $(COMPILER) -o $(shlib) $(stlib) -Wl,-bE:$(exports_file) $(LDFLAGS) $(LDFLAGS_SL) $(SHLIB_LINK) rm -f $(stlib) $(AR) $(AROPT) $(stlib) $(shlib) -- 2.40.0