From: Tom Lane Date: Mon, 5 Jul 2010 18:54:38 +0000 (+0000) Subject: Split the LDFLAGS make variable into two parts: LDFLAGS is now used for X-Git-Tag: REL9_0_BETA3~28 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=291a9577454a63f99b5537e48a3dceae6d35ea8d;p=postgresql Split the LDFLAGS make variable into two parts: LDFLAGS is now used for linking both executables and shared libraries, and we add on LDFLAGS_EX when linking executables or LDFLAGS_SL when linking shared libraries. This provides a significantly cleaner way of dealing with link-time switches than the former behavior. Also, make sure that the various platform-specific %.so: %.o rules incorporate LDFLAGS and LDFLAGS_SL; most of them missed that before. (I did not add these variables for the platforms that invoke $(LD) directly, however. It's not clear if we can do that safely, since for the most part we assume these variables use CC command-line syntax.) Per gripe from Aaron Swenson and subsequent investigation. --- diff --git a/configure b/configure index f6b891e46b..91261a47b8 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 if you have headers in a nonstandard directory 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 a84e37b819..c9c4f21473 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 2f3ec3beab..01f57a70e3 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -1,4 +1,4 @@ - + <![%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 5c63942542..66cf79b2f4 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> @@ -232,13 +232,24 @@ </listitem> </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 - The option was new in + The option was added in 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 . To make your @@ -290,8 +301,9 @@ , , , , , , - and are new in PostgreSQL 8.1. - The option is new in PostgreSQL 8.4. + and were added in PostgreSQL 8.1. + The option was added in PostgreSQL 8.4. + The option was added in PostgreSQL 9.0. diff --git a/src/Makefile.global.in b/src/Makefile.global.in index bfbcf8851c..47b2f5e491 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 add201d007..6198493561 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 8c9c7f2c6e..a11b2b503c 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 4798042656..2009919ad9 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 4f8771569f..2ffcb54153 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 4355874965..b9ca579046 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 6e764b18aa..e8ddbed027 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 $ * *------------------------------------------------------------------------- */ @@ -326,6 +326,22 @@ show_ldflags(bool all) #endif } +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) { @@ -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 c12bf33557..ab551fe691 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 32a4fc92cb..6bd63995e6 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 2eeb099b73..0a26c702b6 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 57efc8d6e6..868c62fb6f 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 80e2daba13..8227b43407 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 5cd61ad7c3..cc40f0fde3 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 3c0a4c732f..0690c7c952 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 05e7be7f66..404b604a0f 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 847cded5b1..e01168bb6f 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 696e5f4268..6f5715db15 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 a5a10dbb8d..e2c9be3dcd 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 5d4f33b90c..2c0f87cd53 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 debad62e8a..2f6743ab14 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 f9519632a2..0c34d4a390 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 57afc18524..839864c7f8 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 f91dfae391..1917d61b43 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 145653860e..8141a96b1a 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 e266e8fdd5..cc5cbff2b3 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 366f20cddd..31a52601af 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 4abc80ccf1..7bf5493309 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 957f27a54e..31822fd79d 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 499dd53a7e..993861570a 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 bb56830fe5..7681441f80 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 129edbe08a..d19e165ea5 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 7a01c5c944..44a6f1c34a 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 1c03737756..6685b8c0af 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 41e64616ef..eb0d324ae6 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 3fa10f97d9..a52717b268 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 07438d94aa..09aa523ba6 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 4f760bc866..0e629c0a5d 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 276fa8081d..b2fe3640c6 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 e9ab1fe7a5..71f5fa1c1b 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 91e24b50f2..5f8f04f19c 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 fda66bdbfd..b932d10a26 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 fda2fa703a..ddf07ad3da 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 a11bff06d9..5f7bd0c77f 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 299bc3fd80..2ddbbe9f47 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 de8cf459b9..72a6aa7de8 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)