1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +03:00

Change PL/Tcl build to use configured compiler and Makefile.shlib

system, not Tcl-provided one.

Make sure export file, if any, is cleaned.

Tcl configuration is now read directly in configure and recorded in
Makefile.global.  This eliminates some duplicate efforts and allows
for easier hand-editing of the results, if necessary.
This commit is contained in:
Peter Eisentraut
2002-05-24 18:10:17 +00:00
parent c0fdec2b6a
commit 2f2d05763d
10 changed files with 80 additions and 157 deletions

View File

@ -1,5 +1,5 @@
# -*-makefile-*-
# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.146 2002/04/14 17:23:20 petere Exp $
# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.147 2002/05/24 18:10:17 petere Exp $
#------------------------------------------------------------------------------
# All PostgreSQL makefiles include this file and use the variables it sets,
@ -147,9 +147,16 @@ python_configdir = @python_configdir@
krb_srvtab = @krb_srvtab@
TCL_CONFIG_SH = @TCL_CONFIG_SH@
TK_CONFIG_SH = @TK_CONFIG_SH@
TCLSH = @TCLSH@
TCLSH = @TCLSH@
TCL_LIB_FILE = @TCL_LIB_FILE@
TCL_LIBS = @TCL_LIBS@
TCL_LIB_SPEC = @TCL_LIB_SPEC@
TCL_SHARED_BUILD = @TCL_SHARED_BUILD@
TCL_SHLIB_LD_LIBS = @TCL_SHLIB_LD_LIBS@
TK_LIBS = @TK_LIBS@
TK_LIB_SPEC = @TK_LIB_SPEC@
TK_XINCLUDES = @TK_XINCLUDES@
have_docbook = @have_docbook@
DOCBOOKSTYLE = @DOCBOOKSTYLE@

View File

@ -6,7 +6,7 @@
# Copyright (c) 1998, Regents of the University of California
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/Makefile.shlib,v 1.57 2002/04/10 16:45:25 petere Exp $
# $Header: /cvsroot/pgsql/src/Makefile.shlib,v 1.58 2002/05/24 18:10:17 petere Exp $
#
#-------------------------------------------------------------------------
@ -400,7 +400,10 @@ endif # enable_shared
clean-lib:
rm -f lib$(NAME).a
ifeq ($(enable_shared), yes)
rm -f $(shlib) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION) lib$(NAME)$(DLSUFFIX)
rm -f lib$(NAME)$(DLSUFFIX) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION) lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
ifdef EXPSUFF
rm -f lib$(NAME)$(EXPSUFF)
endif
endif
ifeq ($(PORTNAME), win)
rm -rf $(NAME).def

View File

@ -6,7 +6,7 @@
# Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California
#
# $Header: /cvsroot/pgsql/src/bin/pgtclsh/Attic/Makefile,v 1.37 2001/02/20 19:20:29 petere Exp $
# $Header: /cvsroot/pgsql/src/bin/pgtclsh/Attic/Makefile,v 1.38 2002/05/24 18:10:17 petere Exp $
#
#-------------------------------------------------------------------------
@ -14,13 +14,6 @@ subdir = src/bin/pgtclsh
top_builddir = ../../..
include $(top_builddir)/src/Makefile.global
#
# Include definitions from the tclConfig.sh file
#
-include Makefile.tcldefs
ifeq ($(with_tk), yes)
-include Makefile.tkdefs
endif
libpgtcl_srcdir = $(top_srcdir)/src/interfaces/libpgtcl
libpgtcl_builddir = $(top_builddir)/src/interfaces/libpgtcl
@ -61,14 +54,5 @@ installdirs:
uninstall:
rm -f $(DESTDIR)$(bindir)/pgtclsh $(DESTDIR)$(bindir)/pgtksh
Makefile.tcldefs: mkMakefile.tcldefs.sh
$(SHELL) $< '$(TCL_CONFIG_SH)' '$@'
Makefile.tkdefs: mkMakefile.tkdefs.sh
$(SHELL) $< '$(TK_CONFIG_SH)' '$@'
clean distclean maintainer-clean:
rm -f pgtclAppInit.o pgtkAppInit.o Makefile.tcldefs Makefile.tkdefs pgtclsh pgtksh
dep depend:
$(CC) -MM $(CFLAGS) *.c > depend
rm -f pgtclAppInit.o pgtkAppInit.o pgtclsh pgtksh

View File

@ -1,23 +0,0 @@
#! /bin/sh
# $1 = path to tclConfig.sh ; $2 = output file
if test x"$1" = x ; then
echo "$0: No tclConfig.sh file specified. Did you use \`configure --with-tcl'?" 1>&2
exit 1
fi
# Source the file to obtain the correctly expanded variable definitions
. "$1"
# Read the file a second time as an easy way of getting the list of variable
# definitions to output.
cat "$1" |
egrep '^TCL_|^TK_' |
sed 's/^\([^=]*\)=.*$/\1/' |
while read var
do
eval echo "\"$var = \$$var\""
done > "$2"
exit 0

View File

@ -1,23 +0,0 @@
#! /bin/sh
# $1 = path to tkConfig.sh ; $2 = output file
if test x"$1" = x; then
echo "$0: No tkConfig.sh file specified. Did you use \`configure --with-tcl --with-x'?" 1>&2
exit 1
fi
# Source the file to obtain the correctly expanded variable definitions
. "$1"
# Read the file a second time as an easy way of getting the list of variable
# definitions to output.
cat "$1" |
egrep '^TCL_|^TK_' |
sed 's/^\([^=]*\)=.*$/\1/' |
while read var
do
eval echo "\"$var = \$$var\""
done > "$2"
exit 0

View File

@ -2,7 +2,7 @@
#
# Makefile for the pltcl shared object
#
# $Header: /cvsroot/pgsql/src/pl/tcl/Makefile,v 1.37 2002/01/23 18:45:41 tgl Exp $
# $Header: /cvsroot/pgsql/src/pl/tcl/Makefile,v 1.38 2002/05/24 18:10:17 petere Exp $
#
#-------------------------------------------------------------------------
@ -10,7 +10,6 @@ subdir = src/pl/tcl
top_builddir = ../../..
include $(top_builddir)/src/Makefile.global
-include Makefile.tcldefs
# Find out whether Tcl was built as a shared library --- if not, we
# can't link a shared library that depends on it, and have to forget
@ -27,71 +26,39 @@ endif
endif
# Change following to how shared library that contains references to
# libtcl must get built on your system. Since these definitions come
# from the tclConfig.sh script, they should work if the shared build
# of tcl was successful on this system. However, tclConfig.sh lies to
# us a little bit (at least in versions 7.6 through 8.0.4) --- it
# doesn't mention -lc in TCL_LIBS, but you still need it on systems
# that want to hear about dependent libraries...
# The following attempts to figure out what libraries need to be
# linked with pltcl. The information comes from the tclConfig.sh
# file, but it's mostly bogus. This just might work.
ifneq ($(TCL_SHLIB_LD_LIBS),)
# link command for a shared lib must mention shared libs it uses
SHLIB_EXTRA_LIBS=$(TCL_LIBS) -lc
SHLIB_LINK = $(TCL_LIB_SPEC) $(TCL_LIBS) -lc
else
ifeq ($(PORTNAME), hpux)
# link command for a shared lib must mention shared libs it uses,
# even though Tcl doesn't think so...
SHLIB_EXTRA_LIBS=$(TCL_LIBS) -lc
SHLIB_LINK = $(TCL_LIB_SPEC) $(TCL_LIBS) -lc
else
# link command for a shared lib must NOT mention shared libs it uses
SHLIB_EXTRA_LIBS=
SHLIB_LINK = $(TCL_LIB_SPEC)
endif
endif
%$(TCL_SHLIB_SUFFIX): %.o
$(TCL_SHLIB_LD) -o $@ $< $(TCL_LIB_SPEC) $(SHLIB_EXTRA_LIBS)
NAME = pltcl
SO_MAJOR_VERSION = 2
SO_MINOR_VERSION = 0
OBJS = pltcl.o
CC = $(TCL_CC)
# Since we are using Tcl's choice of C compiler, which might not be
# the same one selected for Postgres, do NOT use CFLAGS from
# Makefile.global. Instead use TCL's CFLAGS plus necessary -I
# directives.
# Can choose either TCL_CFLAGS_OPTIMIZE or TCL_CFLAGS_DEBUG here, as
# needed
override CPPFLAGS += $(TCL_DEFS)
override CFLAGS = $(TCL_CFLAGS_OPTIMIZE) $(TCL_SHLIB_CFLAGS)
#
# DLOBJS is the dynamically-loaded object file.
#
DLOBJS= pltcl$(DLSUFFIX)
INFILES= $(DLOBJS)
#
# plus exports files
#
ifdef EXPSUFF
INFILES+= $(DLOBJS:.o=$(EXPSUFF))
endif
# Provide dummy targets for the case where we can't build the shared library.
include $(top_srcdir)/src/Makefile.shlib
ifeq ($(TCL_SHARED_BUILD), 1)
all: $(INFILES)
all: all-lib
$(MAKE) -C modules $@
pltcl$(DLSUFFIX): pltcl.o
install: all installdirs
$(INSTALL_SHLIB) $(DLOBJS) $(DESTDIR)$(pkglibdir)/$(DLOBJS)
$(INSTALL_SHLIB) $(shlib) $(DESTDIR)$(pkglibdir)/$(NAME)$(DLSUFFIX)
$(MAKE) -C modules $@
installdirs:
@ -99,21 +66,19 @@ installdirs:
$(MAKE) -C modules $@
uninstall:
rm -f $(DESTDIR)$(pkglibdir)/$(DLOBJS)
rm -f $(DESTDIR)$(pkglibdir)/$(NAME)$(DLSUFFIX)
$(MAKE) -C modules $@
else # TCL_SHARED_BUILD = 0
all install:
# Provide dummy targets for the case where we can't build the shared library.
all:
@echo "*****"; \
echo "* Cannot build pltcl because Tcl is not a shared library; skipping it."; \
echo "*****"
endif # TCL_SHARED_BUILD = 0
Makefile.tcldefs: mkMakefile.tcldefs.sh
$(SHELL) $< '$(TCL_CONFIG_SH)' '$@'
clean distclean maintainer-clean:
rm -f $(INFILES) pltcl.o Makefile.tcldefs
clean distclean maintainer-clean: clean-lib
rm -f $(OBJS)
$(MAKE) -C modules $@

View File

@ -1,28 +0,0 @@
#! /bin/sh
# $1 = path to tclConfig.sh ; $2 = output file
# $Header: /cvsroot/pgsql/src/pl/tcl/Attic/mkMakefile.tcldefs.sh,v 1.2 2002/01/23 18:45:41 tgl Exp $
if test x"$1" = x ; then
echo "$0: No tclConfig.sh file specified. Did you use \`configure --with-tcl'?" 1>&2
exit 1
fi
# Source the file to obtain the correctly expanded variable definitions
. "$1"
# Suppress bogus soname switch that RedHat RPMs put into tclConfig.sh
TCL_SHLIB_LD=`echo "$TCL_SHLIB_LD" | sed 's/-Wl,-soname[^ ]*//'`
# Read the file a second time as an easy way of getting the list of variable
# definitions to output.
cat "$1" |
egrep '^TCL_|^TK_' |
sed 's/^\([^=]*\)=.*$/\1/' |
while read var
do
eval echo "\"$var = \$$var\""
done > "$2"
exit 0