diff --git a/src/Makefile.global.in b/src/Makefile.global.in index 12cf42f0aa815137c497fab4e581956680039e70..60493a8e4bfe8413762e79f9703da709a424683a 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -1,5 +1,5 @@ # -*-makefile-*- -# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.229 2006/09/11 13:35:08 tgl Exp $ +# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.230 2006/09/19 15:36:07 tgl Exp $ #------------------------------------------------------------------------------ # All PostgreSQL makefiles include this file and use the variables it sets, @@ -345,13 +345,6 @@ libpq := -L$(libpq_builddir) -lpq ifeq ($(enable_shared), no) libpq += $(filter -lintl -lssl -lcrypto -lkrb5 -lcrypt, $(LIBS)) \ $(LDAP_LIBS_FE) $(PTHREAD_LIBS) -else -# On AIX even shared libraries do not remember their required libs, -# so again add in what libpq depends on. -ifeq ($(PORTNAME), aix) -libpq += $(filter -lintl -lssl -lcrypto -lkrb5 -lcrypt, $(LIBS)) \ - $(LDAP_LIBS_FE) $(PTHREAD_LIBS) -endif endif # This macro is for use by client executables (not libraries) that use libpq. diff --git a/src/Makefile.shlib b/src/Makefile.shlib index 8efa69db1d542549393de87c06f9022cde4bb198..10cc94a488813c8d1059977740538d2fff3726cb 100644 --- a/src/Makefile.shlib +++ b/src/Makefile.shlib @@ -6,7 +6,7 @@ # Copyright (c) 1998, Regents of the University of California # # IDENTIFICATION -# $PostgreSQL: pgsql/src/Makefile.shlib,v 1.104 2006/04/28 02:53:20 tgl Exp $ +# $PostgreSQL: pgsql/src/Makefile.shlib,v 1.105 2006/09/19 15:36:07 tgl Exp $ # #------------------------------------------------------------------------- @@ -96,8 +96,8 @@ override CFLAGS += $(CFLAGS_SL) soname = lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION) ifeq ($(PORTNAME), aix) - shlib = lib$(NAME)$(DLSUFFIX) -# SHLIB_LINK += -lc + shlib = lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION) + haslibarule = yes endif ifeq ($(PORTNAME), darwin) @@ -295,9 +295,13 @@ endif else # PORTNAME == aix # AIX case -$(shlib): lib$(NAME).a +$(shlib) lib$(NAME).a: $(OBJS) + $(LINK.static) lib$(NAME).a $^ + $(RANLIB) lib$(NAME).a $(MKLDEXPORT) lib$(NAME).a > lib$(NAME)$(EXPSUFF) - $(COMPILER) $(LDFLAGS_NO_L) $(LDFLAGS_SL) -o $@ $< -Wl,-bE:lib$(NAME)$(EXPSUFF) $(SHLIB_LINK) + $(COMPILER) $(LDFLAGS_NO_L) $(LDFLAGS_SL) -o $(shlib) lib$(NAME).a -Wl,-bE:lib$(NAME)$(EXPSUFF) $(SHLIB_LINK) + rm -f lib$(NAME).a + $(AR) $(AROPT) lib$(NAME).a $(shlib) endif # PORTNAME == aix @@ -350,6 +354,7 @@ endif ifeq ($(enable_shared), yes) install-lib-shared: $(shlib) +ifneq ($(PORTNAME), aix) # we don't install $(shlib) on AIX $(INSTALL_SHLIB) $< '$(DESTDIR)$(libdir)/$(shlib)' ifneq ($(PORTNAME), cygwin) ifneq ($(PORTNAME), win32) @@ -365,6 +370,7 @@ ifneq ($(shlib), $(shlib_bare)) endif endif # not win32 endif # not cygwin +endif # not aix endif # enable_shared diff --git a/src/interfaces/ecpg/test/Makefile.regress b/src/interfaces/ecpg/test/Makefile.regress index 31f767a1c499073106f5432857d575fc6b1be35d..c5e017e74a99785867d4d9aa89663e14f684e4b5 100644 --- a/src/interfaces/ecpg/test/Makefile.regress +++ b/src/interfaces/ecpg/test/Makefile.regress @@ -2,8 +2,8 @@ override CPPFLAGS := -I../../include -I$(top_srcdir)/src/interfaces/ecpg/include -I$(libpq_srcdir) $(CPPFLAGS) override CFLAGS += $(PTHREAD_CFLAGS) -override LDFLAGS := -L../../ecpglib -L../../pgtypeslib -L../../../libpq $(LDFLAGS) -override LIBS := -lpgtypes -lecpg -lpq $(LIBS) $(PTHREAD_LIBS) +override LDFLAGS := -L../../ecpglib -L../../pgtypeslib $(LDFLAGS) +override LIBS := -lecpg -lpgtypes $(libpq) $(LIBS) $(PTHREAD_LIBS) ECPG = ../../preproc/ecpg -I$(srcdir)/../../include diff --git a/src/interfaces/ecpg/test/compat_informix/Makefile b/src/interfaces/ecpg/test/compat_informix/Makefile index 05ed3cfd8cc46c3a3ae0b7162c3a2be60487dfc6..f57a190c4bdc283a011283d76bbb3687ac6a69ab 100644 --- a/src/interfaces/ecpg/test/compat_informix/Makefile +++ b/src/interfaces/ecpg/test/compat_informix/Makefile @@ -3,11 +3,12 @@ top_builddir = ../../../../.. include $(top_builddir)/src/Makefile.global include $(top_srcdir)/$(subdir)/../Makefile.regress -# special informix compatiblity switches +# special informix compatibility switches ECPG += -C INFORMIX ECPG_NOIND = $(ECPG) -r no_indicator -override LDFLAGS += -L../../compatlib -override LIBS += $(LIBS) -lecpg_compat + +override LDFLAGS := -L../../compatlib $(LDFLAGS) +override LIBS := -lecpg_compat $(LIBS) TESTS = test_informix test_informix.c \ test_informix2 test_informix2.c \ diff --git a/src/interfaces/ecpg/test/pg_regress.sh b/src/interfaces/ecpg/test/pg_regress.sh index a896042d53bb02de6b9cdeaf4df797e33f7e1c49..9f27d374d4e3a8ae4f66082a81764dca8a9fd9cc 100644 --- a/src/interfaces/ecpg/test/pg_regress.sh +++ b/src/interfaces/ecpg/test/pg_regress.sh @@ -1,5 +1,5 @@ #! /bin/sh -# $PostgreSQL: pgsql/src/interfaces/ecpg/test/pg_regress.sh,v 1.13 2006/09/08 13:32:27 meskes Exp $ +# $PostgreSQL: pgsql/src/interfaces/ecpg/test/pg_regress.sh,v 1.14 2006/09/19 15:36:08 tgl Exp $ me=`basename $0` @@ -322,6 +322,7 @@ do_temp_install(){ # Set up shared library paths, needed by psql and pg_encoding # (if you run multibyte). LD_LIBRARY_PATH covers many platforms. # DYLD_LIBRARY_PATH works on Darwin, and maybe other Mach-based systems. + # LIBPATH is for AIX. # Feel free to account for others as well. # ---------- @@ -339,6 +340,13 @@ do_temp_install(){ fi export DYLD_LIBRARY_PATH + if [ -n "$LIBPATH" ]; then + LIBPATH="$libdir:$LIBPATH" + else + LIBPATH=$libdir + fi + export LIBPATH + # ---------- # Windows needs shared libraries in PATH. (Only those linked into # executables, not dlopen'ed ones) diff --git a/src/makefiles/Makefile.aix b/src/makefiles/Makefile.aix index 2a75a24aeac957e040503179a5ae0eed26075d54..8a789352b63ca20c3daee92b5c229804cdddc026 100644 --- a/src/makefiles/Makefile.aix +++ b/src/makefiles/Makefile.aix @@ -5,6 +5,15 @@ MAKE_EXPORTS= true RANLIB= touch AROPT = crs +# -blibpath must contain ALL directories where we should look for libraries +libpath := $(shell echo $(subst -L,:,$(filter -L/%,$(LDFLAGS))) | sed -e's/ //g'):/usr/lib:/lib + +ifeq ($(host_os), aix3.2.5) + rpath = -L$(rpathdir) +else + rpath = -Wl,-blibpath:$(rpathdir)$(libpath) +endif + DLSUFFIX = .so ifeq ($(host_os), aix3.2.5) ifneq ($(GCC), yes) diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c index 5a6190bd052d16df571dd1fe511bc9afce8cf64b..89cd7a61132092da1b5720da4094043f49eb1403 100644 --- a/src/test/regress/pg_regress.c +++ b/src/test/regress/pg_regress.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.20 2006/08/13 20:39:07 tgl Exp $ + * $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.21 2006/09/19 15:36:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -507,12 +507,14 @@ initialize_environment(void) * Set up shared library paths to include the temp install. * * LD_LIBRARY_PATH covers many platforms. DYLD_LIBRARY_PATH works on - * Darwin, and maybe other Mach-based systems. Windows needs shared - * libraries in PATH. (Only those linked into executables, not - * dlopen'ed ones) Feel free to account for others as well. + * Darwin, and maybe other Mach-based systems. LIBPATH is for AIX. + * Windows needs shared libraries in PATH (only those linked into + * executables, not dlopen'ed ones). + * Feel free to account for others as well. */ add_to_path("LD_LIBRARY_PATH", ':', libdir); add_to_path("DYLD_LIBRARY_PATH", ':', libdir); + add_to_path("LIBPATH", ':', libdir); #if defined(WIN32) || defined(__CYGWIN__) add_to_path("PATH", ';', libdir); #endif