summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.global.in8
-rw-r--r--src/Makefile.shlib191
-rw-r--r--src/interfaces/libpq++/Makefile27
-rw-r--r--src/interfaces/odbc/GNUmakefile6
-rw-r--r--src/makefiles/Makefile.qnx41
-rw-r--r--src/pl/plpgsql/src/Makefile4
-rw-r--r--src/test/regress/GNUmakefile3
-rw-r--r--src/test/regress/pg_regress.sh13
8 files changed, 116 insertions, 137 deletions
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 344888965fd..55030693957 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -1,5 +1,5 @@
# -*-makefile-*-
-# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.103 2000/10/21 22:36:11 petere Exp $
+# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.104 2000/10/23 21:43:56 petere Exp $
#------------------------------------------------------------------------------
# All PostgreSQL makefiles include this file and use the variables it sets,
@@ -114,6 +114,7 @@ with_tcl = @with_tcl@
with_tk = @with_tk@
enable_odbc = @enable_odbc@
MULTIBYTE = @MULTIBYTE@
+enable_shared = @enable_shared@
python_extmakefile = @python_extmakefile@
python_moduledir = @python_moduledir@
@@ -206,11 +207,6 @@ host_cpu = @host_cpu@
HAVE_POSIX_SIGNALS= @HAVE_POSIX_SIGNALS@
HPUXMATHLIB= @HPUXMATHLIB@
-# Ignore BSD_SHLIB if you're not using one of the BSD ports. But if you
-# are, and it's one that doesn't have shared libraries (NetBSD/vax is an
-# example of this), set BSD_SHLIB to null in Makefile.custom.
-BSD_SHLIB= true
-
# This is mainly for use on FreeBSD, where we have both a.out and elf
# systems now. May be applicable to other systems to?
ELF_SYSTEM= @ELF_SYS@
diff --git a/src/Makefile.shlib b/src/Makefile.shlib
index 049069a3306..374e3dd9229 100644
--- a/src/Makefile.shlib
+++ b/src/Makefile.shlib
@@ -6,7 +6,7 @@
# Copyright (c) 1998, Regents of the University of California
#
# IDENTIFICATION
-# $Header: /cvsroot/pgsql/src/Makefile.shlib,v 1.26 2000/10/20 21:03:38 petere Exp $
+# $Header: /cvsroot/pgsql/src/Makefile.shlib,v 1.27 2000/10/23 21:43:56 petere Exp $
#
#-------------------------------------------------------------------------
@@ -51,154 +51,157 @@
#
# Got that? Look at src/interfaces/libpq/Makefile for an example.
+ifndef cplusplus
+COMPILER = $(CC)
+else
+COMPILER = $(CXX)
+endif
+
+
+# First, a few hacks for building *static* libraries.
+
+LINK.static = $(AR) $(AROPT)
+
+ifdef cplusplus
-# shlib is empty by default. If we know how to build a shared library
-# it will contain the name of the file, otherwise it will remain
-# empty. Thus `ifdef shlib' could be used in the containing make file
-# to test whether shared libraries are available.
-shlib :=
+ifeq ($(PORTNAME), irix5)
+ ifneq ($(GXX), yes)
+ LINK.static = $(CXX) -ar -o
+ endif
+endif
-# For each platform we support shared libraries on, set shlib and
-# update flags as needed to build a shared lib. Note we depend on
-# Makefile.global (or really Makefile.port) to supply DLSUFFIX and
-# other symbols.
+ifeq ($(PORTNAME), solaris)
+ ifneq ($(GXX), yes)
+ LINK.static = $(CXX) -xar -o
+ endif
+endif
+
+endif # cplusplus
+
+
+
+ifeq ($(enable_shared), yes)
+
+# For each platform we support shared libraries on, set shlib to the
+# name of the library, LINK.shared to the command to link the library,
+# and adjust SHLIB_LINK if necessary.
# Try to keep the sections in some kind of order, folks...
+# XXX fix Makefile.aix
+ifneq ($(PORTNAME), aix)
+ ifndef cplusplus
+ override CFLAGS += $(CFLAGS_SL)
+ else
+ override CXXFLAGS += $(CFLAGS_SL)
+ endif
+endif
+
+
ifeq ($(PORTNAME), aix)
shlib := lib$(NAME)$(DLSUFFIX)
SHLIB_LINK += -lc
endif
ifeq ($(PORTNAME), openbsd)
- ifdef BSD_SHLIB
- shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
- ifdef ELF_SYSTEM
- LDFLAGS_SL := -x -Bshareable -soname $(shlib)
- else
- LDFLAGS_SL := -x -Bshareable -Bforcearchive
- endif
- override CFLAGS += $(CFLAGS_SL)
+ shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+ ifdef ELF_SYSTEM
+ LINK.shared = $(LD) -x -Bshareable -soname $(shlib)
+ else
+ LINK.shared = $(LD) -x -Bshareable -Bforcearchive
endif
endif
ifeq ($(PORTNAME), bsdi)
- ifdef BSD_SHLIB
- ifeq ($(DLSUFFIX), .so)
- shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
- LDFLAGS_SL += -shared -soname $(shlib)
- override CFLAGS += $(CFLAGS_SL)
- endif
- ifeq ($(DLSUFFIX), .o)
- shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
- LD := shlicc
- LDFLAGS_SL += -O $(LDREL)
- override CFLAGS += $(CFLAGS_SL)
- endif
+ shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+ ifeq ($(DLSUFFIX), .so)
+ LINK.shared = $(LD) -shared -soname $(shlib)
+ endif
+ ifeq ($(DLSUFFIX), .o)
+ LINK.shared = shlicc -O $(LDREL)
endif
endif
ifeq ($(PORTNAME), freebsd)
- ifdef BSD_SHLIB
- ifdef ELF_SYSTEM
- shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
- LDFLAGS_SL := -x -shared -soname $(shlib)
- else
- shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
- LDFLAGS_SL := -x -Bshareable -Bforcearchive
- endif
- override CFLAGS += $(CFLAGS_SL)
+ ifdef ELF_SYSTEM
+ shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
+ LINK.shared = $(LD) -x -shared -soname $(shlib)
+ else
+ shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+ LINK.shared = $(LD) -x -Bshareable -Bforcearchive
endif
endif
ifeq ($(PORTNAME), netbsd)
- ifdef BSD_SHLIB
- soname := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
- shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
- ifdef ELF_SYSTEM
- LD := $(CC)
- LDFLAGS_SL := -shared -Wl,-soname -Wl,$(soname)
- ifneq ($(SHLIB_LINK),)
- LDFLAGS_SL += -Wl,-R$(libdir)
- endif
- else
- LDFLAGS_SL := -x -Bshareable -Bforcearchive
+ soname := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
+ shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+ ifdef ELF_SYSTEM
+ LINK.shared = $(COMPILER) -shared -Wl,-soname -Wl,$(soname)
+ ifneq ($(SHLIB_LINK),)
+ LINK.shared += -Wl,-R$(libdir)
endif
- override CFLAGS += $(CFLAGS_SL)
+ else
+ LINK.shared = $(LD) -x -Bshareable -Bforcearchive
endif
endif
ifeq ($(PORTNAME), hpux)
# HPUX doesn't believe in version numbers for shlibs
shlib := lib$(NAME)$(DLSUFFIX)
- LDFLAGS_SL := -b
- override CFLAGS += $(CFLAGS_SL)
+ LINK.shared = $(LD) -b
endif
ifeq ($(PORTNAME), irix5)
- shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
- LDFLAGS_SL := -shared -rpath $(libdir) -set_version sgi$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
- override CFLAGS += $(CFLAGS_SL)
+ shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
+ LINK.shared := $(COMPILER) -shared -rpath $(libdir) -set_version sgi$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
endif
ifeq ($(PORTNAME), linux)
shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
- LD := $(CC)
- LDFLAGS_SL := -shared -Wl,-soname,$(shlib)
- LDFLAGS_ODBC := -lm
- override CFLAGS += $(CFLAGS_SL)
+ LINK.shared = $(COMPILER) -shared -Wl,-soname,$(shlib)
endif
ifeq ($(PORTNAME), solaris)
shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
- LDFLAGS_SL := -G
+ LINK.shared = $(COMPILER) -G
SHLIB_LINK += -ldl -lsocket -lresolv -lnsl -lm -lc
- override CFLAGS += $(CFLAGS_SL)
endif
ifeq ($(PORTNAME), osf)
shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
- LDFLAGS_SL += -shared -expect_unresolved '*'
+ LINK.shared = $(LD) -shared -expect_unresolved '*'
endif
ifeq ($(PORTNAME), svr4)
shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
- LDFLAGS_SL := -G
- override CFLAGS += $(CFLAGS_SL)
+ LINK.shared = $(LD) -G
endif
ifeq ($(PORTNAME), univel)
shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
- LDFLAGS_SL := -G -z text
- override CFLAGS += $(CFLAGS_SL)
- ifeq ($(CXX), CC)
- override CXXFLAGS += -Xw
- COMPILE.cc = $(CXX) $(CXXFLAGS:ll,alloca=ll) $(CPPFLAGS) $(TARGET_ARCH) -c
- endif
+ LINK.shared = $(LD) -G -z text
endif
ifeq ($(PORTNAME), unixware)
shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
- LDFLAGS_SL := -G -z text
- override CFLAGS += $(CFLAGS_SL)
- ifeq ($(CXX), CC)
- override CXXFLAGS += -Xw
- COMPILE.cc = $(CXX) $(CXXFLAGS:ll,alloca=ll) $(CPPFLAGS) $(TARGET_ARCH) -c
- endif
+ LINK.shared = $(LD) -G -z text
endif
ifeq ($(PORTNAME), win)
shlib := $(NAME)$(DLSUFFIX)
+ ifdef cplusplus
+ SHLIB_LINK += --driver-name g++
+ endif
endif
ifeq ($(PORTNAME), beos)
- install-shlib-dep := install-shlib
- shlib := lib$(NAME)$(DLSUFFIX)
- LDFLAGS_SL := -nostart -ltermcap -lstdc++.r4 -lbind -lsocket -L/boot/develop/lib/x86
+ shlib := lib$(NAME)$(DLSUFFIX)
+ LINK.shared = $(LD) -nostart
+ SHLIB_LINK += -ltermcap -lstdc++.r4 -lbind -lsocket -L/boot/develop/lib/x86
endif
-# Note that in what follows, shlib is empty when not building a shared
-# library.
+endif # enable_shared
+
##
@@ -208,8 +211,6 @@ endif
.PHONY: all-lib
all-lib: lib$(NAME).a $(shlib)
-# Rules to build regular and shared libraries
-
ifneq ($(PORTNAME), win)
ifndef LORDER
@@ -218,22 +219,23 @@ endif
lib$(NAME).a: $(OBJS)
ifdef MK_NO_LORDER
- $(AR) $(AROPT) $@ $^
+ $(LINK.static) $@ $^
else
- $(AR) $(AROPT) $@ `$(LORDER) $^ | tsort`
+ $(LINK.static) $@ `$(LORDER) $^ | tsort`
endif
$(RANLIB) $@
endif # not win
-ifdef shlib
+ifeq ($(enable_shared), yes)
+
ifneq ($(PORTNAME), beos)
ifneq ($(PORTNAME), win)
ifneq ($(PORTNAME), aix)
# Normal case
$(shlib): $(OBJS)
- $(LD) $(LDFLAGS_SL) -o $@ $(OBJS) $(SHLIB_LINK)
+ $(LINK.shared) -o $@ $(OBJS) $(SHLIB_LINK)
# If we're using major and minor versions, then make a symlink to major-version-only.
ifneq ($(shlib), lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION))
rm -f lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
@@ -275,7 +277,8 @@ $(shlib): $(OBJS)
$(CC) -Xlinker -soname=$@ $(LDFLAGS_SL) -o $@ _APP_ $(OBJS) $(SHLIB_LINK)
endif # PORTNAME == beos
-endif # shlib
+
+endif # enable_shared
##
@@ -288,7 +291,7 @@ install-lib: install-lib-static install-lib-shared
install-lib-static: lib$(NAME).a
$(INSTALL_DATA) $< $(DESTDIR)$(libdir)/lib$(NAME).a
-ifdef shlib
+ifeq ($(enable_shared), yes)
install-lib-shared: $(shlib)
$(INSTALL_SHLIB) $< $(DESTDIR)$(libdir)/$(shlib)
ifneq ($(PORTNAME), win)
@@ -304,7 +307,7 @@ ifneq ($(shlib), lib$(NAME)$(DLSUFFIX))
endif
endif # not win
-endif # shlib
+endif # enable_shared
##
@@ -314,11 +317,11 @@ endif # shlib
.PHONY: uninstall-lib
uninstall-lib:
rm -f $(DESTDIR)$(libdir)/lib$(NAME).a
-ifdef shlib
+ifeq ($(enable_shared), yes)
rm -f $(DESTDIR)$(libdir)/lib$(NAME)$(DLSUFFIX) \
$(DESTDIR)$(libdir)/lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION) \
$(DESTDIR)$(libdir)/lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
-endif # shlib
+endif # enable_shared
##
@@ -328,7 +331,9 @@ endif # shlib
.PHONY: clean-lib
clean-lib:
rm -f lib$(NAME).a
+ifeq ($(enable_shared), yes)
rm -f $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION) lib$(NAME)$(DLSUFFIX)
+endif
ifeq ($(PORTNAME), win)
rm -rf $(NAME).def
endif
diff --git a/src/interfaces/libpq++/Makefile b/src/interfaces/libpq++/Makefile
index 1d5b82e174d..0cff4877609 100644
--- a/src/interfaces/libpq++/Makefile
+++ b/src/interfaces/libpq++/Makefile
@@ -4,7 +4,7 @@
#
# Copyright (c) 1994, Regents of the University of California
#
-# $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/Makefile,v 1.26 2000/10/20 21:04:12 petere Exp $
+# $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/Makefile,v 1.27 2000/10/23 21:43:57 petere Exp $
#
#-------------------------------------------------------------------------
@@ -20,28 +20,10 @@ override CPPFLAGS += -I$(libpq_srcdir)
OBJS = pgconnection.o pgdatabase.o pgtransdb.o pgcursordb.o pglobject.o
-ifeq ($(PORTNAME), win)
-SHLIB_LINK+= --driver-name g++ $(libpq)
-else
SHLIB_LINK= $(libpq)
-endif
-# For CC on IRIX, must use CC as linker/archiver of C++ libraries
-ifeq ($(PORTNAME), irix5)
- ifneq ($(GXX), yes)
- AR := CC
- AROPT := -ar -o
- LD := CC
- endif
-endif
-# Same for Solaris with native compiler
-ifeq ($(PORTNAME), solaris)
- ifneq ($(GXX), yes)
- AR := CC
- AROPT := -xar -o
- LD := CC
- endif
-endif
+# communicate with Makefile.shlib
+cplusplus := yes
all: all-lib
@@ -49,9 +31,6 @@ all: all-lib
# Shared library stuff
include $(top_srcdir)/src/Makefile.shlib
-# Pull shared-lib CFLAGS into CXXFLAGS
-override CXXFLAGS+= $(CFLAGS_SL)
-
.PHONY: examples
examples:
diff --git a/src/interfaces/odbc/GNUmakefile b/src/interfaces/odbc/GNUmakefile
index ab849fbbc7a..e24d9e26f54 100644
--- a/src/interfaces/odbc/GNUmakefile
+++ b/src/interfaces/odbc/GNUmakefile
@@ -2,7 +2,7 @@
#
# GNUMakefile for psqlodbc (Postgres ODBC driver)
#
-# $Header: /cvsroot/pgsql/src/interfaces/odbc/Attic/GNUmakefile,v 1.5 2000/10/20 21:04:13 petere Exp $
+# $Header: /cvsroot/pgsql/src/interfaces/odbc/Attic/GNUmakefile,v 1.6 2000/10/23 21:43:58 petere Exp $
#
#-------------------------------------------------------------------------
@@ -23,15 +23,13 @@ OBJS = info.o bind.o columninfo.o connection.o convert.o drvconn.o \
pgtypes.o psqlodbc.o qresult.o results.o socket.o parse.o statement.o \
gpps.o tuple.o tuplelist.o dlg_specific.o $(OBJX)
-SHLIB_LINK= $(LD_FLAGS)
+SHLIB_LINK= -lm
all: all-lib
# Shared library stuff
include $(top_srcdir)/src/Makefile.shlib
-LDFLAGS_SL+= $(LDFLAGS_ODBC)
-
odbc_headers = isql.h isqlext.h iodbc.h
odbc_includedir = $(includedir)/iodbc
diff --git a/src/makefiles/Makefile.qnx4 b/src/makefiles/Makefile.qnx4
index e9cfbce3eaf..130a99fd6dd 100644
--- a/src/makefiles/Makefile.qnx4
+++ b/src/makefiles/Makefile.qnx4
@@ -8,6 +8,7 @@ LDOUT=
LIBS= -lunix
LDFLAGS= $(LIBS)
+enable_shared = no
DLSUFFIX = .so
CFLAGS_SL =
diff --git a/src/pl/plpgsql/src/Makefile b/src/pl/plpgsql/src/Makefile
index 95848d13ebb..fb3a56ecd33 100644
--- a/src/pl/plpgsql/src/Makefile
+++ b/src/pl/plpgsql/src/Makefile
@@ -2,7 +2,7 @@
#
# Makefile for the plpgsql shared object
#
-# $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Makefile,v 1.8 2000/10/20 21:04:16 petere Exp $
+# $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Makefile,v 1.9 2000/10/23 21:44:03 petere Exp $
#
#-------------------------------------------------------------------------
@@ -32,7 +32,7 @@ include $(top_srcdir)/src/Makefile.shlib
# rule and do this instead:
install: installdirs all
-ifdef shlib
+ifeq ($(enable_shared), yes)
$(INSTALL_SHLIB) $(shlib) $(DESTDIR)$(libdir)/plpgsql$(DLSUFFIX)
else
@echo "*****"; \
diff --git a/src/test/regress/GNUmakefile b/src/test/regress/GNUmakefile
index 6c26e96cee9..0e79a155187 100644
--- a/src/test/regress/GNUmakefile
+++ b/src/test/regress/GNUmakefile
@@ -7,7 +7,7 @@
#
#
# IDENTIFICATION
-# $Header: /cvsroot/pgsql/src/test/regress/GNUmakefile,v 1.28 2000/10/20 21:04:25 petere Exp $
+# $Header: /cvsroot/pgsql/src/test/regress/GNUmakefile,v 1.29 2000/10/23 21:44:07 petere Exp $
#
#-------------------------------------------------------------------------
@@ -36,6 +36,7 @@ pg_regress: pg_regress.sh GNUmakefile
-e 's/@VERSION@/$(VERSION)/g' \
-e 's/@host_tuple@/$(host_tuple)/g' \
-e 's,@GMAKE@,$(MAKE),g' \
+ -e 's/@enable_shared@/$(enable_shared)/g' \
$< >$@
chmod a+x $@
diff --git a/src/test/regress/pg_regress.sh b/src/test/regress/pg_regress.sh
index 01cc436afe8..71203bf0d9c 100644
--- a/src/test/regress/pg_regress.sh
+++ b/src/test/regress/pg_regress.sh
@@ -1,5 +1,5 @@
#! /bin/sh
-# $Header: /cvsroot/pgsql/src/test/regress/Attic/pg_regress.sh,v 1.8 2000/10/22 22:15:09 petere Exp $
+# $Header: /cvsroot/pgsql/src/test/regress/Attic/pg_regress.sh,v 1.9 2000/10/23 21:44:12 petere Exp $
me=`basename $0`
: ${TMPDIR=/tmp}
@@ -73,6 +73,7 @@ libdir='@libdir@'
bindir='@bindir@'
datadir='@datadir@'
host_platform='@host_tuple@'
+enable_shared='@enable_shared@'
unset mode
unset schedule
@@ -406,17 +407,14 @@ fi
# Install the PL/pgSQL language in it
# ----------
-case $host_platform in
- *-*-qnx*) : ;;
- *)
+if [ "$enable_shared" = yes ]; then
message "installing PL/pgSQL"
"$bindir/createlang" -L "$libdir" $psql_options plpgsql $dbname
if [ $? -ne 0 ] && [ $? -ne 2 ]; then
echo "$me: createlang failed"
(exit 2); exit
fi
- ;;
-esac
+fi
# ----------
@@ -436,6 +434,7 @@ cat /dev/null >"$diff_file"
lno=0
(
+ [ "$enable_shared" != yes ] && echo "ignore: plpgsql"
cat $schedule
for x in $extra_tests; do
echo "test: $x"
@@ -472,7 +471,7 @@ do
$PSQL -d "$dbname" <"$inputdir/sql/$1.sql" >"$outputdir/results/$1.out" 2>&1
else
# Start a parallel group
- $ECHO_N "parallel group ($# tests): " $ECHO_C
+ $ECHO_N "parallel group ($# tests): $ECHO_C"
for name do
( $PSQL -d $dbname <"$inputdir/sql/$name.sql" >"$outputdir/results/$name.out" 2>&1
$ECHO_N " $name$ECHO_C"