Commit 2f2d0576 authored by Peter Eisentraut's avatar Peter Eisentraut

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.
parent c0fdec2b
# $Header: /cvsroot/pgsql/config/tcl.m4,v 1.3 2002/03/29 17:32:54 petere Exp $ # $Header: /cvsroot/pgsql/config/tcl.m4,v 1.4 2002/05/24 18:10:17 petere Exp $
# Autoconf macros to check for Tcl related things # Autoconf macros to check for Tcl related things
...@@ -74,3 +74,16 @@ fi ...@@ -74,3 +74,16 @@ fi
AC_SUBST([TK_CONFIG_SH]) AC_SUBST([TK_CONFIG_SH])
])# PGAC_PATH_TKCONFIGSH ])# PGAC_PATH_TKCONFIGSH
# PGAC_EVAL_TCLCONFIGSH(FILE, WANTED-VARS)
# ----------------------------------------
# Assigns variables listed in WANTED-VARS by reading FILE and
# evaluating it according to the quoting scheme of tclConfig.sh and
# tkConfig.sh. Calls AC_SUBST for each variable.
AC_DEFUN([PGAC_EVAL_TCLCONFIGSH],
[. "$1"
m4_foreach([pgac_item], [$2],
[eval pgac_item=\"[$]pgac_item\"
AC_SUBST(pgac_item)])])
...@@ -16405,7 +16405,13 @@ fi ...@@ -16405,7 +16405,13 @@ fi
fi . "$TCL_CONFIG_SH"
eval TCL_LIB_FILE=\"$TCL_LIB_FILE\"
eval TCL_LIBS=\"$TCL_LIBS\"
eval TCL_LIB_SPEC=\"$TCL_LIB_SPEC\"
eval TCL_SHARED_BUILD=\"$TCL_SHARED_BUILD\"
fi
# Check for Tk configuration script tkConfig.sh # Check for Tk configuration script tkConfig.sh
if test "$with_tk" = yes; then if test "$with_tk" = yes; then
...@@ -16444,6 +16450,11 @@ fi ...@@ -16444,6 +16450,11 @@ fi
. "$TK_CONFIG_SH"
eval TK_LIBS=\"$TK_LIBS\"
eval TK_LIB_SPEC=\"$TK_LIB_SPEC\"
eval TK_XINCLUDES=\"$TK_XINCLUDES\"
fi fi
...@@ -17435,7 +17446,15 @@ s,@XGETTEXT@,$XGETTEXT,;t t ...@@ -17435,7 +17446,15 @@ s,@XGETTEXT@,$XGETTEXT,;t t
s,@localedir@,$localedir,;t t s,@localedir@,$localedir,;t t
s,@TCLSH@,$TCLSH,;t t s,@TCLSH@,$TCLSH,;t t
s,@TCL_CONFIG_SH@,$TCL_CONFIG_SH,;t t s,@TCL_CONFIG_SH@,$TCL_CONFIG_SH,;t t
s,@TCL_LIB_FILE@,$TCL_LIB_FILE,;t t
s,@TCL_LIBS@,$TCL_LIBS,;t t
s,@TCL_LIB_SPEC@,$TCL_LIB_SPEC,;t t
s,@TCL_SHARED_BUILD@,$TCL_SHARED_BUILD,;t t
s,@TCL_SHLIB_LD_LIBS@,$TCL_SHLIB_LD_LIBS,;t t
s,@TK_CONFIG_SH@,$TK_CONFIG_SH,;t t s,@TK_CONFIG_SH@,$TK_CONFIG_SH,;t t
s,@TK_LIBS@,$TK_LIBS,;t t
s,@TK_LIB_SPEC@,$TK_LIB_SPEC,;t t
s,@TK_XINCLUDES@,$TK_XINCLUDES,;t t
s,@NSGMLS@,$NSGMLS,;t t s,@NSGMLS@,$NSGMLS,;t t
s,@JADE@,$JADE,;t t s,@JADE@,$JADE,;t t
s,@have_docbook@,$have_docbook,;t t s,@have_docbook@,$have_docbook,;t t
......
dnl Process this file with autoconf to produce a configure script. dnl Process this file with autoconf to produce a configure script.
dnl $Header: /cvsroot/pgsql/configure.in,v 1.184 2002/05/05 00:03:28 tgl Exp $ dnl $Header: /cvsroot/pgsql/configure.in,v 1.185 2002/05/24 18:10:17 petere Exp $
dnl
dnl Developers, please strive to achieve this order: dnl Developers, please strive to achieve this order:
dnl dnl
dnl 0. Initialization and options processing dnl 0. Initialization and options processing
...@@ -14,7 +14,9 @@ dnl 7. Functions, global variables ...@@ -14,7 +14,9 @@ dnl 7. Functions, global variables
dnl 8. System services dnl 8. System services
dnl dnl
dnl Read the Autoconf manual for details. dnl Read the Autoconf manual for details.
dnl
m4_pattern_forbid(^PGAC_)dnl to catch undefined macros
dnl
dnl The GNU folks apparently haven't heard that some people don't use dnl The GNU folks apparently haven't heard that some people don't use
dnl Texinfo. Use this sorcery to use "docdir" instead of "infodir". dnl Texinfo. Use this sorcery to use "docdir" instead of "infodir".
m4_define([info], [doc]) m4_define([info], [doc])
...@@ -1201,11 +1203,15 @@ fi ...@@ -1201,11 +1203,15 @@ fi
# Check for Tcl configuration script tclConfig.sh # Check for Tcl configuration script tclConfig.sh
if test "$with_tcl" = yes; then if test "$with_tcl" = yes; then
PGAC_PATH_TCLCONFIGSH([$with_tclconfig]) PGAC_PATH_TCLCONFIGSH([$with_tclconfig])
PGAC_EVAL_TCLCONFIGSH([$TCL_CONFIG_SH],
[TCL_LIB_FILE,TCL_LIBS,TCL_LIB_SPEC,TCL_SHARED_BUILD])
AC_SUBST(TCL_SHLIB_LD_LIBS)dnl don't want to double-evaluate that one
fi fi
# Check for Tk configuration script tkConfig.sh # Check for Tk configuration script tkConfig.sh
if test "$with_tk" = yes; then if test "$with_tk" = yes; then
PGAC_PATH_TKCONFIGSH([$with_tkconfig $with_tclconfig]) PGAC_PATH_TKCONFIGSH([$with_tkconfig $with_tclconfig])
PGAC_EVAL_TCLCONFIGSH([$TK_CONFIG_SH], [TK_LIBS,TK_LIB_SPEC,TK_XINCLUDES])
fi fi
......
# -*-makefile-*- # -*-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, # All PostgreSQL makefiles include this file and use the variables it sets,
...@@ -147,9 +147,16 @@ python_configdir = @python_configdir@ ...@@ -147,9 +147,16 @@ python_configdir = @python_configdir@
krb_srvtab = @krb_srvtab@ 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@ have_docbook = @have_docbook@
DOCBOOKSTYLE = @DOCBOOKSTYLE@ DOCBOOKSTYLE = @DOCBOOKSTYLE@
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
# Copyright (c) 1998, Regents of the University of California # Copyright (c) 1998, Regents of the University of California
# #
# IDENTIFICATION # 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 ...@@ -400,7 +400,10 @@ endif # enable_shared
clean-lib: clean-lib:
rm -f lib$(NAME).a rm -f lib$(NAME).a
ifeq ($(enable_shared), yes) 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 endif
ifeq ($(PORTNAME), win) ifeq ($(PORTNAME), win)
rm -rf $(NAME).def rm -rf $(NAME).def
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
# Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group # Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California # 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 ...@@ -14,13 +14,6 @@ subdir = src/bin/pgtclsh
top_builddir = ../../.. top_builddir = ../../..
include $(top_builddir)/src/Makefile.global 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_srcdir = $(top_srcdir)/src/interfaces/libpgtcl
libpgtcl_builddir = $(top_builddir)/src/interfaces/libpgtcl libpgtcl_builddir = $(top_builddir)/src/interfaces/libpgtcl
...@@ -61,14 +54,5 @@ installdirs: ...@@ -61,14 +54,5 @@ installdirs:
uninstall: uninstall:
rm -f $(DESTDIR)$(bindir)/pgtclsh $(DESTDIR)$(bindir)/pgtksh 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: clean distclean maintainer-clean:
rm -f pgtclAppInit.o pgtkAppInit.o Makefile.tcldefs Makefile.tkdefs pgtclsh pgtksh rm -f pgtclAppInit.o pgtkAppInit.o pgtclsh pgtksh
dep depend:
$(CC) -MM $(CFLAGS) *.c > depend
#! /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
#! /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
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# #
# Makefile for the pltcl shared object # 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 ...@@ -10,7 +10,6 @@ subdir = src/pl/tcl
top_builddir = ../../.. top_builddir = ../../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
-include Makefile.tcldefs
# Find out whether Tcl was built as a shared library --- if not, we # 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 # can't link a shared library that depends on it, and have to forget
...@@ -27,71 +26,39 @@ endif ...@@ -27,71 +26,39 @@ endif
endif endif
# Change following to how shared library that contains references to # The following attempts to figure out what libraries need to be
# libtcl must get built on your system. Since these definitions come # linked with pltcl. The information comes from the tclConfig.sh
# from the tclConfig.sh script, they should work if the shared build # file, but it's mostly bogus. This just might work.
# 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...
ifneq ($(TCL_SHLIB_LD_LIBS),) ifneq ($(TCL_SHLIB_LD_LIBS),)
# link command for a shared lib must mention shared libs it uses # 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 else
ifeq ($(PORTNAME), hpux) ifeq ($(PORTNAME), hpux)
# link command for a shared lib must mention shared libs it uses, # link command for a shared lib must mention shared libs it uses,
# even though Tcl doesn't think so... # even though Tcl doesn't think so...
SHLIB_EXTRA_LIBS=$(TCL_LIBS) -lc SHLIB_LINK = $(TCL_LIB_SPEC) $(TCL_LIBS) -lc
else else
# link command for a shared lib must NOT mention shared libs it uses # link command for a shared lib must NOT mention shared libs it uses
SHLIB_EXTRA_LIBS= SHLIB_LINK = $(TCL_LIB_SPEC)
endif endif
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) include $(top_srcdir)/src/Makefile.shlib
# 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.
ifeq ($(TCL_SHARED_BUILD), 1) ifeq ($(TCL_SHARED_BUILD), 1)
all: $(INFILES) all: all-lib
$(MAKE) -C modules $@ $(MAKE) -C modules $@
pltcl$(DLSUFFIX): pltcl.o
install: all installdirs install: all installdirs
$(INSTALL_SHLIB) $(DLOBJS) $(DESTDIR)$(pkglibdir)/$(DLOBJS) $(INSTALL_SHLIB) $(shlib) $(DESTDIR)$(pkglibdir)/$(NAME)$(DLSUFFIX)
$(MAKE) -C modules $@ $(MAKE) -C modules $@
installdirs: installdirs:
...@@ -99,21 +66,19 @@ installdirs: ...@@ -99,21 +66,19 @@ installdirs:
$(MAKE) -C modules $@ $(MAKE) -C modules $@
uninstall: uninstall:
rm -f $(DESTDIR)$(pkglibdir)/$(DLOBJS) rm -f $(DESTDIR)$(pkglibdir)/$(NAME)$(DLSUFFIX)
$(MAKE) -C modules $@ $(MAKE) -C modules $@
else # TCL_SHARED_BUILD = 0 else # TCL_SHARED_BUILD = 0
all install: # Provide dummy targets for the case where we can't build the shared library.
all:
@echo "*****"; \ @echo "*****"; \
echo "* Cannot build pltcl because Tcl is not a shared library; skipping it."; \ echo "* Cannot build pltcl because Tcl is not a shared library; skipping it."; \
echo "*****" echo "*****"
endif # TCL_SHARED_BUILD = 0 endif # TCL_SHARED_BUILD = 0
Makefile.tcldefs: mkMakefile.tcldefs.sh clean distclean maintainer-clean: clean-lib
$(SHELL) $< '$(TCL_CONFIG_SH)' '$@' rm -f $(OBJS)
clean distclean maintainer-clean:
rm -f $(INFILES) pltcl.o Makefile.tcldefs
$(MAKE) -C modules $@ $(MAKE) -C modules $@
#! /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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment