at [664dc1d6de]
Bounty program for improvements to Tcl and certain Tcl packages.

File artifact 80f0295ff0 part of check-in 664dc1d6de

# --
# This file is a Makefile for the tls Tcl 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-2000 Ajuba Solutions.
# All rights reserved.
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# RCS: @(#) $Id:,v 1.17 2001/06/21 23:33:38 hobbs Exp $


# Enumerate the names of the source files included in this package.
# This will be used when a dist target is added to the Makefile.

tls_SOURCES =	tls.c tlsIO.c tlsBIO.c \
		tlsX509.c fixstrtod.c strncasecmp.c

tls_SCRIPT_FILES = tls.tcl

# Enumerate the names of the object files included in this package.
# These objects are created and linked into the final library.

tls_OBJECTS =	tls.$(OBJEXT) tlsIO.$(OBJEXT) tlsBIO.$(OBJEXT) \
		tlsX509.$(OBJEXT) fixstrtod.$(OBJEXT) strncasecmp.$(OBJEXT)

# The substitution of "tls_LIB_FILE" into the variable name below
# allows us to refer to the objects for the library without knowing the name
# of the library in advance.  It also lets us use the "[email protected]" variable in
# the rule for building the library, so we can refer to both the list of 
# objects and the library itself in a platform-independent manner.

tls_LIB_FILE = @[email protected]

# This is a list of header files to be installed


# Variables and AC_SUBST cases added for tls.

SSL_DIR =		@[email protected]
SSL_LIB_DIR =		@[email protected]
SSL_INCLUDE_DIR =	@[email protected]
SSL_INCLUDE_DIR_NATIVE = @[email protected]

# This is boilerplate from the sample tcl extension
# Nothing of the variables below this line need to be changed.  Please
# check the TARGETS section below to make sure the make targets are
# correct.

SHELL = @[email protected]

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

bindir = @[email protected]
sbindir = @[email protected]
libexecdir = @[email protected]
datadir = @[email protected]
sysconfdir = @[email protected]
sharedstatedir = @[email protected]
localstatedir = @[email protected]
libdir = @[email protected]
infodir = @[email protected]
mandir = @[email protected]
includedir = @[email protected]
oldincludedir = /usr/include

RELPATH = @[email protected]

pkgdatadir = $(datadir)/@[email protected]@[email protected]
pkglibdir = $(libdir)/@[email protected]@[email protected]
pkgincludedir = $(includedir)/@[email protected]@[email protected]

top_builddir = .

INSTALL = @[email protected]
INSTALL_PROGRAM = @[email protected]
INSTALL_DATA = @[email protected]
INSTALL_SCRIPT = @[email protected]
transform = @[email protected]


PACKAGE = @[email protected]
VERSION = @[email protected]
CC = @[email protected]
CFLAGS_DEBUG = @[email protected]
CFLAGS_DEFAULT = @[email protected]
CFLAGS_OPTIMIZE = @[email protected]
CLEANFILES = @[email protected]
EXEEXT = @[email protected]
LDFLAGS_DEBUG = @[email protected]
LDFLAGS_DEFAULT = @[email protected]
LDFLAGS_OPTIMIZE = @[email protected]
MAKE_LIB = @[email protected]
MAKE_SHARED_LIB = @[email protected]
MAKE_STATIC_LIB = @[email protected]
OBJEXT = @[email protected]
RANLIB = @[email protected]
SHLIB_CFLAGS = @[email protected]
SHLIB_LD = @[email protected]
SHLIB_LDFLAGS = @[email protected]
SHLIB_LD_LIBS = @[email protected]
STLIB_LD = @[email protected]
TCL_BIN_DIR = @[email protected]
TCL_DEFS = @[email protected]
TCL_EXTRA_CFLAGS = @[email protected]
TCL_LD_FLAGS = @[email protected]
TCL_LIBS = @[email protected]
TCL_SHLIB_LD_LIBS = @[email protected]
TCL_SRC_DIR = @[email protected]
TCL_DBGX = @[email protected]
TCL_STUB_LIB_FILE = @[email protected]
TCL_STUB_LIB_SPEC = @[email protected]
TCL_TOOL_DIR_NATIVE = @[email protected]
TCL_TOP_DIR_NATIVE = @[email protected]
TCL_UNIX_DIR_NATIVE = @[email protected]
TCL_WIN_DIR_NATIVE = @[email protected]
INCLUDE_DIR_NATIVE = @[email protected]
TCL_BMAP_DIR_NATIVE = @[email protected]
TCL_PLATFORM_DIR_NATIVE = @[email protected]
TCL_GENERIC_DIR_NATIVE = @[email protected]
TCLSH_PROG = @[email protected]

AUTOCONF = autoconf


INCLUDES = @[email protected] $(SSL_INCLUDES)


DEFS = @[email protected] $(EXTRA_CFLAGS)

ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
CONFIGDIR = @[email protected]
mkinstalldirs = $(SHELL) $(CONFIGDIR)/mkinstalldirs

CPPFLAGS = @[email protected]
LIBS = @[email protected]
AR = ar
CFLAGS = @[email protected]
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o [email protected]

# Start of user-definable TARGETS section

# TEA TARGETS.  Please note that the "libraries:" target refers to platform
# independent files, and the "binaries:" target inclues 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)

libraries: $(tls_SCRIPT_FILES)


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

install-binaries: binaries install-lib-binaries install-bin-binaries
	sed -e "s#\@RELPATH\@#$(RELPATH)#" \
	-e "s#\@tls_LIB_FILE\@#$(tls_LIB_FILE)#" \
	< $(srcdir)/ > pkgIndex.tcl
	$(INSTALL_DATA) pkgIndex.tcl $(pkglibdir)

# This rule installs platform-independent files, such as header files.

install-libraries: libraries
	$(mkinstalldirs) $(includedir)
	@echo "Installing header files in $(includedir)"
	@for i in $(GENERIC_HDRS) ; do \
	    echo "Installing $$i" ; \
	    $(INSTALL_DATA) $$i $(includedir) ; \
	$(INSTALL_DATA) $(srcdir)/tls.tcl $(pkglibdir)

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

install-doc: doc
#	$(mkinstalldirs) $(mandir)/man1
#	$(mkinstalldirs) $(mandir)/man3
#	$(mkinstalldirs) $(mandir)/mann
#	@echo "Installing documentation in $(mandir)"
#	@for i in $(srcdir)/*.n; \
#	    do \
# 		echo "Installing $$i"; \
# 		rm -f $(mandir)/mann/$$i; \
# 		$(INSTALL_DATA) $$i $(mandir)/mann ; \
#	    done

test: binaries libraries
	sed -e "s#\@RELPATH\@#.#" -e "s#\@tls_LIB_FILE\@#$(tls_LIB_FILE)#" \
	< $(srcdir)/ > pkgIndex.tcl
	$(TCLSH_PROG) `@[email protected] $(srcdir)/tests/all.tcl` $(TESTFLAGS)


# Enumerate the names of the object files included in this package.
# These objects are created and linked into the final library.  In
# most cases these object files will correspond to the source files
# above.
# $(exampleA_LIB_FILE) should be listed as part of the BINARIES variable
# at the top of the Makefile.  That will ensure that this target is built
# when you run "make binaries".
# You shouldn't need to modify this target, except to change the package
# name from "exampleA" to your package's name.

$(tls_LIB_FILE): $(tls_OBJECTS)
	-rm -f $(tls_LIB_FILE)
	@[email protected]
	$(RANLIB) $(tls_LIB_FILE)

# We need to enumerate the list of .c to .o lines here.
# Unfortunately, there does not seem to be any other way to do this
# in a Makefile-independent way.  We can't use VPATH because it picks up
# object files that may be located in the source directory.
# 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:
# exampleA.$(OBJEXT): $(srcdir)/src/win/exampleA.c
# 	$(COMPILE) -c `@[email protected] $(srcdir)/src/win/exampleA.c` -o [email protected]

tls.$(OBJEXT): $(srcdir)/tls.c
	$(COMPILE) -c `@[email protected] $(srcdir)/tls.c` -o [email protected]

tlsIO.$(OBJEXT): $(srcdir)/tlsIO.c
	$(COMPILE) -c `@[email protected] $(srcdir)/tlsIO.c` -o [email protected]

tlsBIO.$(OBJEXT): $(srcdir)/tlsBIO.c
	$(COMPILE) -c `@[email protected] $(srcdir)/tlsBIO.c` -o [email protected]

tlsX509.$(OBJEXT): $(srcdir)/tlsX509.c
	$(COMPILE) -c `@[email protected] $(srcdir)/tlsX509.c` -o [email protected]

fixstrtod.$(OBJEXT): $(srcdir)/fixstrtod.c
	$(COMPILE) -c `@[email protected] $(srcdir)/fixstrtod.c` -o [email protected]

strncasecmp.$(OBJEXT): $(srcdir)/strncasecmp.c
	$(COMPILE) -c `@[email protected] $(srcdir)/strncasecmp.c` -o [email protected]

tls.tcl: $(srcdir)/tls.tcl
	cp $(srcdir)/tls.tcl tls.tcl

# 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 *.o core *.core
	-rm -f *.$(OBJEXT)
	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)

distclean: clean
	-rm -f *.tab.c
	-rm -f Makefile $(CONFIG_CLEAN_FILES)
	-rm -f config.cache config.log stamp-h stamp-h[0-9]*
	-rm -f config.status

COMPEXE		= gzip
COMPRESS	= tar cvf - $(PKG_DIR) | $(COMPEXE) > $(PKG_DIR).tar.$(COMPEXT)
DIST_ROOT	= /tmp/dist

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

dist: dist-clean $(srcdir)/configure
	mkdir -p $(DIST_DIR)
	cp -p $(srcdir)/README.txt $(srcdir)/ChangeLog $(srcdir)/tls.htm \
		$(srcdir)/configure $(srcdir)/ \
		$(srcdir)/ $(srcdir)/*.c $(srcdir)/*.h \
		$(srcdir)/ $(srcdir)/license.terms \
		$(srcdir)/aclocal.m4 $(srcdir)/tls.tcl \

	mkdir $(DIST_DIR)/config
	cp -p $(srcdir)/config/install-sh $(srcdir)/config/mkinstalldirs \
		$(srcdir)/config/tcl.m4 \

	mkdir $(DIST_DIR)/tests
	cp -p $(srcdir)/tests/*.{tcl,test} $(DIST_DIR)/tests

	mkdir $(DIST_DIR)/tests/certs
	cp -p $(srcdir)/tests/certs/*.{pem,key,req,txt} $(DIST_DIR)/tests/certs

	chmod 664 $(DIST_DIR)/
	chmod 775 $(DIST_DIR)/configure $(DIST_DIR)/
	chmod +x $(DIST_DIR)/config/install-sh

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

# 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.
# Additionally, the .dll files go into the bin directory, but the .lib
# files go into the lib directory.  On Unix platforms, all 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 tclsh8.2 shell)
# You should not have to modify this target.

install-lib-binaries: installdirs
	@list='$(lib_BINARIES)'; for p in $$list; do \
	  if test -f $$p; then \
	    ext=`echo $$p|sed -e "s/.*\.//"`; \
	    if test "x$$ext" = "xdll"; then \
	        echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$p"; \
	        $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$p; \
		lib=`basename $$p|sed -e 's/.[^.]*$$//'`.lib; \
		if test -f $$lib; then \
		    echo " $(INSTALL_PROGRAM) $$lib $(DESTDIR)$(libdir)/$$lib"; \
	            $(INSTALL_PROGRAM) $$lib $(DESTDIR)$(libdir)/$$lib; \
		fi; \
	    else \
		echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libdir)/$$p"; \
	        $(INSTALL_PROGRAM) $$p $(DESTDIR)$(libdir)/$$p; \
	    fi; \
	  else :; fi; \
	@list='$(lib_BINARIES)'; for p in $$list; do \
	  if test -f $$p; then \
	    echo " $(RANLIB) $(DESTDIR)$(bindir)/$$p"; \
	    $(RANLIB) $(DESTDIR)$(bindir)/$$p; \
	  else :; fi; \

# Install binary executables (e.g. .exe files)
# You should not have to modify this target.

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

.SUFFIXES: .c .o .obj

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

	list='$(BINARIES)'; for p in $$list; do \
	  rm -f $(DESTDIR)$(libdir)/$$p; \

	$(mkinstalldirs)  $(DESTDIR)$(libdir)
	$(mkinstalldirs)  $(DESTDIR)$(bindir)
	$(mkinstalldirs)  $(DESTDIR)$(pkglibdir)

.PHONY: all binaries clean depend distclean doc install installdirs \
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.