summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoah Misch2015-07-16 01:00:26 +0000
committerNoah Misch2015-07-16 01:00:26 +0000
commit7193436744819270eeb772f6ada4ec7a388c0b5f (patch)
treeafe36341138f6444ab708fd443600d62df0606c0
parentbcd7c41206faf6d9654aa6e3766f87770d4fb305 (diff)
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.
-rw-r--r--contrib/hstore_plperl/Makefile7
-rw-r--r--contrib/hstore_plpython/Makefile7
-rw-r--r--contrib/ltree_plpython/Makefile7
-rw-r--r--src/Makefile.shlib3
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)