Artifact Content
Bounty program for improvements to Tcl and certain Tcl packages.

Artifact 6fc92b1502e5066bc4918b2d4eac298b2dd311350b2e74d800da13cc60627884:

# --
#	This file is a Makefile for Sample TEA Extension.  If it has the name
#	"" then it is a template for a Makefile;  to generate the
#	actual Makefile, run "./configure", which is a configuration script
#	generated by the "autoconf" program (constructs like "@[email protected]" will get
#	replaced in the actual Makefile.
# Copyright (c) 1999 Scriptics Corporation.
# Copyright (c) 2002-2005 ActiveState Corporation.
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.

# Nothing of the variables below this line should need to be changed.
# Please check the TARGETS section below to make sure the make targets
# are correct.

# The names of the source files is defined in the configure script.
# The object files are used for linking into the final library.
# This will be used when a dist target is added to the Makefile.
# It is not important to specify the directory, as long as it is the
# $(srcdir) or in the generic, win or unix subdirectory.

PKG_SOURCES	= @[email protected]
PKG_OBJECTS	= @[email protected]

# PKG_TCL_SOURCES identifies Tcl runtime files that are associated with
# this package that need to be installed, if any.

PKG_TCL_SOURCES = @[email protected]

# This is a list of public header files to be installed, if any.

PKG_HEADERS	= @[email protected]

# "PKG_LIB_FILE" refers to the library (dynamic or static as per
# configuration options) composed of the named objects.

PKG_LIB_FILE	= @[email protected]


SHELL		= @[email protected]

srcdir		= @[email protected]
prefix		= @[email protected]
exec_prefix	= @[email protected]

bindir		= @[email protected]
libdir		= @[email protected]
includedir	= @[email protected]
datarootdir	= @[email protected]
datadir		= @[email protected]
mandir		= @[email protected]


pkgdatadir	= $(datadir)/$(PKG_DIR)
pkglibdir	= $(libdir)/$(PKG_DIR)
pkgincludedir	= $(includedir)/$(PKG_DIR)

top_builddir	= .

INSTALL		= @[email protected] $(INSTALL_OPTIONS)
INSTALL_DATA_DIR = @[email protected]
INSTALL_DATA	= @[email protected]
INSTALL_PROGRAM	= @[email protected]
INSTALL_SCRIPT	= @[email protected]
INSTALL_LIBRARY	= @[email protected]

PACKAGE_NAME	= @[email protected]
PACKAGE_VERSION	= @[email protected]
CC		= @[email protected]
CFLAGS_DEFAULT	= @[email protected]
CFLAGS_WARNING	= @[email protected]
EXEEXT		= @[email protected]
LDFLAGS_DEFAULT	= @[email protected]
MAKE_LIB	= @[email protected]
MAKE_SHARED_LIB	= @[email protected]
MAKE_STATIC_LIB	= @[email protected]
MAKE_STUB_LIB	= @[email protected]
OBJEXT		= @[email protected]
RANLIB		= @[email protected]
RANLIB_STUB	= @[email protected]
SHLIB_CFLAGS	= @[email protected]
SHLIB_LD	= @[email protected]
SHLIB_LD_LIBS	= @[email protected]
STLIB_LD	= @[email protected]
#TCL_DEFS	= @[email protected]
TCL_BIN_DIR	= @[email protected]
TCL_SRC_DIR	= @[email protected]
#TK_BIN_DIR	= @[email protected]
#TK_SRC_DIR	= @[email protected]

TDBC_VERSION	= @[email protected]
TDBC_SRC_DIR	= @[email protected]
TDBC_BIN_DIR	= @[email protected]
TDBC_LIB_FILE	= @[email protected]

# Not used, but retained for reference of what libs Tcl required
#TCL_LIBS	= @[email protected]

# TCLLIBPATH seeds the auto_path in Tcl's init.tcl so we can test our
# package without installing.  The other environment variables allow us
# to test against an uninstalled Tcl.  Add special env vars that you
# require for testing here (like TCLX_LIBRARY).

EXTRA_PATH	= $(top_builddir):$(TCL_BIN_DIR)
#EXTRA_PATH	= $(top_builddir):$(TCL_BIN_DIR):$(TK_BIN_DIR)
TCLLIBPATH	= $(top_builddir) $(TDBC_BIN_DIR)
TCLSH_ENV	= TCL_LIBRARY=`@[email protected] $(TCL_SRC_DIR)/library` \
		  TDBC_LIBRARY=`@[email protected] @[email protected]`
PKG_ENV		= @[email protected]="$(EXTRA_PATH):$(@[email protected])" \
		  PATH="$(EXTRA_PATH):$(PATH)" \
		  TDBCPOSTGRES_LIBRARY=`@[email protected] $(srcdir)/library`

TCLSH_PROG	= @[email protected]

#WISH_ENV	= TK_LIBRARY=`@[email protected] $(TK_SRC_DIR)/library`
#WISH_PROG	= @[email protected]

SHARED_BUILD	= @[email protected]

INCLUDES	= @[email protected] @[email protected]
#INCLUDES	= @[email protected] @[email protected] @[email protected] @[email protected]

PKG_CFLAGS	= @[email protected]

# TCL_DEFS is not strictly need here, but if you remove it, then you
# must make sure that checks for the necessary components
# that your library may use.  TCL_DEFS can actually be a problem if
# you do not compile with a similar machine setup as the Tcl core was
# compiled with.
#DEFS		= $(TCL_DEFS) @[email protected] $(PKG_CFLAGS)
DEFS		= @[email protected] $(PKG_CFLAGS)

# Move pkgIndex.tcl to 'BINARIES' var if it is generated in the Makefile
CONFIG_CLEAN_FILES = Makefile pkgIndex.tcl
CLEANFILES	= @[email protected]

CPPFLAGS	= @[email protected]
LIBS		= @[email protected] @[email protected]
AR		= @[email protected]
CFLAGS		= @[email protected]

VALGRIND		= valgrind
VALGRINDARGS		= --tool=memcheck --num-callers=16 --leak-resolution=high --leak-check=yes --show-reachable=yes -v


# Start of user-definable TARGETS section

# TEA TARGETS.  Please note that the "libraries:" target refers to platform
# independent files, and the "binaries:" target includes executable programs and
# platform-dependent libraries.  Modify these targets so that they install
# the various pieces of your package.  The make and install rules
# for the BINARIES that you specified above have already been done.

all: binaries libraries doc

# The binaries target builds executable programs, Windows .dll's, unix
# shared/static libraries, and any other platform-dependent files.
# The list of targets to build for "binaries:" is specified at the top
# of the Makefile, in the "BINARIES" variable.

binaries: $(BINARIES)


# Your doc target should differentiate from doc builds (by the developer)
# and doc installs (see install-doc), which just install the docs on the
# end user machine when building from source.


install: all install-binaries install-libraries install-doc

install-binaries: binaries install-lib-binaries install-bin-binaries

# This rule installs platform-independent files, such as header files.
# The list=...; for p in $$list handles the empty list case x-platform.

install-libraries: libraries
	@$(INSTALL_DATA_DIR) $(DESTDIR)$(includedir)
	@echo "Installing header files in $(DESTDIR)$(includedir)"
	@list='$(PKG_HEADERS)'; for i in $$list; do \
	    echo "Installing $(srcdir)/$$i" ; \
	    $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(includedir) ; \

# Install documentation.  Unix manpages should go in the $(mandir)
# directory.

install-doc: doc
	@$(INSTALL_DATA_DIR) $(DESTDIR)$(mandir)/mann
	@echo "Installing documentation in $(DESTDIR)$(mandir)"
	@list='$(srcdir)/doc/*.n'; for i in $$list; do \
	    echo "Installing $$i"; \
	    $(INSTALL_DATA) $$i $(DESTDIR)$(mandir)/mann ; \

test: binaries libraries
	$(TCLSH) `@[email protected] $(srcdir)/tests/all.tcl` $(TESTFLAGS) \
		-load "package ifneeded tdbc::postgres $(PACKAGE_VERSION) \
			[list source `@[email protected] $(srcdir)/library/tdbcpostgres.tcl`]\;[list load `@[email protected] $(PKG_LIB_FILE)` $(PACKAGE_NAME)]"

shell: binaries libraries



# $(PKG_LIB_FILE) should be listed as part of the BINARIES variable
# mentioned above.  That will ensure that this target is built when you
# run "make binaries".
# The $(PKG_OBJECTS) objects are created and linked into the final
# library.  In most cases these object files will correspond to the
# source files above.

	-rm -f $(PKG_LIB_FILE)

# We need to enumerate the list of .c to .o lines here.
# In the following lines, $(srcdir) refers to the toplevel directory
# containing your extension.  If your sources are in a subdirectory,
# you will have to modify the paths to reflect this:
# sample.$(OBJEXT): $(srcdir)/generic/sample.c
# 	$(COMPILE) -c `@[email protected] $(srcdir)/generic/sample.c` -o [email protected]
# Setting the VPATH variable to a list of paths will cause the makefile
# to look into these paths when resolving .c to .obj dependencies.
# As necessary, add $(srcdir):$(srcdir)/compat:....

VPATH = $(srcdir):$(srcdir)/generic:$(srcdir)/unix:$(srcdir)/win

[email protected]@:
	$(COMPILE) -c `@[email protected] $<` -o [email protected]

# Distribution creation
# You may need to tweak this target to make it work correctly.

#COMPRESS	= tar cvf $(PKG_DIR).tar $(PKG_DIR); compress $(PKG_DIR).tar
COMPRESS	= tar zcvf $(PKG_DIR).tar.gz $(PKG_DIR)
DIST_ROOT	= /tmp/dist


	rm -rf $(DIST_DIR) $(DIST_ROOT)/$(PKG_DIR).tar.*

dist: dist-clean
	$(DIST_INSTALL_DATA) $(srcdir)/license.terms \
		$(srcdir)/ChangeLog $(srcdir)/README $(srcdir)/TODO \
		$(srcdir)/aclocal.m4 $(srcdir)/ \
		$(srcdir)/ $(srcdir)/ \
	$(DIST_INSTALL_SCRIPT) $(srcdir)/configure $(DIST_DIR)/

	$(INSTALL_DATA_DIR) $(DIST_DIR)/tclconfig
	$(DIST_INSTALL_DATA) $(srcdir)/tclconfig/README.txt \
		$(srcdir)/tclconfig/tcl.m4 $(srcdir)/tclconfig/install-sh \

	$(DIST_INSTALL_DATA) $(srcdir)/doc/tdbc_postgres.n $(DIST_DIR)/doc/

	$(DIST_INSTALL_DATA) $(srcdir)/generic/fakepq.h $(srcdir)/generic/pqStubDefs.txt \
		$(srcdir)/generic/pqStubInit.c $(srcdir)/generic/pqStubs.h \
		$(srcdir)/generic/tdbcpostgres.c \
		$(srcdir)/generic/int2ptr_ptr2int.h \

	$(DIST_INSTALL_DATA) $(srcdir)/library/tdbcpostgres.tcl $(DIST_DIR)/library/

	$(DIST_INSTALL_DATA) $(srcdir)/tests/all.tcl $(srcdir)/tests/tdbcpostgres.test \

	$(INSTALL_DATA_DIR) $(DIST_DIR)/tests/future
	$(DIST_INSTALL_DATA) $(srcdir)/tests/future/tdbcpostgre.test.tcl \

	$(DIST_INSTALL_DATA) $(srcdir)/win/ $(srcdir)/win/nmakehlp.c \
		$(srcdir)/win/ $(srcdir)/win/ \
		$(srcdir)/win/ $(DIST_DIR)/win/

	(cd $(DIST_ROOT); $(COMPRESS);)

# How to rebuild the package's stub table.

genstubs: $(TDBC_SRC_DIR)/tools/genExtStubs.tcl $(srcdir)/generic/pqStubDefs.txt
	@echo $(TCLSH_PROGRAM) $(TDBC_SRC_DIR)/tools/genExtStubs.tcl \
		$(srcdir)/generic/pqStubDefs.txt \
		$(srcdir)/generic/pqStubs.h \
	@$(TCLSH) $(TDBC_SRC_DIR)/tools/genExtStubs.tcl \
		$(srcdir)/generic/pqStubDefs.txt \
		$(srcdir)/generic/pqStubs.h \

# End of user-definable section

# Don't modify the file to clean here.  Instead, set the "CLEANFILES"
# variable in

	-test -z "$(BINARIES)" || rm -f $(BINARIES)
	-rm -f *.$(OBJEXT) core *.core
	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)

distclean: clean
	-rm -f *.tab.c
	-rm -f config.cache config.log config.status

# Install binary object libraries.  On Windows this includes both .dll and
# .lib files.  Because the .lib files are not explicitly listed anywhere,
# we need to deduce their existence from the .dll file of the same name.
# Library files go into the lib directory.
# In addition, this will generate the pkgIndex.tcl
# file in the install location (assuming it can find a usable tclsh shell)
# You should not have to modify this target.

install-lib-binaries: binaries
	@$(INSTALL_DATA_DIR) $(DESTDIR)$(pkglibdir)
	@list='$(lib_BINARIES)'; for p in $$list; do \
	  if test -f $$p; then \
	    echo " $(INSTALL_LIBRARY) $$p $(DESTDIR)$(pkglibdir)/$$p"; \
	    $(INSTALL_LIBRARY) $$p $(DESTDIR)$(pkglibdir)/$$p; \
	    stub=`echo $$p|sed -e "s/.*\(stub\).*/\1/"`; \
	    if test "x$$stub" = "xstub"; then \
		echo " $(RANLIB_STUB) $(DESTDIR)$(pkglibdir)/$$p"; \
		$(RANLIB_STUB) $(DESTDIR)$(pkglibdir)/$$p; \
	    else \
		echo " $(RANLIB) $(DESTDIR)$(pkglibdir)/$$p"; \
		$(RANLIB) $(DESTDIR)$(pkglibdir)/$$p; \
	    fi; \
	    ext=`echo $$p|sed -e "s/.*\.//"`; \
	    if test "x$$ext" = "xdll"; then \
		lib=`basename $$p|sed -e 's/.[^.]*$$//'`.lib; \
		if test -f $$lib; then \
		    echo " $(INSTALL_DATA) $$lib $(DESTDIR)$(pkglibdir)/$$lib"; \
	            $(INSTALL_DATA) $$lib $(DESTDIR)$(pkglibdir)/$$lib; \
		fi; \
	    fi; \
	  fi; \
	@list='$(PKG_TCL_SOURCES)'; for p in $$list; do \
	  if test -f $(srcdir)/$$p; then \
	    destp=`basename $$p`; \
	    echo " Install $$destp $(DESTDIR)$(pkglibdir)/$$destp"; \
	    $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkglibdir)/$$destp; \
	  fi; \
	@if test "x$(SHARED_BUILD)" = "x1"; then \
	    echo " Install pkgIndex.tcl $(DESTDIR)$(pkglibdir)"; \
	    $(INSTALL_DATA) pkgIndex.tcl $(DESTDIR)$(pkglibdir); \

# Install binary executables (e.g. .exe files and dependent .dll files)
# This is for files that must go in the bin directory (located next to
# wish and tclsh), like dependent .dll files on Windows.
# You should not have to modify this target, except to define bin_BINARIES
# above if necessary.

install-bin-binaries: binaries
	@list='$(bin_BINARIES)'; for p in $$list; do \
	  if test -f $$p; then \
	    echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$p"; \
	    $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$p; \
	  fi; \

Makefile: $(srcdir)/  $(top_builddir)/config.status
	cd $(top_builddir) \
	  && [email protected] CONFIG_HEADERS= $(SHELL) ./config.status

	list='$(lib_BINARIES)'; for p in $$list; do \
	  rm -f $(DESTDIR)$(pkglibdir)/$$p; \
	list='$(PKG_TCL_SOURCES)'; for p in $$list; do \
	  p=`basename $$p`; \
	  rm -f $(DESTDIR)$(pkglibdir)/$$p; \
	list='$(bin_BINARIES)'; for p in $$list; do \
	  rm -f $(DESTDIR)$(bindir)/$$p; \

.PHONY: all binaries clean depend distclean doc install libraries test

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.