Prevent accidental linking of system-supplied copies of libpq.so etc.

Back-patch commit dddfc4cb2, which broke LDFLAGS and related Makefile
variables into two parts, one for within-build-tree library references and
one for external libraries, to ensure that the order of -L flags has all
of the former before all of the latter.  This turns out to fix a problem
recently noted on buildfarm member peripatus, that we attempted to
incorporate code from libpgport.a into a shared library.  That will fail on
platforms that are sticky about putting non-PIC code into shared libraries.
(It's quite surprising we hadn't seen such failures before, since the code
in question has been like that for a long time.)

I think that peripatus' problem could have been fixed with just a subset
of this patch; but since the previous issue of accidentally linking to the
wrong copy of a Postgres shlib seems likely to bite people in the field,
let's just back-patch the whole change.  Now that commit dddfc4cb2 has
survived some beta testing, I'm less afraid to back-patch it than I was
at the time.

This also fixes undesired inclusion of "-DFRONTEND" in pg_config's CPPFLAGS
output (in 9.6 and up) and undesired inclusion of "-L../../src/common" in
its LDFLAGS output (in all supported branches).

Back-patch to v10 and older branches; this is already in v11.

Discussion: https://postgr.es/m/20180704234304.bq2dxispefl65odz@ler-imac.local
This commit is contained in:
Tom Lane 2018-07-09 17:23:31 -04:00
parent 619dea4678
commit ccc286da1d
29 changed files with 81 additions and 56 deletions

View File

@ -3,7 +3,7 @@
MODULE_big = dblink MODULE_big = dblink
OBJS = dblink.o $(WIN32RES) OBJS = dblink.o $(WIN32RES)
PG_CPPFLAGS = -I$(libpq_srcdir) PG_CPPFLAGS = -I$(libpq_srcdir)
SHLIB_LINK = $(libpq) SHLIB_LINK_INTERNAL = $(libpq)
EXTENSION = dblink EXTENSION = dblink
DATA = dblink--1.2.sql dblink--1.1--1.2.sql dblink--1.0--1.1.sql \ DATA = dblink--1.2.sql dblink--1.1--1.2.sql dblink--1.0--1.1.sql \

View File

@ -27,16 +27,18 @@ endif
# dependency. This does preclude pgxs builds. # dependency. This does preclude pgxs builds.
ifeq ($(PORTNAME), aix) ifeq ($(PORTNAME), aix)
rpathdir = $(pkglibdir):$(perl_archlibexp)/CORE rpathdir = $(pkglibdir):$(perl_archlibexp)/CORE
SHLIB_LINK += ../hstore/libhstore.exp $(perl_embed_ldflags) SHLIB_LINK_INTERNAL += ../hstore/libhstore.exp
SHLIB_LINK += $(perl_embed_ldflags)
endif endif
ifeq ($(PORTNAME), win32) ifeq ($(PORTNAME), win32)
# these settings are the same as for plperl # these settings are the same as for plperl
override CPPFLAGS += -DPLPERL_HAVE_UID_GID -Wno-comment override CPPFLAGS += -DPLPERL_HAVE_UID_GID -Wno-comment
SHLIB_LINK += ../hstore/libhstore.a $(sort $(wildcard ../../src/pl/plperl/libperl*.a)) SHLIB_LINK_INTERNAL += ../hstore/libhstore.a $(sort $(wildcard ../../src/pl/plperl/libperl*.a))
endif endif
ifeq ($(PORTNAME), cygwin) ifeq ($(PORTNAME), cygwin)
SHLIB_LINK += -L../hstore -l hstore $(perl_embed_ldflags) SHLIB_LINK_INTERNAL += -L../hstore -l hstore
SHLIB_LINK += $(perl_embed_ldflags)
endif endif
# As with plperl we need to make sure that the CORE directory is included # As with plperl we need to make sure that the CORE directory is included

View File

@ -27,15 +27,17 @@ endif
# dependency. This does preclude pgxs builds. # dependency. This does preclude pgxs builds.
ifeq ($(PORTNAME), aix) ifeq ($(PORTNAME), aix)
rpathdir = $(pkglibdir):$(python_libdir) rpathdir = $(pkglibdir):$(python_libdir)
SHLIB_LINK += ../hstore/libhstore.exp $(python_libspec) $(python_additional_libs) $(sort $(wildcard ../../src/pl/plpython/libplpython*.exp)) SHLIB_LINK_INTERNAL += ../hstore/libhstore.exp $(sort $(wildcard ../../src/pl/plpython/libplpython*.exp))
SHLIB_LINK += $(python_libspec) $(python_additional_libs)
endif endif
ifeq ($(PORTNAME), win32) ifeq ($(PORTNAME), win32)
SHLIB_LINK += ../hstore/libhstore.a $(sort $(wildcard ../../src/pl/plpython/libpython*.a)) $(sort $(wildcard ../../src/pl/plpython/libplpython*.a)) SHLIB_LINK_INTERNAL += ../hstore/libhstore.a $(sort $(wildcard ../../src/pl/plpython/libplpython*.a)) $(sort $(wildcard ../../src/pl/plpython/libpython*.a))
endif endif
ifeq ($(PORTNAME), cygwin) ifeq ($(PORTNAME), cygwin)
SHLIB_LINK += -L../hstore -lhstore -L../../src/pl/plpython \ SHLIB_LINK_INTERNAL += -L../hstore -lhstore -L../../src/pl/plpython \
-lplpython$(python_majorversion) $(python_libspec) -lplpython$(python_majorversion)
SHLIB_LINK += $(python_libspec)
endif endif
REGRESS_OPTS += --load-extension=hstore REGRESS_OPTS += --load-extension=hstore

View File

@ -27,15 +27,17 @@ endif
# dependency. This does preclude pgxs builds. # dependency. This does preclude pgxs builds.
ifeq ($(PORTNAME), aix) ifeq ($(PORTNAME), aix)
rpathdir = $(pkglibdir):$(python_libdir) rpathdir = $(pkglibdir):$(python_libdir)
SHLIB_LINK += $(python_libspec) $(python_additional_libs) $(sort $(wildcard ../../src/pl/plpython/libplpython*.exp)) SHLIB_LINK_INTERNAL += $(sort $(wildcard ../../src/pl/plpython/libplpython*.exp))
SHLIB_LINK += $(python_libspec) $(python_additional_libs)
endif endif
ifeq ($(PORTNAME), win32) ifeq ($(PORTNAME), win32)
SHLIB_LINK += $(sort $(wildcard ../../src/pl/plpython/libpython*.a)) $(sort $(wildcard ../../src/pl/plpython/libplpython*.a)) SHLIB_LINK_INTERNAL += $(sort $(wildcard ../../src/pl/plpython/libplpython*.a)) $(sort $(wildcard ../../src/pl/plpython/libpython*.a))
endif endif
ifeq ($(PORTNAME), cygwin) ifeq ($(PORTNAME), cygwin)
SHLIB_LINK += -L../ltree -lltree -L../../src/pl/plpython \ SHLIB_LINK_INTERNAL += -L../ltree -lltree -L../../src/pl/plpython \
-lplpython$(python_majorversion) $(python_libspec) -lplpython$(python_majorversion)
SHLIB_LINK += $(python_libspec)
endif endif
REGRESS_OPTS += --load-extension=ltree REGRESS_OPTS += --load-extension=ltree

View File

@ -7,7 +7,7 @@ PROGRAM = oid2name
OBJS = oid2name.o $(WIN32RES) OBJS = oid2name.o $(WIN32RES)
PG_CPPFLAGS = -I$(libpq_srcdir) PG_CPPFLAGS = -I$(libpq_srcdir)
PG_LIBS = $(libpq_pgport) PG_LIBS_INTERNAL = $(libpq_pgport)
ifdef USE_PGXS ifdef USE_PGXS
PG_CONFIG = pg_config PG_CONFIG = pg_config

View File

@ -5,7 +5,7 @@ OBJS = postgres_fdw.o option.o deparse.o connection.o shippable.o $(WIN32RES)
PGFILEDESC = "postgres_fdw - foreign data wrapper for PostgreSQL" PGFILEDESC = "postgres_fdw - foreign data wrapper for PostgreSQL"
PG_CPPFLAGS = -I$(libpq_srcdir) PG_CPPFLAGS = -I$(libpq_srcdir)
SHLIB_LINK = $(libpq) SHLIB_LINK_INTERNAL = $(libpq)
EXTENSION = postgres_fdw EXTENSION = postgres_fdw
DATA = postgres_fdw--1.0.sql DATA = postgres_fdw--1.0.sql

View File

@ -17,8 +17,6 @@ DOCS = $(addsuffix .example, $(MODULES))
# comment out if you want a quieter refint package for other uses # comment out if you want a quieter refint package for other uses
PG_CPPFLAGS = -DREFINT_VERBOSE PG_CPPFLAGS = -DREFINT_VERBOSE
LDFLAGS_SL += -L$(top_builddir)/src/port -lpgport
ifdef USE_PGXS ifdef USE_PGXS
PG_CONFIG = pg_config PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs) PGXS := $(shell $(PG_CONFIG) --pgxs)

View File

@ -7,7 +7,7 @@ PROGRAM = vacuumlo
OBJS = vacuumlo.o $(WIN32RES) OBJS = vacuumlo.o $(WIN32RES)
PG_CPPFLAGS = -I$(libpq_srcdir) PG_CPPFLAGS = -I$(libpq_srcdir)
PG_LIBS = $(libpq_pgport) PG_LIBS_INTERNAL = $(libpq_pgport)
ifdef USE_PGXS ifdef USE_PGXS
PG_CONFIG = pg_config PG_CONFIG = pg_config

View File

@ -267,17 +267,26 @@ LD = @LD@
with_gnu_ld = @with_gnu_ld@ with_gnu_ld = @with_gnu_ld@
ld_R_works = @ld_R_works@ ld_R_works = @ld_R_works@
# We want -L for libpgport.a and libpgcommon.a to be first in LDFLAGS. We # It's critical that within LDFLAGS, all -L switches pointing to build-tree
# also need LDFLAGS to be a "recursively expanded" variable, else adjustments # directories come before any -L switches pointing to external directories.
# to rpathdir don't work right. So we must NOT do LDFLAGS := something, # Otherwise it's possible for, e.g., a platform-provided copy of libpq.so
# meaning this has to be done first and elsewhere we must only do LDFLAGS += # to get linked in place of the one we've built. Therefore we adopt the
# something. # convention that the first component of LDFLAGS is an extra variable
# LDFLAGS_INTERNAL, and -L and -l switches for PG's own libraries must be
# put into LDFLAGS_INTERNAL, so they will appear ahead of those for external
# libraries.
#
# We need LDFLAGS and LDFLAGS_INTERNAL to be "recursively expanded" variables,
# else adjustments to, e.g., rpathdir don't work right. So we must NOT do
# "LDFLAGS := something" anywhere, ditto for LDFLAGS_INTERNAL.
# These initial assignments must be "=" type, and elsewhere we must only do
# "LDFLAGS += something" or "LDFLAGS_INTERNAL += something".
ifdef PGXS ifdef PGXS
LDFLAGS = -L$(libdir) LDFLAGS_INTERNAL = -L$(libdir)
else else
LDFLAGS = -L$(top_builddir)/src/port -L$(top_builddir)/src/common LDFLAGS_INTERNAL = -L$(top_builddir)/src/port -L$(top_builddir)/src/common
endif endif
LDFLAGS += @LDFLAGS@ LDFLAGS = $(LDFLAGS_INTERNAL) @LDFLAGS@
LDFLAGS_EX = @LDFLAGS_EX@ LDFLAGS_EX = @LDFLAGS_EX@
# LDFLAGS_SL might have already been assigned by calling makefile # LDFLAGS_SL might have already been assigned by calling makefile

View File

@ -20,12 +20,16 @@
# #
# NAME Name of library to build (no suffix nor "lib" prefix) # NAME Name of library to build (no suffix nor "lib" prefix)
# OBJS List of object files to include in library # OBJS List of object files to include in library
# SHLIB_LINK If shared library relies on other libraries, # SHLIB_LINK Stuff to append to library's link command
# additional stuff to put in its link command # (typically, -L and -l switches for external libraries)
# SHLIB_LINK_INTERNAL -L and -l switches for Postgres-supplied libraries
# SHLIB_PREREQS Order-only prerequisites for library build target # SHLIB_PREREQS Order-only prerequisites for library build target
# SHLIB_EXPORTS (optional) Name of file containing list of symbols to # SHLIB_EXPORTS (optional) Name of file containing list of symbols to
# export, in the format "function_name number" # export, in the format "function_name number"
# #
# Don't use SHLIB_LINK for references to files in the build tree, or the
# wrong things will happen --- use SHLIB_LINK_INTERNAL for those!
#
# When building a shared library, the following version information # When building a shared library, the following version information
# must also be set. It should be omitted when building a dynamically # must also be set. It should be omitted when building a dynamically
# loadable module. # loadable module.
@ -70,6 +74,8 @@
COMPILER = $(CC) $(CFLAGS) COMPILER = $(CC) $(CFLAGS)
LINK.static = $(AR) $(AROPT) LINK.static = $(AR) $(AROPT)
LDFLAGS_INTERNAL += $(SHLIB_LINK_INTERNAL)
ifdef SO_MAJOR_VERSION ifdef SO_MAJOR_VERSION

View File

@ -15,7 +15,8 @@ include $(top_builddir)/src/Makefile.global
override CPPFLAGS := -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS) override CPPFLAGS := -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS)
OBJS = libpqwalreceiver.o $(WIN32RES) OBJS = libpqwalreceiver.o $(WIN32RES)
SHLIB_LINK = $(libpq) $(filter -lintl, $(LIBS)) SHLIB_LINK_INTERNAL = $(libpq)
SHLIB_LINK = $(filter -lintl, $(LIBS))
SHLIB_PREREQS = submake-libpq SHLIB_PREREQS = submake-libpq
PGFILEDESC = "libpqwalreceiver - receive WAL during streaming replication" PGFILEDESC = "libpqwalreceiver - receive WAL during streaming replication"
NAME = libpqwalreceiver NAME = libpqwalreceiver

View File

@ -17,19 +17,20 @@ top_builddir = ../../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS)
LDFLAGS_INTERNAL += $(libpq_pgport)
OBJS=receivelog.o streamutil.o $(WIN32RES) OBJS=receivelog.o streamutil.o $(WIN32RES)
all: pg_basebackup pg_receivexlog pg_recvlogical all: pg_basebackup pg_receivexlog pg_recvlogical
pg_basebackup: pg_basebackup.o $(OBJS) | submake-libpq submake-libpgport pg_basebackup: pg_basebackup.o $(OBJS) | submake-libpq submake-libpgport
$(CC) $(CFLAGS) pg_basebackup.o $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) $(CC) $(CFLAGS) pg_basebackup.o $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
pg_receivexlog: pg_receivexlog.o $(OBJS) | submake-libpq submake-libpgport pg_receivexlog: pg_receivexlog.o $(OBJS) | submake-libpq submake-libpgport
$(CC) $(CFLAGS) pg_receivexlog.o $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) $(CC) $(CFLAGS) pg_receivexlog.o $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
pg_recvlogical: pg_recvlogical.o $(OBJS) | submake-libpq submake-libpgport pg_recvlogical: pg_recvlogical.o $(OBJS) | submake-libpq submake-libpgport
$(CC) $(CFLAGS) pg_recvlogical.o $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) $(CC) $(CFLAGS) pg_recvlogical.o $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
install: all installdirs install: all installdirs
$(INSTALL_PROGRAM) pg_basebackup$(X) '$(DESTDIR)$(bindir)/pg_basebackup$(X)' $(INSTALL_PROGRAM) pg_basebackup$(X) '$(DESTDIR)$(bindir)/pg_basebackup$(X)'

View File

@ -17,13 +17,14 @@ top_builddir = ../../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS)
LDFLAGS_INTERNAL += $(libpq_pgport)
OBJS= pg_ctl.o $(WIN32RES) OBJS= pg_ctl.o $(WIN32RES)
all: pg_ctl all: pg_ctl
pg_ctl: $(OBJS) | submake-libpq submake-libpgport pg_ctl: $(OBJS) | submake-libpq submake-libpgport
$(CC) $(CFLAGS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
install: all installdirs install: all installdirs
$(INSTALL_PROGRAM) pg_ctl$(X) '$(DESTDIR)$(bindir)/pg_ctl$(X)' $(INSTALL_PROGRAM) pg_ctl$(X) '$(DESTDIR)$(bindir)/pg_ctl$(X)'

View File

@ -17,7 +17,7 @@ top_builddir = ../../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS)
override LDFLAGS := -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport) $(LDFLAGS) LDFLAGS_INTERNAL += -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport)
OBJS= pg_backup_archiver.o pg_backup_db.o pg_backup_custom.o \ OBJS= pg_backup_archiver.o pg_backup_db.o pg_backup_custom.o \
pg_backup_null.o pg_backup_tar.o pg_backup_directory.o \ pg_backup_null.o pg_backup_tar.o pg_backup_directory.o \

View File

@ -16,7 +16,7 @@ top_builddir = ../../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
override CPPFLAGS := -I$(libpq_srcdir) -DFRONTEND $(CPPFLAGS) override CPPFLAGS := -I$(libpq_srcdir) -DFRONTEND $(CPPFLAGS)
override LDFLAGS := $(libpq_pgport) $(LDFLAGS) LDFLAGS_INTERNAL += $(libpq_pgport)
OBJS = pg_rewind.o parsexlog.o xlogreader.o datapagemap.o timeline.o \ OBJS = pg_rewind.o parsexlog.o xlogreader.o datapagemap.o timeline.o \
fetch.o file_ops.o copy_fetch.o libpq_fetch.o filemap.o logging.o \ fetch.o file_ops.o copy_fetch.o libpq_fetch.o filemap.o logging.o \

View File

@ -12,7 +12,7 @@ OBJS = check.o controldata.o dump.o exec.o file.o function.o info.o \
tablespace.o util.o version.o $(WIN32RES) tablespace.o util.o version.o $(WIN32RES)
override CPPFLAGS := -DDLSUFFIX=\"$(DLSUFFIX)\" -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS) override CPPFLAGS := -DDLSUFFIX=\"$(DLSUFFIX)\" -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS)
override LDFLAGS := -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport) $(LDFLAGS) LDFLAGS_INTERNAL += -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport)
all: pg_upgrade all: pg_upgrade

View File

@ -10,7 +10,7 @@ include $(top_builddir)/src/Makefile.global
OBJS = pgbench.o exprparse.o $(WIN32RES) OBJS = pgbench.o exprparse.o $(WIN32RES)
override CPPFLAGS := -I. -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS) override CPPFLAGS := -I. -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS)
override LDFLAGS := -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport) $(LDFLAGS) LDFLAGS_INTERNAL += -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport)
ifneq ($(PORTNAME), win32) ifneq ($(PORTNAME), win32)
override CFLAGS += $(PTHREAD_CFLAGS) override CFLAGS += $(PTHREAD_CFLAGS)

View File

@ -19,7 +19,7 @@ include $(top_builddir)/src/Makefile.global
REFDOCDIR= $(top_srcdir)/doc/src/sgml/ref REFDOCDIR= $(top_srcdir)/doc/src/sgml/ref
override CPPFLAGS := -I. -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS) override CPPFLAGS := -I. -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS)
override LDFLAGS := -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport) $(LDFLAGS) LDFLAGS_INTERNAL += -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport)
OBJS= command.o common.o help.o input.o stringutils.o mainloop.o copy.o \ OBJS= command.o common.o help.o input.o stringutils.o mainloop.o copy.o \
startup.o prompt.o variables.o large_obj.o describe.o \ startup.o prompt.o variables.o large_obj.o describe.o \

View File

@ -19,7 +19,7 @@ include $(top_builddir)/src/Makefile.global
PROGRAMS = createdb createlang createuser dropdb droplang dropuser clusterdb vacuumdb reindexdb pg_isready PROGRAMS = createdb createlang createuser dropdb droplang dropuser clusterdb vacuumdb reindexdb pg_isready
override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS)
override LDFLAGS := -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport) $(LDFLAGS) LDFLAGS_INTERNAL += -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport)
all: $(PROGRAMS) all: $(PROGRAMS)

View File

@ -20,12 +20,9 @@ subdir = src/common
top_builddir = ../.. top_builddir = ../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
override CPPFLAGS := -DFRONTEND $(CPPFLAGS)
LIBS += $(PTHREAD_LIBS)
# don't include subdirectory-path-dependent -I and -L switches # don't include subdirectory-path-dependent -I and -L switches
STD_CPPFLAGS := $(filter-out -I$(top_srcdir)/src/include -I$(top_builddir)/src/include,$(CPPFLAGS)) STD_CPPFLAGS := $(filter-out -I$(top_srcdir)/src/include -I$(top_builddir)/src/include,$(CPPFLAGS))
STD_LDFLAGS := $(filter-out -L$(top_builddir)/src/port,$(LDFLAGS)) STD_LDFLAGS := $(filter-out -L$(top_builddir)/src/common -L$(top_builddir)/src/port,$(LDFLAGS))
override CPPFLAGS += -DVAL_CONFIGURE="\"$(configure_args)\"" override CPPFLAGS += -DVAL_CONFIGURE="\"$(configure_args)\""
override CPPFLAGS += -DVAL_CC="\"$(CC)\"" override CPPFLAGS += -DVAL_CC="\"$(CC)\""
override CPPFLAGS += -DVAL_CPPFLAGS="\"$(STD_CPPFLAGS)\"" override CPPFLAGS += -DVAL_CPPFLAGS="\"$(STD_CPPFLAGS)\""
@ -36,6 +33,9 @@ override CPPFLAGS += -DVAL_LDFLAGS_EX="\"$(LDFLAGS_EX)\""
override CPPFLAGS += -DVAL_LDFLAGS_SL="\"$(LDFLAGS_SL)\"" override CPPFLAGS += -DVAL_LDFLAGS_SL="\"$(LDFLAGS_SL)\""
override CPPFLAGS += -DVAL_LIBS="\"$(LIBS)\"" override CPPFLAGS += -DVAL_LIBS="\"$(LIBS)\""
override CPPFLAGS := -DFRONTEND $(CPPFLAGS)
LIBS += $(PTHREAD_LIBS)
OBJS_COMMON = config_info.o controldata_utils.o exec.o keywords.o \ OBJS_COMMON = config_info.o controldata_utils.o exec.o keywords.o \
pg_lzcompress.o pgfnames.o psprintf.o relpath.o rmtree.o \ pg_lzcompress.o pgfnames.o psprintf.o relpath.o rmtree.o \
string.o username.o wait_error.o string.o username.o wait_error.o

View File

@ -22,8 +22,8 @@ override CPPFLAGS := -I../include -I$(top_srcdir)/src/interfaces/ecpg/include \
-I$(libpq_srcdir) -DFRONTEND $(CPPFLAGS) -I$(libpq_srcdir) -DFRONTEND $(CPPFLAGS)
override CFLAGS += $(PTHREAD_CFLAGS) override CFLAGS += $(PTHREAD_CFLAGS)
SHLIB_LINK = -L../ecpglib -lecpg -L../pgtypeslib -lpgtypes $(libpq) \ SHLIB_LINK_INTERNAL = -L../ecpglib -lecpg -L../pgtypeslib -lpgtypes $(libpq)
$(filter -lintl -lm, $(LIBS)) $(PTHREAD_LIBS) SHLIB_LINK = $(filter -lintl -lm, $(LIBS)) $(PTHREAD_LIBS)
SHLIB_PREREQS = submake-ecpglib submake-pgtypeslib SHLIB_PREREQS = submake-ecpglib submake-pgtypeslib
SHLIB_EXPORTS = exports.txt SHLIB_EXPORTS = exports.txt

View File

@ -34,7 +34,8 @@ ifneq ($(PORTNAME), win32)
OBJS += thread.o OBJS += thread.o
endif endif
SHLIB_LINK = -L../pgtypeslib -lpgtypes $(libpq) $(filter -lintl -lm, $(LIBS)) $(PTHREAD_LIBS) SHLIB_LINK_INTERNAL = -L../pgtypeslib -lpgtypes $(libpq)
SHLIB_LINK = $(filter -lintl -lm, $(LIBS)) $(PTHREAD_LIBS)
SHLIB_PREREQS = submake-libpq submake-pgtypeslib SHLIB_PREREQS = submake-libpq submake-pgtypeslib
SHLIB_EXPORTS = exports.txt SHLIB_EXPORTS = exports.txt

View File

@ -25,7 +25,7 @@ override CFLAGS += $(PTHREAD_CFLAGS)
# Need to recompile any libpgport object files # Need to recompile any libpgport object files
LIBS := $(filter-out -lpgport, $(LIBS)) LIBS := $(filter-out -lpgport, $(LIBS))
SHLIB_LINK += -lm SHLIB_LINK += $(filter -lm, $(LIBS))
SHLIB_EXPORTS = exports.txt SHLIB_EXPORTS = exports.txt

View File

@ -5,8 +5,9 @@ override CPPFLAGS := -I../../include -I$(top_srcdir)/src/interfaces/ecpg/include
-I$(libpq_srcdir) $(CPPFLAGS) -I$(libpq_srcdir) $(CPPFLAGS)
override CFLAGS += $(PTHREAD_CFLAGS) override CFLAGS += $(PTHREAD_CFLAGS)
override LDFLAGS := -L../../ecpglib -L../../pgtypeslib $(filter-out -l%, $(libpq)) $(LDFLAGS) LDFLAGS_INTERNAL += -L../../ecpglib -lecpg -L../../pgtypeslib -lpgtypes $(libpq)
override LIBS := -lecpg -lpgtypes $(filter -l%, $(libpq)) $(LIBS) $(PTHREAD_LIBS)
override LIBS += $(PTHREAD_LIBS)
# Standard way to invoke the ecpg preprocessor # Standard way to invoke the ecpg preprocessor
ECPG = ../../preproc/ecpg --regression -I$(srcdir)/../../include -I$(srcdir) ECPG = ../../preproc/ecpg --regression -I$(srcdir)/../../include -I$(srcdir)

View File

@ -6,8 +6,7 @@ include $(top_srcdir)/$(subdir)/../Makefile.regress
# Use special informix compatibility switch for all tests in this directory # Use special informix compatibility switch for all tests in this directory
ECPG += -C INFORMIX ECPG += -C INFORMIX
override LDFLAGS := -L../../compatlib $(LDFLAGS) LDFLAGS_INTERNAL += -L../../compatlib -lecpg_compat
override LIBS := -lecpg_compat $(LIBS)
TESTS = test_informix test_informix.c \ TESTS = test_informix test_informix.c \
test_informix2 test_informix2.c \ test_informix2 test_informix2.c \

View File

@ -3,11 +3,11 @@ top_builddir = ../../../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
ifeq ($(PORTNAME), win32) ifeq ($(PORTNAME), win32)
LDLIBS += -lws2_32 LDFLAGS += -lws2_32
endif endif
override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS)
override LDLIBS := $(libpq_pgport) $(LDLIBS) LDFLAGS_INTERNAL += $(libpq_pgport)
PROGS = uri-regress PROGS = uri-regress

View File

@ -43,7 +43,9 @@
# EXTRA_CLEAN -- extra files to remove in 'make clean' # EXTRA_CLEAN -- extra files to remove in 'make clean'
# PG_CPPFLAGS -- will be added to CPPFLAGS # PG_CPPFLAGS -- will be added to CPPFLAGS
# PG_LIBS -- will be added to PROGRAM link line # PG_LIBS -- will be added to PROGRAM link line
# PG_LIBS_INTERNAL -- same, for references to libraries within build tree
# SHLIB_LINK -- will be added to MODULE_big link line # SHLIB_LINK -- will be added to MODULE_big link line
# SHLIB_LINK_INTERNAL -- same, for references to libraries within build tree
# PG_CONFIG -- path to pg_config program for the PostgreSQL installation # PG_CONFIG -- path to pg_config program for the PostgreSQL installation
# to build against (typically just "pg_config" to use the first one in # to build against (typically just "pg_config" to use the first one in
# your PATH) # your PATH)
@ -293,5 +295,5 @@ endif
ifdef PROGRAM ifdef PROGRAM
$(PROGRAM): $(OBJS) $(PROGRAM): $(OBJS)
$(CC) $(CFLAGS) $(OBJS) $(PG_LIBS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) $(CC) $(CFLAGS) $(OBJS) $(PG_LIBS_INTERNAL) $(LDFLAGS) $(LDFLAGS_EX) $(PG_LIBS) $(LIBS) -o $@$(X)
endif endif

View File

@ -7,11 +7,11 @@ top_builddir = ../../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
ifeq ($(PORTNAME), win32) ifeq ($(PORTNAME), win32)
LDLIBS += -lws2_32 LDFLAGS += -lws2_32
endif endif
override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS)
override LDLIBS := $(libpq_pgport) $(LDLIBS) LDFLAGS_INTERNAL += $(libpq_pgport)
PROGS = testlibpq testlibpq2 testlibpq3 testlibpq4 testlo testlo64 PROGS = testlibpq testlibpq2 testlibpq3 testlibpq4 testlo testlo64

View File

@ -13,7 +13,7 @@ top_builddir = ../../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS)
override LDFLAGS := $(libpq_pgport) $(LDFLAGS) LDFLAGS_INTERNAL += $(libpq_pgport)
OBJS= findoidjoins.o OBJS= findoidjoins.o