aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure7
-rw-r--r--configure.in6
-rw-r--r--doc/src/sgml/installation.sgml15
-rw-r--r--doc/src/sgml/ref/pg_config-ref.sgml22
-rw-r--r--src/Makefile.global.in7
-rw-r--r--src/Makefile.shlib31
-rw-r--r--src/backend/Makefile18
-rw-r--r--src/backend/port/Makefile4
-rw-r--r--src/bin/initdb/Makefile4
-rw-r--r--src/bin/pg_config/Makefile5
-rw-r--r--src/bin/pg_config/pg_config.c20
-rw-r--r--src/bin/pg_controldata/Makefile4
-rw-r--r--src/bin/pg_ctl/Makefile4
-rw-r--r--src/bin/pg_dump/Makefile8
-rw-r--r--src/bin/pg_resetxlog/Makefile4
-rw-r--r--src/bin/psql/Makefile4
-rw-r--r--src/bin/scripts/Makefile4
-rw-r--r--src/interfaces/ecpg/preproc/Makefile4
-rw-r--r--src/interfaces/ecpg/test/Makefile4
-rw-r--r--src/interfaces/ecpg/test/Makefile.regress2
-rw-r--r--src/makefiles/Makefile.aix1
-rw-r--r--src/makefiles/Makefile.bsdi3
-rw-r--r--src/makefiles/Makefile.cygwin13
-rw-r--r--src/makefiles/Makefile.darwin11
-rw-r--r--src/makefiles/Makefile.dgux3
-rw-r--r--src/makefiles/Makefile.freebsd3
-rw-r--r--src/makefiles/Makefile.hpux9
-rw-r--r--src/makefiles/Makefile.irix9
-rw-r--r--src/makefiles/Makefile.linux3
-rw-r--r--src/makefiles/Makefile.netbsd3
-rw-r--r--src/makefiles/Makefile.openbsd3
-rw-r--r--src/makefiles/Makefile.osf1
-rw-r--r--src/makefiles/Makefile.sco1
-rw-r--r--src/makefiles/Makefile.solaris7
-rw-r--r--src/makefiles/Makefile.sunos41
-rw-r--r--src/makefiles/Makefile.svr41
-rw-r--r--src/makefiles/Makefile.ultrix43
-rw-r--r--src/makefiles/Makefile.univel1
-rw-r--r--src/makefiles/Makefile.unixware9
-rw-r--r--src/makefiles/Makefile.win3213
-rw-r--r--src/makefiles/pgxs.mk5
-rw-r--r--src/template/cygwin9
-rw-r--r--src/template/win325
-rw-r--r--src/test/regress/GNUmakefile4
-rw-r--r--src/test/thread/Makefile4
-rw-r--r--src/timezone/Makefile4
-rw-r--r--src/tools/findoidjoins/Makefile4
-rw-r--r--src/tools/fsync/Makefile4
-rw-r--r--src/tools/ifaddrs/Makefile4
49 files changed, 183 insertions, 135 deletions
diff --git a/configure b/configure
index f6b891e46b1..91261a47b86 100755
--- a/configure
+++ b/configure
@@ -704,6 +704,7 @@ ld_R_works
with_gnu_ld
LD
LDFLAGS_SL
+LDFLAGS_EX
ELF_SYS
EGREP
GREP
@@ -856,6 +857,7 @@ LDFLAGS
LIBS
CPPFLAGS
CPP
+LDFLAGS_EX
LDFLAGS_SL
DOCBOOKSTYLE'
@@ -1551,7 +1553,8 @@ Some influential environment variables:
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
CPP C preprocessor
- LDFLAGS_SL linker flags for shared library linking
+ LDFLAGS_EX extra linker flags for linking executables only
+ LDFLAGS_SL extra linker flags for linking shared libraries only
DOCBOOKSTYLE
location of DocBook stylesheets
@@ -5788,6 +5791,7 @@ LDFLAGS="$LDFLAGS $LIBDIRS"
+
# Check whether --with-gnu-ld was given.
if test "${with_gnu_ld+set}" = set; then
withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
@@ -28826,7 +28830,6 @@ fi
# If compiler will take -Wl,--as-needed (or various platform-specific
# spellings thereof) then add that to LDFLAGS. This is much easier than
# trying to filter LIBS to the minimum for each executable.
-# (Note that shared library links won't use this switch, though.)
# On (at least) some Red-Hat-derived systems, this switch breaks linking to
# libreadline; therefore we postpone testing it until we know what library
# dependencies readline has. The test code will try to link with $LIBS.
diff --git a/configure.in b/configure.in
index a84e37b8197..c9c4f214733 100644
--- a/configure.in
+++ b/configure.in
@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
-dnl $PostgreSQL: pgsql/configure.in,v 1.630 2010/06/04 07:28:30 scrappy Exp $
+dnl $PostgreSQL: pgsql/configure.in,v 1.631 2010/07/05 18:54:37 tgl Exp $
dnl
dnl Developers, please strive to achieve this order:
dnl
@@ -785,7 +785,8 @@ AC_SUBST(ELF_SYS)
CPPFLAGS="$CPPFLAGS $INCLUDES"
LDFLAGS="$LDFLAGS $LIBDIRS"
-AC_ARG_VAR(LDFLAGS_SL, [linker flags for shared library linking])
+AC_ARG_VAR(LDFLAGS_EX, [extra linker flags for linking executables only])
+AC_ARG_VAR(LDFLAGS_SL, [extra linker flags for linking shared libraries only])
PGAC_PROG_LD
AC_SUBST(LD)
@@ -1770,7 +1771,6 @@ fi
# If compiler will take -Wl,--as-needed (or various platform-specific
# spellings thereof) then add that to LDFLAGS. This is much easier than
# trying to filter LIBS to the minimum for each executable.
-# (Note that shared library links won't use this switch, though.)
# On (at least) some Red-Hat-derived systems, this switch breaks linking to
# libreadline; therefore we postpone testing it until we know what library
# dependencies readline has. The test code will try to link with $LIBS.
diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml
index 2f3ec3beab0..01f57a70e30 100644
--- a/doc/src/sgml/installation.sgml
+++ b/doc/src/sgml/installation.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.347 2010/06/29 22:29:13 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.348 2010/07/05 18:54:37 tgl Exp $ -->
<chapter id="installation">
<title><![%standalone-include[<productname>PostgreSQL</>]]>
@@ -1468,7 +1468,16 @@ su - postgres
<term><envar>LDFLAGS</envar></term>
<listitem>
<para>
- options to pass to the link editor
+ options to use when linking either executables or shared libraries
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><envar>LDFLAGS_EX</envar></term>
+ <listitem>
+ <para>
+ additional options for linking executables only
</para>
</listitem>
</varlistentry>
@@ -1477,7 +1486,7 @@ su - postgres
<term><envar>LDFLAGS_SL</envar></term>
<listitem>
<para>
- linker options for shared library linking
+ additional options for linking shared libraries only
</para>
</listitem>
</varlistentry>
diff --git a/doc/src/sgml/ref/pg_config-ref.sgml b/doc/src/sgml/ref/pg_config-ref.sgml
index 5c63942542e..66cf79b2f4b 100644
--- a/doc/src/sgml/ref/pg_config-ref.sgml
+++ b/doc/src/sgml/ref/pg_config-ref.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_config-ref.sgml,v 1.29 2010/04/03 07:23:01 petere Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_config-ref.sgml,v 1.30 2010/07/05 18:54:37 tgl Exp $ -->
<refentry id="app-pgconfig">
<refmeta>
@@ -233,12 +233,23 @@
</varlistentry>
<varlistentry>
+ <term><option>--ldflags_ex</option></>
+ <listitem>
+ <para>
+ Print the value of the <varname>LDFLAGS_EX</varname> variable that was used for building
+ <productname>PostgreSQL</>. This shows linker switches
+ used for building executables only.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>--ldflags_sl</option></>
<listitem>
<para>
Print the value of the <varname>LDFLAGS_SL</varname> variable that was used for building
<productname>PostgreSQL</>. This shows linker switches
- used for building shared libraries.
+ used for building shared libraries only.
</para>
</listitem>
</varlistentry>
@@ -275,7 +286,7 @@
<title>Notes</title>
<para>
- The option <option>--includedir-server</option> was new in
+ The option <option>--includedir-server</option> was added in
<productname>PostgreSQL</> 7.2. In prior releases, the server include files were
installed in the same location as the client headers, which could
be queried with the option <option>--includedir</option>. To make your
@@ -290,8 +301,9 @@
<option>--cc</option>, <option>--cppflags</option>,
<option>--cflags</option>, <option>--cflags_sl</option>,
<option>--ldflags</option>, <option>--ldflags_sl</option>,
- and <option>--libs</option> are new in <productname>PostgreSQL</> 8.1.
- The option <option>--htmldir</option> is new in <productname>PostgreSQL</> 8.4.
+ and <option>--libs</option> were added in <productname>PostgreSQL</> 8.1.
+ The option <option>--htmldir</option> was added in <productname>PostgreSQL</> 8.4.
+ The option <option>--ldflags_ex</option> was added in <productname>PostgreSQL</> 9.0.
</para>
<para>
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index bfbcf8851cd..47b2f5e491e 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -1,5 +1,5 @@
# -*-makefile-*-
-# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.262 2010/05/13 11:49:47 petere Exp $
+# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.263 2010/07/05 18:54:37 tgl Exp $
#------------------------------------------------------------------------------
# All PostgreSQL makefiles include this file and use the variables it sets,
@@ -236,6 +236,7 @@ LD = @LD@
with_gnu_ld = @with_gnu_ld@
ld_R_works = @ld_R_works@
LDFLAGS = @LDFLAGS@
+LDFLAGS_EX = @LDFLAGS_EX@
LDFLAGS_SL = @LDFLAGS_SL@
LDREL = -r
LDOUT = -o
@@ -455,9 +456,9 @@ LIBOBJS = @LIBOBJS@
LIBS := -lpgport $(LIBS)
# add location of libpgport.a to LDFLAGS
ifdef PGXS
-override LDFLAGS := -L$(libdir) $(LDFLAGS)
+ LDFLAGS += -L$(libdir)
else
-override LDFLAGS := -L$(top_builddir)/src/port $(LDFLAGS)
+ LDFLAGS += -L$(top_builddir)/src/port
endif
# to make ws2_32.lib the last library, and always link with shfolder,
diff --git a/src/Makefile.shlib b/src/Makefile.shlib
index add201d0078..61984935612 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.123 2009/08/28 20:26:18 petere Exp $
+# $PostgreSQL: pgsql/src/Makefile.shlib,v 1.124 2010/07/05 18:54:37 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -78,11 +78,8 @@ LINK.static = $(AR) $(AROPT)
-# Insert -L from LDFLAGS after any -L already present in SHLIB_LINK
-SHLIB_LINK := $(filter -L%, $(SHLIB_LINK)) $(filter -L%, $(LDFLAGS)) $(filter-out -L%, $(SHLIB_LINK))
-
-# Need a -L-free version of LDFLAGS to use in combination with SHLIB_LINK
-LDFLAGS_NO_L = $(filter-out -L%, $(LDFLAGS))
+# Automatically append LDFLAGS and LDFLAGS_SL to SHLIB_LINK
+SHLIB_LINK += $(LDFLAGS) $(LDFLAGS_SL)
ifdef SO_MAJOR_VERSION
# Default library naming convention used by the majority of platforms
@@ -104,7 +101,7 @@ stlib = lib$(NAME).a
ifndef soname
# additional flags for backend modules
-SHLIB_LINK := $(BE_DLLLIBS) $(SHLIB_LINK)
+SHLIB_LINK += $(BE_DLLLIBS)
endif
# For each platform we support shared libraries on, set shlib to the
@@ -208,17 +205,17 @@ ifeq ($(PORTNAME), hpux)
shlib = lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
endif
ifeq ($(with_gnu_ld), yes)
- LINK.shared = $(CC) $(LDFLAGS_NO_L) -shared
+ LINK.shared = $(CC) -shared
ifdef soname
LINK.shared += -Wl,-h -Wl,$(soname)
endif
else
- # can't use the CC-syntax rpath pattern here
- rpath =
LINK.shared = $(LD) -b
ifdef soname
LINK.shared += +h $(soname)
endif
+ # can't use the CC-syntax rpath pattern here, so instead:
+ rpath =
ifeq ($(enable_rpath), yes)
LINK.shared += +b '$(rpathdir)'
endif
@@ -227,10 +224,10 @@ ifeq ($(PORTNAME), hpux)
# ld can find the same libraries gcc does. Make sure it goes after any
# -L switches provided explicitly.
ifeq ($(GCC), yes)
- SHLIB_LINK := $(filter -L%, $(SHLIB_LINK)) -L/usr/local/lib $(filter-out -L%, $(SHLIB_LINK))
+ SHLIB_LINK += -L/usr/local/lib
endif
endif
- # do this last so above filtering doesn't pull out -L switches in LDFLAGS
+ # And we need to link with libgcc, too
ifeq ($(GCC), yes)
SHLIB_LINK += `$(CC) $(LDFLAGS) -print-libgcc-file-name`
endif
@@ -327,10 +324,6 @@ ifeq ($(PORTNAME), win32)
haslibarule = yes
endif
-ifeq ($(enable_rpath), yes)
-SHLIB_LINK += $(rpath)
-endif
-
##
@@ -362,7 +355,7 @@ ifneq ($(PORTNAME), aix)
# Normal case
$(shlib): $(OBJS)
- $(LINK.shared) $(LDFLAGS_SL) $(OBJS) $(SHLIB_LINK) -o $@
+ $(LINK.shared) -o $@ $(OBJS) $(SHLIB_LINK)
ifdef shlib_major
# If we're using major and minor versions, then make a symlink to major-version-only.
ifneq ($(shlib), $(shlib_major))
@@ -396,7 +389,7 @@ $(shlib) $(stlib): $(OBJS)
$(LINK.static) $(stlib) $^
$(RANLIB) $(stlib)
$(MKLDEXPORT) $(stlib) >$(exports_file)
- $(COMPILER) $(LDFLAGS_NO_L) $(LDFLAGS_SL) -o $(shlib) $(stlib) -Wl,-bE:$(exports_file) $(SHLIB_LINK)
+ $(COMPILER) -o $(shlib) $(stlib) -Wl,-bE:$(exports_file) $(SHLIB_LINK)
rm -f $(stlib)
$(AR) $(AROPT) $(stlib) $(shlib)
@@ -419,7 +412,7 @@ DLL_DEFFILE = lib$(NAME)dll.def
endif
$(shlib): $(OBJS) $(DLL_DEFFILE)
- $(DLLWRAP) $(LDFLAGS_SL) -o $@ --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(DLL_DEFFILE) $(OBJS) $(SHLIB_LINK)
+ $(DLLWRAP) -o $@ --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(DLL_DEFFILE) $(OBJS) $(SHLIB_LINK)
$(stlib): $(shlib) $(DLL_DEFFILE)
$(DLLTOOL) --dllname $(shlib) $(DLLTOOL_LIBFLAGS) --def $(DLL_DEFFILE) --output-lib $@
diff --git a/src/backend/Makefile b/src/backend/Makefile
index 8c9c7f2c6ee..a11b2b503cf 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -5,7 +5,7 @@
# Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California
#
-# $PostgreSQL: pgsql/src/backend/Makefile,v 1.144 2010/05/12 23:48:36 momjian Exp $
+# $PostgreSQL: pgsql/src/backend/Makefile,v 1.145 2010/07/05 18:54:37 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -52,7 +52,7 @@ ifneq ($(PORTNAME), win32)
ifneq ($(PORTNAME), aix)
postgres: $(OBJS)
- $(CC) $(CFLAGS) $(LDFLAGS) $(export_dynamic) $(call expand_subsys,$^) $(LIBS) -o $@
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) $(export_dynamic) $(call expand_subsys,$^) $(LIBS) -o $@
endif
endif
@@ -62,9 +62,9 @@ ifeq ($(PORTNAME), cygwin)
postgres: $(OBJS) postgres.def libpostgres.a
$(DLLTOOL) --dllname $@$(X) --output-exp $@.exp --def postgres.def
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@$(X) -Wl,--base-file,$@.base $@.exp $(call expand_subsys,$(OBJS)) $(LIBS)
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) -o $@$(X) -Wl,--base-file,$@.base $@.exp $(call expand_subsys,$(OBJS)) $(LIBS)
$(DLLTOOL) --dllname $@$(X) --base-file $@.base --output-exp $@.exp --def postgres.def
- $(CC) $(CFLAGS) $(LDFLAGS) -Wl,--stack,$(WIN32_STACK_RLIMIT) -o $@$(X) $@.exp $(call expand_subsys,$(OBJS)) $(LIBS)
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) -Wl,--stack,$(WIN32_STACK_RLIMIT) -o $@$(X) $@.exp $(call expand_subsys,$(OBJS)) $(LIBS)
rm -f $@.exp $@.base
postgres.def: $(OBJS)
@@ -80,9 +80,9 @@ LIBS += -lsecur32
postgres: $(OBJS) postgres.def libpostgres.a $(WIN32RES)
$(DLLTOOL) --dllname $@$(X) --output-exp $@.exp --def postgres.def
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@$(X) -Wl,--base-file,$@.base $@.exp $(call expand_subsys,$(OBJS)) $(WIN32RES) $(LIBS)
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) -o $@$(X) -Wl,--base-file,$@.base $@.exp $(call expand_subsys,$(OBJS)) $(WIN32RES) $(LIBS)
$(DLLTOOL) --dllname $@$(X) --base-file $@.base --output-exp $@.exp --def postgres.def
- $(CC) $(CFLAGS) $(LDFLAGS) -Wl,--stack=$(WIN32_STACK_RLIMIT) -o $@$(X) $@.exp $(call expand_subsys,$(OBJS)) $(WIN32RES) $(LIBS)
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) -Wl,--stack=$(WIN32_STACK_RLIMIT) -o $@$(X) $@.exp $(call expand_subsys,$(OBJS)) $(WIN32RES) $(LIBS)
rm -f $@.exp $@.base
postgres.def: $(OBJS)
@@ -96,7 +96,7 @@ endif # win32
ifeq ($(PORTNAME), aix)
postgres: $(POSTGRES_IMP)
- $(CC) $(CFLAGS) $(LDFLAGS) $(call expand_subsys,$(OBJS)) -Wl,-bE:$(top_builddir)/src/backend/$(POSTGRES_IMP) $(LIBS) -o $@
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) $(call expand_subsys,$(OBJS)) -Wl,-bE:$(top_builddir)/src/backend/$(POSTGRES_IMP) $(LIBS) -o $@
$(POSTGRES_IMP): $(OBJS)
$(LD) $(LDREL) $(LDOUT) SUBSYS.o $(call expand_subsys,$^)
@@ -128,7 +128,7 @@ catalog/schemapg.h: submake-schemapg
# The postgres.o target is needed by the rule in Makefile.global that
# creates the exports file when MAKE_EXPORTS = true.
postgres.o: $(OBJS)
- $(CC) $(LDREL) $(LDFLAGS) $(call expand_subsys,$^) $(LIBS) -o $@
+ $(CC) $(LDREL) $(LDFLAGS) $(LDFLAGS_EX) $(call expand_subsys,$^) $(LIBS) -o $@
# The following targets are specified in make commands that appear in
@@ -306,4 +306,4 @@ maintainer-clean: distclean
# are up to date. It saves the time of doing all the submakes.
.PHONY: quick
quick: $(OBJS)
- $(CC) $(CFLAGS) $(LDFLAGS) $(export_dynamic) $(call expand_subsys,$^) $(LIBS) -o postgres
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) $(export_dynamic) $(call expand_subsys,$^) $(LIBS) -o postgres
diff --git a/src/backend/port/Makefile b/src/backend/port/Makefile
index 47980426564..2009919ad98 100644
--- a/src/backend/port/Makefile
+++ b/src/backend/port/Makefile
@@ -13,7 +13,7 @@
# be converted to Method 2.
#
# IDENTIFICATION
-# $PostgreSQL: pgsql/src/backend/port/Makefile,v 1.27 2008/10/29 16:06:46 petere Exp $
+# $PostgreSQL: pgsql/src/backend/port/Makefile,v 1.28 2010/07/05 18:54:37 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -44,7 +44,7 @@ endif
# IPC test program
ipc_test: ipc_test.o pg_sema.o pg_shmem.o
- $(CC) $(CFLAGS) $(LDFLAGS) $(export_dynamic) $^ $(LIBS) -o $@
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) $(export_dynamic) $^ $(LIBS) -o $@
distclean clean:
rm -f ipc_test ipc_test.o tas_cpp.s
diff --git a/src/bin/initdb/Makefile b/src/bin/initdb/Makefile
index 4f8771569f0..2ffcb54153b 100644
--- a/src/bin/initdb/Makefile
+++ b/src/bin/initdb/Makefile
@@ -5,7 +5,7 @@
# Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California
#
-# $PostgreSQL: pgsql/src/bin/initdb/Makefile,v 1.60 2010/05/12 11:33:09 momjian Exp $
+# $PostgreSQL: pgsql/src/bin/initdb/Makefile,v 1.61 2010/07/05 18:54:37 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -23,7 +23,7 @@ OBJS= initdb.o encnames.o pqsignal.o $(WIN32RES)
all: submake-libpgport initdb
initdb: $(OBJS)
- $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LIBS) -o $@$(X)
+ $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
# We used to pull in all of libpq to get encnames and pqsignal, but that
# exposes us to risks of version skew if we link to a shared library.
diff --git a/src/bin/pg_config/Makefile b/src/bin/pg_config/Makefile
index 43558749654..b9ca579046e 100644
--- a/src/bin/pg_config/Makefile
+++ b/src/bin/pg_config/Makefile
@@ -4,7 +4,7 @@
#
# Copyright (c) 1998-2010, PostgreSQL Global Development Group
#
-# $PostgreSQL: pgsql/src/bin/pg_config/Makefile,v 1.24 2010/05/12 11:33:09 momjian Exp $
+# $PostgreSQL: pgsql/src/bin/pg_config/Makefile,v 1.25 2010/07/05 18:54:38 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -27,13 +27,14 @@ override CPPFLAGS += -DVAL_CPPFLAGS="\"$(STD_CPPFLAGS)\""
override CPPFLAGS += -DVAL_CFLAGS="\"$(CFLAGS)\""
override CPPFLAGS += -DVAL_CFLAGS_SL="\"$(CFLAGS_SL)\""
override CPPFLAGS += -DVAL_LDFLAGS="\"$(STD_LDFLAGS)\""
+override CPPFLAGS += -DVAL_LDFLAGS_EX="\"$(LDFLAGS_EX)\""
override CPPFLAGS += -DVAL_LDFLAGS_SL="\"$(LDFLAGS_SL)\""
override CPPFLAGS += -DVAL_LIBS="\"$(LIBS)\""
all: submake-libpgport pg_config
pg_config: $(OBJS)
- $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LIBS) -o $@$(X)
+ $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
install: all installdirs
$(INSTALL_SCRIPT) pg_config$(X) '$(DESTDIR)$(bindir)/pg_config$(X)'
diff --git a/src/bin/pg_config/pg_config.c b/src/bin/pg_config/pg_config.c
index 6e764b18aa1..e8ddbed027f 100644
--- a/src/bin/pg_config/pg_config.c
+++ b/src/bin/pg_config/pg_config.c
@@ -17,7 +17,7 @@
*
* Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/pg_config/pg_config.c,v 1.32 2010/01/02 16:57:58 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_config/pg_config.c,v 1.33 2010/07/05 18:54:38 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -327,6 +327,22 @@ show_ldflags(bool all)
}
static void
+show_ldflags_ex(bool all)
+{
+#ifdef VAL_LDFLAGS_EX
+ if (all)
+ printf("LDFLAGS_EX = ");
+ printf("%s\n", VAL_LDFLAGS_EX);
+#else
+ if (!all)
+ {
+ fprintf(stderr, _("not recorded\n"));
+ exit(1);
+ }
+#endif
+}
+
+static void
show_ldflags_sl(bool all)
{
#ifdef VAL_LDFLAGS_SL
@@ -398,6 +414,7 @@ static const InfoItem info_items[] = {
{"--cflags", show_cflags},
{"--cflags_sl", show_cflags_sl},
{"--ldflags", show_ldflags},
+ {"--ldflags_ex", show_ldflags_ex},
{"--ldflags_sl", show_ldflags_sl},
{"--libs", show_libs},
{"--version", show_version},
@@ -433,6 +450,7 @@ help(void)
printf(_(" --cflags show CFLAGS value used when PostgreSQL was built\n"));
printf(_(" --cflags_sl show CFLAGS_SL value used when PostgreSQL was built\n"));
printf(_(" --ldflags show LDFLAGS value used when PostgreSQL was built\n"));
+ printf(_(" --ldflags_ex show LDFLAGS_EX value used when PostgreSQL was built\n"));
printf(_(" --ldflags_sl show LDFLAGS_SL value used when PostgreSQL was built\n"));
printf(_(" --libs show LIBS value used when PostgreSQL was built\n"));
printf(_(" --version show the PostgreSQL version\n"));
diff --git a/src/bin/pg_controldata/Makefile b/src/bin/pg_controldata/Makefile
index c12bf335570..ab551fe691f 100644
--- a/src/bin/pg_controldata/Makefile
+++ b/src/bin/pg_controldata/Makefile
@@ -4,7 +4,7 @@
#
# Copyright (c) 1998-2010, PostgreSQL Global Development Group
#
-# $PostgreSQL: pgsql/src/bin/pg_controldata/Makefile,v 1.21 2010/05/12 11:33:09 momjian Exp $
+# $PostgreSQL: pgsql/src/bin/pg_controldata/Makefile,v 1.22 2010/07/05 18:54:38 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -20,7 +20,7 @@ OBJS= pg_controldata.o pg_crc.o $(WIN32RES)
all: submake-libpgport pg_controldata
pg_controldata: $(OBJS)
- $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LIBS) -o $@$(X)
+ $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
pg_crc.c: $(top_srcdir)/src/backend/utils/hash/pg_crc.c
rm -f $@ && $(LN_S) $< .
diff --git a/src/bin/pg_ctl/Makefile b/src/bin/pg_ctl/Makefile
index 32a4fc92cb7..6bd63995e65 100644
--- a/src/bin/pg_ctl/Makefile
+++ b/src/bin/pg_ctl/Makefile
@@ -5,7 +5,7 @@
# Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California
#
-# $PostgreSQL: pgsql/src/bin/pg_ctl/Makefile,v 1.29 2010/05/12 11:33:09 momjian Exp $
+# $PostgreSQL: pgsql/src/bin/pg_ctl/Makefile,v 1.30 2010/07/05 18:54:38 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -23,7 +23,7 @@ OBJS= pg_ctl.o $(WIN32RES)
all: submake-libpq submake-libpgport pg_ctl
pg_ctl: $(OBJS) $(libpq_builddir)/libpq.a
- $(CC) $(CFLAGS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X)
+ $(CC) $(CFLAGS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
install: all installdirs
$(INSTALL_PROGRAM) pg_ctl$(X) '$(DESTDIR)$(bindir)/pg_ctl$(X)'
diff --git a/src/bin/pg_dump/Makefile b/src/bin/pg_dump/Makefile
index 2eeb099b73d..0a26c702b66 100644
--- a/src/bin/pg_dump/Makefile
+++ b/src/bin/pg_dump/Makefile
@@ -5,7 +5,7 @@
# Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California
#
-# $PostgreSQL: pgsql/src/bin/pg_dump/Makefile,v 1.70 2010/05/12 11:33:09 momjian Exp $
+# $PostgreSQL: pgsql/src/bin/pg_dump/Makefile,v 1.71 2010/07/05 18:54:38 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -30,13 +30,13 @@ kwlookup.c: % : $(top_srcdir)/src/backend/parser/%
all: submake-libpq submake-libpgport pg_dump pg_restore pg_dumpall
pg_dump: pg_dump.o common.o pg_dump_sort.o $(OBJS) $(KEYWRDOBJS) $(libpq_builddir)/libpq.a
- $(CC) $(CFLAGS) pg_dump.o common.o pg_dump_sort.o $(KEYWRDOBJS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X)
+ $(CC) $(CFLAGS) pg_dump.o common.o pg_dump_sort.o $(KEYWRDOBJS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
pg_restore: pg_restore.o $(OBJS) $(KEYWRDOBJS) $(libpq_builddir)/libpq.a
- $(CC) $(CFLAGS) pg_restore.o $(KEYWRDOBJS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X)
+ $(CC) $(CFLAGS) pg_restore.o $(KEYWRDOBJS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
pg_dumpall: pg_dumpall.o dumputils.o $(KEYWRDOBJS) $(libpq_builddir)/libpq.a
- $(CC) $(CFLAGS) pg_dumpall.o dumputils.o $(KEYWRDOBJS) $(WIN32RES) $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X)
+ $(CC) $(CFLAGS) pg_dumpall.o dumputils.o $(KEYWRDOBJS) $(WIN32RES) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
install: all installdirs
$(INSTALL_PROGRAM) pg_dump$(X) '$(DESTDIR)$(bindir)'/pg_dump$(X)
diff --git a/src/bin/pg_resetxlog/Makefile b/src/bin/pg_resetxlog/Makefile
index 57efc8d6e64..868c62fb6f5 100644
--- a/src/bin/pg_resetxlog/Makefile
+++ b/src/bin/pg_resetxlog/Makefile
@@ -4,7 +4,7 @@
#
# Copyright (c) 1998-2010, PostgreSQL Global Development Group
#
-# $PostgreSQL: pgsql/src/bin/pg_resetxlog/Makefile,v 1.23 2010/05/12 11:33:10 momjian Exp $
+# $PostgreSQL: pgsql/src/bin/pg_resetxlog/Makefile,v 1.24 2010/07/05 18:54:38 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -20,7 +20,7 @@ OBJS= pg_resetxlog.o pg_crc.o $(WIN32RES)
all: submake-libpgport pg_resetxlog
pg_resetxlog: $(OBJS)
- $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LIBS) -o $@$(X)
+ $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
pg_crc.c: $(top_srcdir)/src/backend/utils/hash/pg_crc.c
rm -f $@ && $(LN_S) $< .
diff --git a/src/bin/psql/Makefile b/src/bin/psql/Makefile
index 80e2daba131..8227b43407a 100644
--- a/src/bin/psql/Makefile
+++ b/src/bin/psql/Makefile
@@ -5,7 +5,7 @@
# Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California
#
-# $PostgreSQL: pgsql/src/bin/psql/Makefile,v 1.69 2010/05/12 11:33:10 momjian Exp $
+# $PostgreSQL: pgsql/src/bin/psql/Makefile,v 1.70 2010/07/05 18:54:38 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -32,7 +32,7 @@ FLEXFLAGS = -Cfe
all: submake-libpq submake-libpgport psql
psql: $(OBJS) $(libpq_builddir)/libpq.a
- $(CC) $(CFLAGS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X)
+ $(CC) $(CFLAGS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
help.o: sql_help.h
diff --git a/src/bin/scripts/Makefile b/src/bin/scripts/Makefile
index 5cd61ad7c3d..cc40f0fde34 100644
--- a/src/bin/scripts/Makefile
+++ b/src/bin/scripts/Makefile
@@ -5,7 +5,7 @@
# Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California
#
-# $PostgreSQL: pgsql/src/bin/scripts/Makefile,v 1.45 2010/05/12 11:33:10 momjian Exp $
+# $PostgreSQL: pgsql/src/bin/scripts/Makefile,v 1.46 2010/07/05 18:54:38 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -23,7 +23,7 @@ override CPPFLAGS := -I$(top_srcdir)/src/bin/pg_dump -I$(top_srcdir)/src/bin/psq
all: submake-libpq $(PROGRAMS)
%: %.o $(WIN32RES)
- $(CC) $(CFLAGS) $^ $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X)
+ $(CC) $(CFLAGS) $^ $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
createdb: createdb.o common.o dumputils.o kwlookup.o keywords.o
createlang: createlang.o common.o print.o mbprint.o
diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile
index 3c0a4c732f0..0690c7c952d 100644
--- a/src/interfaces/ecpg/preproc/Makefile
+++ b/src/interfaces/ecpg/preproc/Makefile
@@ -4,7 +4,7 @@
#
# Copyright (c) 1998-2010, PostgreSQL Global Development Group
#
-# $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/Makefile,v 1.149 2010/05/12 11:33:10 momjian Exp $
+# $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/Makefile,v 1.150 2010/07/05 18:54:38 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -33,7 +33,7 @@ OBJS= preproc.o type.o ecpg.o output.o parser.o \
all: submake-libpgport ecpg
ecpg: $(OBJS)
- $(CC) $(CFLAGS) $(LDFLAGS) $^ $(LIBS) $(PTHREAD_LIBS) -o $@$(X)
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) $^ $(LIBS) $(PTHREAD_LIBS) -o $@$(X)
# pgc is compiled as part of preproc
preproc.o: pgc.c
diff --git a/src/interfaces/ecpg/test/Makefile b/src/interfaces/ecpg/test/Makefile
index 05e7be7f667..404b604a0f6 100644
--- a/src/interfaces/ecpg/test/Makefile
+++ b/src/interfaces/ecpg/test/Makefile
@@ -1,4 +1,4 @@
-# $PostgreSQL: pgsql/src/interfaces/ecpg/test/Makefile,v 1.78 2009/12/19 02:38:51 alvherre Exp $
+# $PostgreSQL: pgsql/src/interfaces/ecpg/test/Makefile,v 1.79 2010/07/05 18:54:38 tgl Exp $
subdir = src/interfaces/ecpg/test
top_builddir = ../../../..
@@ -54,7 +54,7 @@ clean distclean maintainer-clean:
all: pg_regress$(X)
pg_regress$(X): pg_regress_ecpg.o $(top_builddir)/src/test/regress/pg_regress.o
- $(CC) $(CFLAGS) $(LDFLAGS) $^ $(LIBS) -o $@
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) $^ $(LIBS) -o $@
$(top_builddir)/src/test/regress/pg_regress.o:
$(MAKE) -C $(dir $@) $(notdir $@)
diff --git a/src/interfaces/ecpg/test/Makefile.regress b/src/interfaces/ecpg/test/Makefile.regress
index 847cded5b15..e01168bb6fb 100644
--- a/src/interfaces/ecpg/test/Makefile.regress
+++ b/src/interfaces/ecpg/test/Makefile.regress
@@ -8,7 +8,7 @@ override LIBS := -lecpg -lpgtypes $(filter -l%, $(libpq)) $(LIBS) $(PTHREAD_LIBS
ECPG = ../../preproc/ecpg --regression -I$(srcdir)/../../include
%: %.c
- $(CC) $(CPPFLAGS) $(CFLAGS) $^ $(LDFLAGS) $(LIBS) -o $@
+ $(CC) $(CPPFLAGS) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@
%.c: %.pgc ../regression.h
$(ECPG) -o $@ -I$(srcdir) $<
diff --git a/src/makefiles/Makefile.aix b/src/makefiles/Makefile.aix
index 696e5f42687..6f5715db151 100644
--- a/src/makefiles/Makefile.aix
+++ b/src/makefiles/Makefile.aix
@@ -37,5 +37,6 @@ MKLDEXPORT=$(top_srcdir)/src/backend/port/aix/mkldexport.sh
%.exp: %.o
$(MKLDEXPORT) $^ >$@
+# Rule for building a shared library from a single .o file
%$(DLSUFFIX): %.o %.exp
$(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -o $@ $*.o -Wl,-bE:$*.exp $(SHLIB_LINK)
diff --git a/src/makefiles/Makefile.bsdi b/src/makefiles/Makefile.bsdi
index a5a10dbb8dd..e2c9be3dcd0 100644
--- a/src/makefiles/Makefile.bsdi
+++ b/src/makefiles/Makefile.bsdi
@@ -20,5 +20,6 @@ else
CFLAGS_SL =
endif
+# Rule for building a shared library from a single .o file
%.so: %.o
- $(CC) $(CFLAGS) -shared -o $@ $<
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ $<
diff --git a/src/makefiles/Makefile.cygwin b/src/makefiles/Makefile.cygwin
index 5d4f33b90ca..2c0f87cd53d 100644
--- a/src/makefiles/Makefile.cygwin
+++ b/src/makefiles/Makefile.cygwin
@@ -1,4 +1,4 @@
-# $PostgreSQL: pgsql/src/makefiles/Makefile.cygwin,v 1.13 2010/01/20 09:30:07 heikki Exp $
+# $PostgreSQL: pgsql/src/makefiles/Makefile.cygwin,v 1.14 2010/07/05 18:54:38 tgl Exp $
DLLTOOL= dlltool
DLLWRAP= dllwrap
ifdef PGXS
@@ -15,11 +15,6 @@ AROPT = crs
DLSUFFIX = .dll
CFLAGS_SL =
-%.dll: %.o
- $(DLLTOOL) --export-all --output-def $*.def $<
- $(DLLWRAP) -o $@ --def $*.def $< $(SHLIB_LINK)
- rm -f $*.def
-
ifneq (,$(findstring backend,$(subdir)))
ifeq (,$(findstring conversion_procs,$(subdir)))
ifeq (,$(findstring snowball,$(subdir)))
@@ -42,3 +37,9 @@ endif
ifneq (,$(findstring src/pl/plpython,$(subdir)))
override CPPFLAGS+= -DUSE_DL_IMPORT
endif
+
+# Rule for building a shared library from a single .o file
+%.dll: %.o
+ $(DLLTOOL) --export-all --output-def $*.def $<
+ $(DLLWRAP) -o $@ --def $*.def $< $(SHLIB_LINK)
+ rm -f $*.def
diff --git a/src/makefiles/Makefile.darwin b/src/makefiles/Makefile.darwin
index debad62e8a3..2f6743ab14e 100644
--- a/src/makefiles/Makefile.darwin
+++ b/src/makefiles/Makefile.darwin
@@ -1,16 +1,13 @@
AROPT = crs
-AWK= awk
DLSUFFIX = .so
-CFLAGS_SL =
ifdef PGXS
-BE_DLLLIBS= -bundle_loader $(bindir)/postgres
+ BE_DLLLIBS = -bundle_loader $(bindir)/postgres
else
-BE_DLLLIBS= -bundle_loader $(top_builddir)/src/backend/postgres
+ BE_DLLLIBS = -bundle_loader $(top_builddir)/src/backend/postgres
endif
-# Rule for building shared libs (currently used only for regression test
-# shlib ... should go away, since this is not really enough knowledge)
+# Rule for building a shared library from a single .o file
%.so: %.o
- $(CC) $(CFLAGS) -bundle -o $@ $< $(BE_DLLLIBS)
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -bundle -o $@ $< $(BE_DLLLIBS)
diff --git a/src/makefiles/Makefile.dgux b/src/makefiles/Makefile.dgux
index f9519632a20..0c34d4a3901 100644
--- a/src/makefiles/Makefile.dgux
+++ b/src/makefiles/Makefile.dgux
@@ -2,7 +2,8 @@ AROPT = crs
DLSUFFIX = .so
CFLAGS_SL = -fpic
+# Rule for building a shared library from a single .o file
%.so: %.o
- $(CC) -shared -o $@ $<
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ $<
sqlmansect = 5
diff --git a/src/makefiles/Makefile.freebsd b/src/makefiles/Makefile.freebsd
index 57afc185249..839864c7f8e 100644
--- a/src/makefiles/Makefile.freebsd
+++ b/src/makefiles/Makefile.freebsd
@@ -14,9 +14,10 @@ allow_nonpic_in_shlib = yes
endif
+# Rule for building a shared library from a single .o file
%.so: %.o
ifdef ELF_SYSTEM
- $(CC) $(CFLAGS) -shared -o $@ $<
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ $<
else
$(LD) $(LDREL) $(LDOUT) $<.obj -x $<
@echo building shared object $@
diff --git a/src/makefiles/Makefile.hpux b/src/makefiles/Makefile.hpux
index f91dfae391c..1917d61b436 100644
--- a/src/makefiles/Makefile.hpux
+++ b/src/makefiles/Makefile.hpux
@@ -22,7 +22,7 @@ endif
ifeq ($(with_gnu_ld), yes)
# XXX what to put here?
else
- LDFLAGS += -Wl,-z
+ LDFLAGS_EX += -Wl,-z
endif
# set up appropriate options for shared library builds
@@ -43,18 +43,17 @@ else
CFLAGS_SL = +Z
endif
-# Rule for building shared libs (currently used only for regression test
-# shlib ... should go away, since this is not really enough knowledge)
+# Rule for building a shared library from a single .o file
%$(DLSUFFIX): %.o
ifeq ($(GCC), yes)
ifeq ($(with_gnu_ld), yes)
- $(CC) $(LDFLAGS) -shared -o $@ $< `$(CC) $(LDFLAGS) -print-libgcc-file-name`
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ $< `$(CC) $(LDFLAGS) -print-libgcc-file-name`
else
$(LD) -b -o $@ $< `$(CC) $(LDFLAGS) -print-libgcc-file-name`
endif
else
ifeq ($(with_gnu_ld), yes)
- $(CC) $(LDFLAGS) -shared -o $@ $<
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ $<
else
$(LD) -b -o $@ $<
endif
diff --git a/src/makefiles/Makefile.irix b/src/makefiles/Makefile.irix
index 145653860e1..8141a96b1a8 100644
--- a/src/makefiles/Makefile.irix
+++ b/src/makefiles/Makefile.irix
@@ -5,14 +5,15 @@ DLSUFFIX = .so
# PIC is default
CFLAGS_SL =
-%.so: %.o
- $(CC) $(CFLAGS) -shared -o $@ $<
-
override CPPFLAGS += -U_NO_XOPEN4
ifneq ($(GCC), yes)
-CFLAGS += -woff 1164,1171,1185,1195,1552
+ CFLAGS += -woff 1164,1171,1185,1195,1552
endif
LDFLAGS += -Wl,-woff,15 -Wl,-woff,84
+# Rule for building a shared library from a single .o file
+%.so: %.o
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ $<
+
sqlmansect = 5sql
diff --git a/src/makefiles/Makefile.linux b/src/makefiles/Makefile.linux
index e266e8fdd5f..cc5cbff2b36 100644
--- a/src/makefiles/Makefile.linux
+++ b/src/makefiles/Makefile.linux
@@ -12,5 +12,6 @@ else
CFLAGS_SL = -fpic
endif
+# Rule for building a shared library from a single .o file
%.so: %.o
- $(CC) $(CFLAGS) -shared -o $@ $<
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ $<
diff --git a/src/makefiles/Makefile.netbsd b/src/makefiles/Makefile.netbsd
index 366f20cdddc..31a52601aff 100644
--- a/src/makefiles/Makefile.netbsd
+++ b/src/makefiles/Makefile.netbsd
@@ -16,9 +16,10 @@ CFLAGS_SL = -fpic -DPIC
endif
+# Rule for building a shared library from a single .o file
%.so: %.o
ifdef ELF_SYSTEM
- $(CC) $(CFLAGS) -shared -o $@ $<
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ $<
else
$(LD) $(LDREL) $(LDOUT) $<.obj -x $<
@echo building shared object $@
diff --git a/src/makefiles/Makefile.openbsd b/src/makefiles/Makefile.openbsd
index 4abc80ccf18..7bf54933090 100644
--- a/src/makefiles/Makefile.openbsd
+++ b/src/makefiles/Makefile.openbsd
@@ -14,9 +14,10 @@ CFLAGS_SL = -fpic -DPIC
endif
+# Rule for building a shared library from a single .o file
%.so: %.o
ifdef ELF_SYSTEM
- $(CC) $(CFLAGS) -shared -o $@ $<
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ $<
else
$(LD) $(LDREL) $(LDOUT) $<.obj -x $<
@echo building shared object $@
diff --git a/src/makefiles/Makefile.osf b/src/makefiles/Makefile.osf
index 957f27a54e8..31822fd79d3 100644
--- a/src/makefiles/Makefile.osf
+++ b/src/makefiles/Makefile.osf
@@ -3,6 +3,7 @@ DLSUFFIX = .so
CFLAGS_SL =
rpath = -rpath '$(rpathdir)'
+# Rule for building a shared library from a single .o file
%.so: %.o
$(LD) -shared -expect_unresolved '*' -o $@ $<
diff --git a/src/makefiles/Makefile.sco b/src/makefiles/Makefile.sco
index 499dd53a7e6..993861570ac 100644
--- a/src/makefiles/Makefile.sco
+++ b/src/makefiles/Makefile.sco
@@ -8,5 +8,6 @@ else
CFLAGS_SL = -K PIC
endif
+# Rule for building a shared library from a single .o file
%.so: %.o
$(LD) -G -Bdynamic -o $@ $<
diff --git a/src/makefiles/Makefile.solaris b/src/makefiles/Makefile.solaris
index bb56830fe5a..7681441f803 100644
--- a/src/makefiles/Makefile.solaris
+++ b/src/makefiles/Makefile.solaris
@@ -1,4 +1,4 @@
-# $PostgreSQL: pgsql/src/makefiles/Makefile.solaris,v 1.14 2008/09/01 08:50:10 petere Exp $
+# $PostgreSQL: pgsql/src/makefiles/Makefile.solaris,v 1.15 2010/07/05 18:54:38 tgl Exp $
AROPT = crs
@@ -16,11 +16,12 @@ else
CFLAGS_SL = -KPIC
endif
+# Rule for building a shared library from a single .o file
%.so: %.o
ifeq ($(GCC), yes)
- $(CC) $(CFLAGS) -shared -o $@ $<
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ $<
else
- $(CC) $(CFLAGS) -G -o $@ $<
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -G -o $@ $<
endif
sqlmansect = 5sql
diff --git a/src/makefiles/Makefile.sunos4 b/src/makefiles/Makefile.sunos4
index 129edbe08ab..d19e165ea53 100644
--- a/src/makefiles/Makefile.sunos4
+++ b/src/makefiles/Makefile.sunos4
@@ -7,5 +7,6 @@ else
CFLAGS_SL = -PIC
endif
+# Rule for building a shared library from a single .o file
%.so: %.o
$(LD) -assert pure-text -Bdynamic -o $@ $<
diff --git a/src/makefiles/Makefile.svr4 b/src/makefiles/Makefile.svr4
index 7a01c5c944e..44a6f1c34ad 100644
--- a/src/makefiles/Makefile.svr4
+++ b/src/makefiles/Makefile.svr4
@@ -8,6 +8,7 @@ LDFLAGS += -LD-Blargedynsym
DLSUFFIX = .so
CFLAGS_SL =
+# Rule for building a shared library from a single .o file
%.so: %.o
$(LD) -G -Bdynamic -o $@ $<
diff --git a/src/makefiles/Makefile.ultrix4 b/src/makefiles/Makefile.ultrix4
index 1c03737756f..6685b8c0af6 100644
--- a/src/makefiles/Makefile.ultrix4
+++ b/src/makefiles/Makefile.ultrix4
@@ -6,5 +6,6 @@ DLSUFFIX = .so
# "-G 0" works for both DEC cc and GNU cc.
CFLAGS_SL = -G 0
+# Rule for building a shared library from a single .c file
%.so: %.c
- $(CC) -c -G 0 $(CPPFLAGS) $(CFLAGS) -o $@ $<
+ $(CC) -c -G 0 $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -o $@ $<
diff --git a/src/makefiles/Makefile.univel b/src/makefiles/Makefile.univel
index 41e64616ef2..eb0d324ae64 100644
--- a/src/makefiles/Makefile.univel
+++ b/src/makefiles/Makefile.univel
@@ -3,6 +3,7 @@ export_dynamic = -Wl,-Bexport
DLSUFFIX = .so
CFLAGS_SL = -K PIC
+# Rule for building a shared library from a single .o file
%.so: %.o
$(LD) -G -Bdynamic -o $@ $<
diff --git a/src/makefiles/Makefile.unixware b/src/makefiles/Makefile.unixware
index 3fa10f97d93..a52717b2688 100644
--- a/src/makefiles/Makefile.unixware
+++ b/src/makefiles/Makefile.unixware
@@ -13,6 +13,9 @@ else
endif
endif
+# Unixware needs threads for everything that uses libpq
+CFLAGS += $(PTHREAD_CFLAGS)
+
DLSUFFIX = .so
ifeq ($(GCC), yes)
CFLAGS_SL = -fpic
@@ -25,10 +28,8 @@ else
SO_FLAGS = -G
endif
+# Rule for building a shared library from a single .o file
%.so: %.o
- $(CC) $(SO_FLAGS) -o $@ $<
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) $(SO_FLAGS) -o $@ $<
sqlmansect = 5sql
-
-# Unixware needs threads for everything that uses libpq
-CFLAGS += $(PTHREAD_CFLAGS)
diff --git a/src/makefiles/Makefile.win32 b/src/makefiles/Makefile.win32
index 07438d94aa7..09aa523ba6a 100644
--- a/src/makefiles/Makefile.win32
+++ b/src/makefiles/Makefile.win32
@@ -1,4 +1,4 @@
-# $PostgreSQL: pgsql/src/makefiles/Makefile.win32,v 1.15 2010/01/20 09:30:07 heikki Exp $
+# $PostgreSQL: pgsql/src/makefiles/Makefile.win32,v 1.16 2010/07/05 18:54:38 tgl Exp $
# Use replacement include files for those missing on Win32
override CPPFLAGS+="-I$(top_srcdir)/src/include/port/win32"
@@ -13,11 +13,6 @@ AROPT = crs
DLSUFFIX = .dll
CFLAGS_SL =
-%.dll: %.o
- $(DLLTOOL) --export-all --output-def $*.def $<
- $(DLLWRAP) -o $@ --def $*.def $< $(SHLIB_LINK)
- rm -f $*.def
-
ifneq (,$(findstring backend,$(subdir)))
ifeq (,$(findstring conversion_procs,$(subdir)))
ifeq (,$(findstring snowball,$(subdir)))
@@ -70,3 +65,9 @@ win32ver.rc: $(top_srcdir)/src/port/win32ver.rc
win32ver.o: win32ver.rc
$(WINDRES) -i $< -o $@ --include-dir=$(top_builddir)/src/include --include-dir=$(srcdir)
+
+# Rule for building a shared library from a single .o file
+%.dll: %.o
+ $(DLLTOOL) --export-all --output-def $*.def $<
+ $(DLLWRAP) -o $@ --def $*.def $< $(SHLIB_LINK)
+ rm -f $*.def
diff --git a/src/makefiles/pgxs.mk b/src/makefiles/pgxs.mk
index 4f760bc8662..0e629c0a5d9 100644
--- a/src/makefiles/pgxs.mk
+++ b/src/makefiles/pgxs.mk
@@ -1,6 +1,6 @@
# PGXS: PostgreSQL extensions makefile
-# $PostgreSQL: pgsql/src/makefiles/pgxs.mk,v 1.19 2010/01/05 03:56:52 tgl Exp $
+# $PostgreSQL: pgsql/src/makefiles/pgxs.mk,v 1.20 2010/07/05 18:54:38 tgl Exp $
# This file contains generic rules to build many kinds of simple
# extension modules. You only need to set a few variables and include
@@ -68,7 +68,6 @@ override CPPFLAGS := -I. -I$(srcdir) $(CPPFLAGS)
ifdef MODULES
override CFLAGS += $(CFLAGS_SL)
-SHLIB_LINK += $(BE_DLLLIBS)
endif
ifdef MODULEDIR
@@ -287,5 +286,5 @@ endif
ifdef PROGRAM
$(PROGRAM): $(OBJS)
- $(CC) $(CFLAGS) $(OBJS) $(PG_LIBS) $(LDFLAGS) $(LIBS) -o $@
+ $(CC) $(CFLAGS) $(OBJS) $(PG_LIBS) $(LIBS) $(LDFLAGS) $(LDFLAGS_EX) -o $@
endif
diff --git a/src/template/cygwin b/src/template/cygwin
index 276fa8081d4..b2fe3640c60 100644
--- a/src/template/cygwin
+++ b/src/template/cygwin
@@ -1,9 +1,8 @@
-# $PostgreSQL: pgsql/src/template/cygwin,v 1.7 2006/03/11 04:38:40 momjian Exp $
+# $PostgreSQL: pgsql/src/template/cygwin,v 1.8 2010/07/05 18:54:38 tgl Exp $
SRCH_LIB="/usr/local/lib"
-# This is required to link pg_dump because it finds pg_toupper() in
-# libpq and pgport
-LDFLAGS="-Wl,--allow-multiple-definition -Wl,--enable-auto-import"
+# --allow-multiple-definition is required to link pg_dump because it finds
+# pg_toupper() in both libpq and pgport
# --enable-auto-import gets rid of a diagnostics linker message
-LDFLAGS_SL="-Wl,--enable-auto-import"
+LDFLAGS="-Wl,--allow-multiple-definition -Wl,--enable-auto-import"
diff --git a/src/template/win32 b/src/template/win32
index e9ab1fe7a54..71f5fa1c1bf 100644
--- a/src/template/win32
+++ b/src/template/win32
@@ -1,4 +1,3 @@
-# This is required to link pg_dump because it finds pg_toupper() in
-# libpq and pgport
+# --allow-multiple-definition is required to link pg_dump because it finds
+# pg_toupper() in both libpq and pgport
LDFLAGS="-Wl,--allow-multiple-definition"
-
diff --git a/src/test/regress/GNUmakefile b/src/test/regress/GNUmakefile
index 91e24b50f2f..5f8f04f19c2 100644
--- a/src/test/regress/GNUmakefile
+++ b/src/test/regress/GNUmakefile
@@ -6,7 +6,7 @@
# Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California
#
-# $PostgreSQL: pgsql/src/test/regress/GNUmakefile,v 1.82 2010/01/02 16:58:13 momjian Exp $
+# $PostgreSQL: pgsql/src/test/regress/GNUmakefile,v 1.83 2010/07/05 18:54:38 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -53,7 +53,7 @@ EXTRADEFS = '-DHOST_TUPLE="$(host_tuple)"' \
all: submake-libpgport pg_regress$(X)
pg_regress$(X): pg_regress.o pg_regress_main.o
- $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LIBS) -o $@
+ $(CC) $(CFLAGS) $^ $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@
# dependencies ensure that path changes propagate
pg_regress.o: pg_regress.c $(top_builddir)/src/port/pg_config_paths.h
diff --git a/src/test/thread/Makefile b/src/test/thread/Makefile
index fda66bdbfde..b932d10a26c 100644
--- a/src/test/thread/Makefile
+++ b/src/test/thread/Makefile
@@ -4,7 +4,7 @@
#
# Copyright (c) 2003-2010, PostgreSQL Global Development Group
#
-# $PostgreSQL: pgsql/src/test/thread/Makefile,v 1.6 2010/01/02 16:58:16 momjian Exp $
+# $PostgreSQL: pgsql/src/test/thread/Makefile,v 1.7 2010/07/05 18:54:38 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -18,7 +18,7 @@ all: thread_test
thread_test: thread_test.o
# no need for $LIBS, might not be compiled yet
- $(CC) $(CFLAGS) $(LDFLAGS) $^ $(PTHREAD_LIBS) -o $@
+ $(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_EX) $^ $(PTHREAD_LIBS) -o $@
clean distclean maintainer-clean:
rm -f thread_test$(X) thread_test.o
diff --git a/src/timezone/Makefile b/src/timezone/Makefile
index fda2fa703a6..ddf07ad3daa 100644
--- a/src/timezone/Makefile
+++ b/src/timezone/Makefile
@@ -4,7 +4,7 @@
# Makefile for the timezone library
# IDENTIFICATION
-# $PostgreSQL: pgsql/src/timezone/Makefile,v 1.32 2009/08/26 22:24:43 petere Exp $
+# $PostgreSQL: pgsql/src/timezone/Makefile,v 1.33 2010/07/05 18:54:38 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -47,7 +47,7 @@ ZIC= ./zic
endif
zic: $(ZICOBJS)
- $(CC) $(CFLAGS) $(ZICOBJS) $(LDFLAGS) $(LIBS) -o $@$(X)
+ $(CC) $(CFLAGS) $(ZICOBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
install: all installdirs
ifeq (,$(with_system_tzdata))
diff --git a/src/tools/findoidjoins/Makefile b/src/tools/findoidjoins/Makefile
index a11bff06d9a..5f7bd0c77f7 100644
--- a/src/tools/findoidjoins/Makefile
+++ b/src/tools/findoidjoins/Makefile
@@ -4,7 +4,7 @@
#
# Copyright (c) 2003-2010, PostgreSQL Global Development Group
#
-# $PostgreSQL: pgsql/src/tools/findoidjoins/Makefile,v 1.7 2010/01/02 16:58:16 momjian Exp $
+# $PostgreSQL: pgsql/src/tools/findoidjoins/Makefile,v 1.8 2010/07/05 18:54:38 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -19,7 +19,7 @@ OBJS= findoidjoins.o
all: submake-libpq submake-libpgport findoidjoins
findoidjoins: findoidjoins.o $(libpq_builddir)/libpq.a
- $(CC) $(CFLAGS) findoidjoins.o $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X)
+ $(CC) $(CFLAGS) findoidjoins.o $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
clean distclean maintainer-clean:
rm -f findoidjoins$(X) $(OBJS)
diff --git a/src/tools/fsync/Makefile b/src/tools/fsync/Makefile
index 299bc3fd808..2ddbbe9f47e 100644
--- a/src/tools/fsync/Makefile
+++ b/src/tools/fsync/Makefile
@@ -4,7 +4,7 @@
#
# Copyright (c) 2003-2010, PostgreSQL Global Development Group
#
-# $PostgreSQL: pgsql/src/tools/fsync/Makefile,v 1.8 2010/01/02 16:58:16 momjian Exp $
+# $PostgreSQL: pgsql/src/tools/fsync/Makefile,v 1.9 2010/07/05 18:54:38 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -19,7 +19,7 @@ OBJS= test_fsync.o
all: submake-libpq submake-libpgport test_fsync
test_fsync: test_fsync.o $(libpq_builddir)/libpq.a
- $(CC) $(CFLAGS) test_fsync.o $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X)
+ $(CC) $(CFLAGS) test_fsync.o $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
clean distclean maintainer-clean:
rm -f test_fsync$(X) $(OBJS)
diff --git a/src/tools/ifaddrs/Makefile b/src/tools/ifaddrs/Makefile
index de8cf459b92..72a6aa7de87 100644
--- a/src/tools/ifaddrs/Makefile
+++ b/src/tools/ifaddrs/Makefile
@@ -4,7 +4,7 @@
#
# Copyright (c) 2003-2010, PostgreSQL Global Development Group
#
-# $PostgreSQL: pgsql/src/tools/ifaddrs/Makefile,v 1.2 2010/01/02 16:58:16 momjian Exp $
+# $PostgreSQL: pgsql/src/tools/ifaddrs/Makefile,v 1.3 2010/07/05 18:54:38 tgl Exp $
#
#-------------------------------------------------------------------------
@@ -21,7 +21,7 @@ OBJS = test_ifaddrs.o
all: test_ifaddrs
test_ifaddrs: test_ifaddrs.o $(libpq_backend_dir)/ip.o
- $(CC) $(CFLAGS) test_ifaddrs.o $(libpq_backend_dir)/ip.o $(LDFLAGS) $(LIBS) -o $@$(X)
+ $(CC) $(CFLAGS) test_ifaddrs.o $(libpq_backend_dir)/ip.o $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
clean distclean maintainer-clean:
rm -f test_ifaddrs$(X) $(OBJS)