From 4ee24cbb55a17c6808338f22ca86bd8f24d6955b Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 10 Sep 2006 22:07:02 +0000 Subject: [PATCH] Install a cleaner solution to the AIX libpq linking problem, as per an earlier discussion. Centralize assumptions about what libpq depends on in one place in Makefile.global. I am unconvinced that this list is complete, but since ecpg seems to have gotten along with just these entries, we'll try it this way and see what happens. --- contrib/dblink/Makefile | 5 +---- src/Makefile.global.in | 23 ++++++++++++----------- src/interfaces/ecpg/compatlib/Makefile | 5 ++--- src/interfaces/ecpg/ecpglib/Makefile | 5 ++--- 4 files changed, 17 insertions(+), 21 deletions(-) diff --git a/contrib/dblink/Makefile b/contrib/dblink/Makefile index 950fed5069..aebf403fae 100644 --- a/contrib/dblink/Makefile +++ b/contrib/dblink/Makefile @@ -1,4 +1,4 @@ -# $PostgreSQL: pgsql/contrib/dblink/Makefile,v 1.12 2006/09/10 21:38:26 tgl Exp $ +# $PostgreSQL: pgsql/contrib/dblink/Makefile,v 1.13 2006/09/10 22:07:02 tgl Exp $ MODULE_big = dblink PG_CPPFLAGS = -I$(libpq_srcdir) @@ -20,6 +20,3 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global include $(top_srcdir)/contrib/contrib-global.mk endif - -# Apparently AIX requires that we mention everything libpq depends on :-( -SHLIB_LINK += $(filter -lintl -lssl -lcrypto, $(LIBS)) diff --git a/src/Makefile.global.in b/src/Makefile.global.in index f2a3a255f8..a9ac4f6179 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -1,5 +1,5 @@ # -*-makefile-*- -# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.227 2006/09/09 03:15:40 tgl Exp $ +# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.228 2006/09/10 22:07:02 tgl Exp $ #------------------------------------------------------------------------------ # All PostgreSQL makefiles include this file and use the variables it sets, @@ -336,23 +336,24 @@ libpq_srcdir = $(top_srcdir)/src/interfaces/libpq libpq_builddir = $(top_builddir)/src/interfaces/libpq endif -# This is for use for libraries linking to libpq. Because libpqport -# isn't created with the same link flags as libpq, it can't be used. -libpq = -L$(libpq_builddir) -lpq +# This macro is for use by libraries linking to libpq. (Because libpgport +# isn't created with the same link flags as libpq, it can't be used.) +libpq := -L$(libpq_builddir) -lpq -# If doing static linking, shared library dependency can't be -# used so we specify pthread libs for every usage of libpq +# If doing static linking, shared library dependency info isn't available, +# so add in the libraries that libpq depends on. ifeq ($(enable_shared), no) -libpq += $(PTHREAD_LIBS) +libpq += $(filter -lintl -lssl -lcrypto -lkrb5 -lcrypt, $(LIBS)) $(PTHREAD_LIBS) else -# AIX libraries do not remember their required libs so we have to force -# thread dependent libraires in the link +# On AIX even shared libraries do not remember their required libs, +# so again add in what libpq depends on. ifeq ($(PORTNAME), aix) -libpq += $(PTHREAD_LIBS) +libpq += $(filter -lintl -lssl -lcrypto -lkrb5 -lcrypt, $(LIBS)) $(PTHREAD_LIBS) endif endif -# Force clients to pull symbols from the non-shared library libpgport +# This macro is for use by client executables (not libraries) that use libpq. +# We force clients to pull symbols from the non-shared library libpgport # rather than pulling some libpgport symbols from libpq just because # libpq uses those functions too. This makes applications less # dependent on changes in libpq's usage of pgport. To do this we link to diff --git a/src/interfaces/ecpg/compatlib/Makefile b/src/interfaces/ecpg/compatlib/Makefile index f385d8b745..6372e351fc 100644 --- a/src/interfaces/ecpg/compatlib/Makefile +++ b/src/interfaces/ecpg/compatlib/Makefile @@ -4,7 +4,7 @@ # # Copyright (c) 1994, Regents of the University of California # -# $PostgreSQL: pgsql/src/interfaces/ecpg/compatlib/Makefile,v 1.24 2006/08/28 16:13:10 tgl Exp $ +# $PostgreSQL: pgsql/src/interfaces/ecpg/compatlib/Makefile,v 1.25 2006/09/10 22:07:02 tgl Exp $ # #------------------------------------------------------------------------- @@ -20,8 +20,7 @@ DLTYPE= library override CPPFLAGS := -I../include -I$(top_srcdir)/src/interfaces/ecpg/include \ -I$(libpq_srcdir) -I$(top_srcdir)/src/include/utils $(CPPFLAGS) override CFLAGS += $(PTHREAD_CFLAGS) -SHLIB_LINK = -L../ecpglib -lecpg -L../pgtypeslib -lpgtypes $(libpq) \ - $(filter -lintl -lssl -lcrypto -lkrb5 -lcrypt -lm, $(LIBS)) \ +SHLIB_LINK = -L../ecpglib -lecpg -L../pgtypeslib -lpgtypes $(libpq) -lm \ $(PTHREAD_LIBS) OBJS= informix.o diff --git a/src/interfaces/ecpg/ecpglib/Makefile b/src/interfaces/ecpg/ecpglib/Makefile index 3528133aa6..374432dd66 100644 --- a/src/interfaces/ecpg/ecpglib/Makefile +++ b/src/interfaces/ecpg/ecpglib/Makefile @@ -4,7 +4,7 @@ # # Copyright (c) 1994, Regents of the University of California # -# $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/Makefile,v 1.41 2006/08/28 16:13:11 tgl Exp $ +# $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/Makefile,v 1.42 2006/09/10 22:07:02 tgl Exp $ # #------------------------------------------------------------------------- @@ -34,8 +34,7 @@ ifneq ($(PORTNAME), win32) OBJS += thread.o endif -SHLIB_LINK = -L../pgtypeslib -lpgtypes $(libpq) \ - $(filter -lintl -lssl -lcrypto -lkrb5 -lcrypt -lm, $(LIBS)) $(PTHREAD_LIBS) +SHLIB_LINK = -L../pgtypeslib -lpgtypes $(libpq) -lm $(PTHREAD_LIBS) ifeq ($(PORTNAME), win32) # Link to shfolder.dll instead of shell32.dll -- GitLab