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

Artifact bca2ec86abc0fd1fe2d891b1961cfcca6f85938c72f64d7ef6f2e7816fc6677d:


#! /usr/bin/env bash

cd "$(dirname "${BASH_SOURCE[0]}")" || exit 1

function make-makefile-vc() {
	local outDir

	outDir="$1"

	cat << \_EOF_ > "${outDir}/Makefile.vc"
# Specify OpenSSL and Tcl parameters here
# -----BEGIN MODIFICATIONS-----
OPENSSL_DIR        = c:/OpenSSL-Win64
OPENSSL_LIBS       = c:/OpenSSL-Win64/lib/VC/static/libssl64MT.lib c:/OpenSSL-Win64/lib/VC/static/libcrypto64MT.lib
OPENSSL_CPPFLAGS   = -DNO_SSL2 -DNO_SSL3

TCL_DIR            = c:/Tcl
# -----END MODIFICATIONS-----
_EOF_

AR
CC
CFLAGS
CPPFLAGS
DEFS
EXTENSION_TARGET
GEN_DH_PARAMS_ARGS
INSTALL
INSTALL_DATA
INSTALL_PROGRAM
LDFLAGS
LIBS
PACKAGE_VERSION
RANLIB
REMOVESYMS
SHOBJFLAGS
SHOBJLDFLAGS
TCLEXT_BUILD
TCLSH_PROG
TCL_DEFS
TCL_PACKAGE_PATH
WEAKENSYMS
exec_prefix
libdir
prefix
srcdir
--
CC = @[email protected]
AR = @[email protected]
RANLIB = @[email protected]
CFLAGS = @[email protected] @[email protected]
CPPFLAGS = @[email protected] [email protected]@ -I. @[email protected] @[email protected]
LDFLAGS = @[email protected] @[email protected]
LIBS = @[email protected]
PACKAGE_VERSION = @[email protected]
prefix = @[email protected]
exec_prefix = @[email protected]
libdir = @[email protected]
TCL_PACKAGE_PATH = @[email protected]
PACKAGE_INSTALL_DIR = $(TCL_PACKAGE_PATH)/tcltls$(PACKAGE_VERSION)
INSTALL = @[email protected]
INSTALL_PROGRAM = @[email protected]
INSTALL_DATA = @[email protected]
VPATH = @[email protected]

all: @[email protected]

@[email protected]: @[email protected]@[email protected]
	mv @[email protected]@[email protected] @[email protected]

# The shared object target
[email protected][email protected]: tls.o tlsBIO.o tlsIO.o tlsX509.o Makefile
	$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o [email protected][email protected] tls.o tlsBIO.o tlsIO.o tlsX509.o $(LIBS)
	[email protected]@ [email protected][email protected]
	[email protected]@ [email protected][email protected]

# The static target
[email protected][email protected]: tls.o tlsBIO.o tlsIO.o tlsX509.o Makefile
	$(AR) rcu [email protected][email protected] tls.o tlsBIO.o tlsIO.o tlsX509.o
	-$(RANLIB) [email protected][email protected]

# Dependencies for all our targets
tls.o: @[email protected]/tls.c @[email protected]/tlsInt.h @[email protected]/tclOpts.h tls.tcl.h dh_params.h Makefile
	$(CC) $(CPPFLAGS) $(CFLAGS) -o tls.o -c @[email protected]/tls.c

tlsBIO.o: @[email protected]/tlsBIO.c @[email protected]/tlsInt.h Makefile
	$(CC) $(CPPFLAGS) $(CFLAGS) -o tlsBIO.o -c @[email protected]/tlsBIO.c

tlsIO.o: @[email protected]/tlsIO.c @[email protected]/tlsInt.h Makefile
	$(CC) $(CPPFLAGS) $(CFLAGS) -o tlsIO.o -c @[email protected]/tlsIO.c

tlsX509.o: @[email protected]/tlsX509.c @[email protected]/tlsInt.h Makefile
	$(CC) $(CPPFLAGS) $(CFLAGS) -o tlsX509.o -c @[email protected]/tlsX509.c

# Create a C-source-ified version of the script resources
# for TclTLS so that we only need a single file to enable
# this extension
tls.tcl.h: @[email protected]/tls.tcl Makefile
	od -A n -v -t xC < '@[email protected]/tls.tcl' > tls.tcl.h.new.1
	sed '[email protected]  *@@g;[email protected]@0x&, @g' < tls.tcl.h.new.1 > tls.tcl.h.new.2
	rm -f tls.tcl.h.new.1
	mv tls.tcl.h.new.2 tls.tcl.h

# Create default DH parameters
dh_params.h: @[email protected]/gen_dh_params Makefile
	sh @[email protected]/gen_dh_params @[email protected] > dh_params.h.new
	mv dh_params.h.new dh_params.h

# Install the extension
install: @[email protected] pkgIndex.tcl
	$(INSTALL) -d '$(DESTDIR)$(PACKAGE_INSTALL_DIR)'
	$(INSTALL_PROGRAM) @[email protected] '$(DESTDIR)$(PACKAGE_INSTALL_DIR)'
	$(INSTALL_DATA)    pkgIndex.tcl '$(DESTDIR)$(PACKAGE_INSTALL_DIR)'

# A convienent helper to undo the installation just done
uninstall:
	rm -f '$(DESTDIR)$(PACKAGE_INSTALL_DIR)/@[email protected]'
	rm -f '$(DESTDIR)$(PACKAGE_INSTALL_DIR)/pkgIndex.tcl'
	-rmdir '$(DESTDIR)$(PACKAGE_INSTALL_DIR)'

# Test target, run the automated test suite
test: @[email protected]
	@[email protected] @[email protected]/tests/all.tcl $(TESTFLAGS) -load "lappend auto_path $(shell pwd)"

# Clean the local build directory for rebuild against the same configuration
clean:
	rm -f tls.o tlsBIO.o tlsIO.o tlsX509.o
	rm -f @[email protected] [email protected][email protected] [email protected][email protected]
	rm -f [email protected][email protected] [email protected][email protected]
	rm -f tls.tcl.h tls.tcl.h.new.1 tls.tcl.h.new.2

# Clean the local build directory back to what it was after unpacking the
# distribution tarball
distclean: clean
	rm -f config.log config.status
	rm -f dh_params.h.new dh_params.h
	rm -f Makefile pkgIndex.tcl
	rm -f tcltls.a.linkadd

# Clean the local build directory back to only thing things that exist in
# version control system
mrproper: distclean
	rm -f @[email protected]/configure @[email protected]/config.sub @[email protected]/config.guess @[email protected]/install-sh
	rm -f @[email protected]/aclocal.m4
	rm -rf @[email protected]/autom4te.cache

.PHONY: all install uninstall clean distclean mrproper test
--
CC = CL
AR = false
RANLIB = false
CFLAGS = $(OPENSSL_CFLAGS) 
CPPFLAGS = $(OPENSSL_CPPFLAGS) -I$(OPENSSL_DIR)/include -I$(TCL_DIR)/include -DPACKAGE_VERSION="\"$(PACKAGE_VERSION)\"" -I.. -I. -DUSE_TCL_STUBS=1 -DUSE_TCL_STUBS=1
LDFLAGS =  -LD
LIBS = $(OPENSSL_LIBS) $(TCL_DIR)/lib/libtclstub86.lib ws2_32.lib advapi32.lib crypt32.lib user32.lib
PACKAGE_VERSION = 1.7.19
prefix = /
exec_prefix = /
libdir = /lib
TCL_PACKAGE_PATH = 
PACKAGE_INSTALL_DIR = $(TCL_PACKAGE_PATH)/tcltls$(PACKAGE_VERSION)
INSTALL = false
INSTALL_PROGRAM = false
INSTALL_DATA = false
VPATH = ..

all: tcltls.dll

tcltls.dll: shared-tcltls.dll
	REN shared-tcltls.dll tcltls.dll

# The shared object target
shared-tcltls.dll: tls.o tlsBIO.o tlsIO.o tlsX509.o Makefile.vc
	$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -Feshared-tcltls.dll tls.o tlsBIO.o tlsIO.o tlsX509.o $(LIBS)

# The static target
static-tcltls.dll: tls.o tlsBIO.o tlsIO.o tlsX509.o Makefile.vc
	$(AR) rcu static-tcltls.dll tls.o tlsBIO.o tlsIO.o tlsX509.o
	-$(RANLIB) static-tcltls.dll

# Dependencies for all our targets
tls.o: ../tls.c ../tlsInt.h ../tclOpts.h tls.tcl.h dh_params.h Makefile.vc
	$(CC) $(CPPFLAGS) $(CFLAGS) -Fotls.o -c ../tls.c

tlsBIO.o: ../tlsBIO.c ../tlsInt.h Makefile.vc
	$(CC) $(CPPFLAGS) $(CFLAGS) -FotlsBIO.o -c ../tlsBIO.c

tlsIO.o: ../tlsIO.c ../tlsInt.h Makefile.vc
	$(CC) $(CPPFLAGS) $(CFLAGS) -FotlsIO.o -c ../tlsIO.c

tlsX509.o: ../tlsX509.c ../tlsInt.h Makefile.vc
	$(CC) $(CPPFLAGS) $(CFLAGS) -FotlsX509.o -c ../tlsX509.c

# Create a C-source-ified version of the script resources
# for TclTLS so that we only need a single file to enable
# this extension
# Create default DH parameters
.c.o:

# Install the extension
install: tcltls.dll pkgIndex.tcl
	$(INSTALL) -d '$(DESTDIR)$(PACKAGE_INSTALL_DIR)'
	$(INSTALL_PROGRAM) tcltls.dll '$(DESTDIR)$(PACKAGE_INSTALL_DIR)'
	$(INSTALL_DATA)    pkgIndex.tcl '$(DESTDIR)$(PACKAGE_INSTALL_DIR)'

# A convienent helper to undo the installation just done
uninstall:
	DEL /F '$(DESTDIR)$(PACKAGE_INSTALL_DIR)/tcltls.dll'
	DEL /F '$(DESTDIR)$(PACKAGE_INSTALL_DIR)/pkgIndex.tcl'
	-DEL /F '$(DESTDIR)$(PACKAGE_INSTALL_DIR)'

# Test target, run the automated test suite
# Clean the local build directory for rebuild against the same configuration
clean:
	DEL /F tls.o tlsBIO.o tlsIO.o tlsX509.o
	DEL /F tcltls.dll shared-tcltls.dll static-tcltls.dll
	DEL /F shared-tcltls.dll.def shared-tcltls.dll.lib

# Clean the local build directory back to what it was after unpacking the
# distribution tarball
distclean: clean
	DEL /F config.log config.status
	DEL /F tcltls.a.linkadd

# Clean the local build directory back to only thing things that exist in
# version control system
mrproper: distclean
	DEL /F ../configure ../config.sub ../config.guess ../install-sh
	DEL /F ../aclocal.m4
	DEL /F ../autom4te.cache

.PHONY: all install uninstall clean distclean mrproper test

}

mkdir ../win || exit 1
make-makefile-vc ../win
cd ../win || exit 1

sed 's|@[email protected]|..|g;s|@[email protected]|fallback|g' < ../Makefile.in > Makefile
make tls.tcl.h dh_params.h
rm -f Makefile