2003-03-16 11:42:54 +01:00
|
|
|
#-------------------------------------------------------------------------
|
|
|
|
#
|
|
|
|
# Makefile for ecpg library
|
|
|
|
#
|
2019-01-02 18:44:25 +01:00
|
|
|
# Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
|
2007-10-05 03:51:40 +02:00
|
|
|
# Portions Copyright (c) 1994, Regents of the University of California
|
2003-03-16 11:42:54 +01:00
|
|
|
#
|
2010-09-20 22:08:53 +02:00
|
|
|
# src/interfaces/ecpg/ecpglib/Makefile
|
2003-03-16 11:42:54 +01:00
|
|
|
#
|
|
|
|
#-------------------------------------------------------------------------
|
|
|
|
|
|
|
|
subdir = src/interfaces/ecpg/ecpglib
|
|
|
|
top_builddir = ../../../..
|
|
|
|
include $(top_builddir)/src/Makefile.global
|
|
|
|
|
2014-07-14 20:07:52 +02:00
|
|
|
PGFILEDESC = "ECPG - embedded SQL in C"
|
2003-03-16 11:42:54 +01:00
|
|
|
NAME= ecpg
|
2019-09-19 09:02:41 +02:00
|
|
|
SO_MAJOR_VERSION= 6
|
2016-08-16 19:58:44 +02:00
|
|
|
SO_MINOR_VERSION= $(MAJORVERSION)
|
2003-03-16 11:42:54 +01:00
|
|
|
|
2007-09-27 21:53:44 +02:00
|
|
|
override CPPFLAGS := -I../include -I$(top_srcdir)/src/interfaces/ecpg/include \
|
2014-04-05 08:20:25 +02:00
|
|
|
-I$(libpq_srcdir) -I$(top_builddir)/src/port -DFRONTEND $(CPPFLAGS)
|
2004-04-25 22:57:32 +02:00
|
|
|
override CFLAGS += $(PTHREAD_CFLAGS)
|
2003-03-16 11:42:54 +01:00
|
|
|
|
2018-09-28 20:28:19 +02:00
|
|
|
OBJS= execute.o typename.o descriptor.o sqlda.o data.o error.o prepare.o \
|
2019-09-20 18:47:21 +02:00
|
|
|
memory.o connect.o misc.o $(WIN32RES)
|
2004-10-04 22:36:12 +02:00
|
|
|
|
2018-09-28 20:28:19 +02:00
|
|
|
SHLIB_LINK_INTERNAL = -L../pgtypeslib -lpgtypes $(libpq_pgport_shlib)
|
Prevent accidental linking of system-supplied copies of libpq.so etc.
We were being careless in some places about the order of -L switches in
link command lines, such that -L switches referring to external directories
could come before those referring to directories within the build tree.
This made it possible to accidentally link a system-supplied library, for
example /usr/lib/libpq.so, in place of the one built in the build tree.
Hilarity ensued, the more so the older the system-supplied library is.
To fix, break LDFLAGS into two parts, a sub-variable LDFLAGS_INTERNAL
and the main LDFLAGS variable, both of which are "recursively expanded"
so that they can be incrementally adjusted by different makefiles.
Establish a policy that -L switches for directories in the build tree
must always be added to LDFLAGS_INTERNAL, while -L switches for external
directories must always be added to LDFLAGS. This is sufficient to
ensure a safe search order. For simplicity, we typically also put -l
switches for the respective libraries into those same variables.
(Traditional make usage would have us put -l switches into LIBS, but
cleaning that up is a project for another day, as there's no clear
need for it.)
This turns out to also require separating SHLIB_LINK into two variables,
SHLIB_LINK and SHLIB_LINK_INTERNAL, with a similar rule about which
switches go into which variable. And likewise for PG_LIBS.
Although this change might appear to affect external users of pgxs.mk,
I think it doesn't; they shouldn't have any need to touch the _INTERNAL
variables.
In passing, tweak src/common/Makefile so that the value of CPPFLAGS
recorded in pg_config lacks "-DFRONTEND" and the recorded value of
LDFLAGS lacks "-L../../../src/common". Both of those things are
mistakes, apparently introduced during prior code rearrangements,
as old versions of pg_config don't print them. In general we don't
want anything that's specific to the src/common subdirectory to
appear in those outputs.
This is certainly a bug fix, but in view of the lack of field
complaints, I'm unsure whether it's worth the risk of back-patching.
In any case it seems wise to see what the buildfarm makes of it first.
Discussion: https://postgr.es/m/25214.1522604295@sss.pgh.pa.us
2018-04-03 22:26:05 +02:00
|
|
|
SHLIB_LINK = $(filter -lintl -lm, $(LIBS)) $(PTHREAD_LIBS)
|
2010-11-12 21:15:16 +01:00
|
|
|
SHLIB_PREREQS = submake-libpq submake-pgtypeslib
|
2003-03-16 11:42:54 +01:00
|
|
|
|
2008-02-26 07:41:24 +01:00
|
|
|
SHLIB_EXPORTS = exports.txt
|
|
|
|
|
2013-03-31 22:58:40 +02:00
|
|
|
PKG_CONFIG_REQUIRES_PRIVATE = libpq libpgtypes
|
|
|
|
|
2010-11-12 21:15:16 +01:00
|
|
|
all: all-lib
|
2009-02-07 18:17:34 +01:00
|
|
|
|
2010-11-12 21:15:16 +01:00
|
|
|
.PHONY: submake-pgtypeslib
|
|
|
|
submake-pgtypeslib:
|
2009-02-07 18:17:34 +01:00
|
|
|
$(MAKE) -C $(top_builddir)/src/interfaces/ecpg/pgtypeslib all
|
2003-03-16 11:42:54 +01:00
|
|
|
|
|
|
|
# Shared library stuff
|
|
|
|
include $(top_srcdir)/src/Makefile.shlib
|
|
|
|
|
2018-09-28 20:28:19 +02:00
|
|
|
# Make dependency on pg_config_paths.h visible.
|
2009-01-14 15:54:35 +01:00
|
|
|
misc.o: misc.c $(top_builddir)/src/port/pg_config_paths.h
|
2004-11-20 22:13:06 +01:00
|
|
|
|
|
|
|
$(top_builddir)/src/port/pg_config_paths.h:
|
|
|
|
$(MAKE) -C $(top_builddir)/src/port pg_config_paths.h
|
2004-10-12 03:04:11 +02:00
|
|
|
|
2003-03-16 11:42:54 +01:00
|
|
|
install: all installdirs install-lib
|
|
|
|
|
2008-04-07 16:15:58 +02:00
|
|
|
installdirs: installdirs-lib
|
2003-03-16 11:42:54 +01:00
|
|
|
|
|
|
|
uninstall: uninstall-lib
|
|
|
|
|
2007-10-05 03:51:40 +02:00
|
|
|
clean distclean: clean-lib
|
2007-10-04 22:54:08 +02:00
|
|
|
rm -f $(OBJS)
|
2007-10-05 03:51:40 +02:00
|
|
|
|
2019-10-20 10:19:13 +02:00
|
|
|
maintainer-clean: distclean
|