diff options
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) |