Index: README
==================================================================
--- README
+++ README
@@ -59,11 +59,14 @@
 		c. ./kitcreator
 
 	9. Create a Tclkit with Metakit4 support, but using Zip for storage:
 		a. $ ./kitcreator --enable-kit-storage=zip
 
-	10. Create a KitDLL without Metakit support (will not create a Tclkit
+	10. Create a Tclkit with Metakit4 support, but using C-VFS for storage
+		a. $ ./kitcreator --enable-kit-storage=cvfs
+
+	11. Create a KitDLL without Metakit support (will not create a Tclkit
 	    binary, just the library):
 		a. $ KITCREATOR_PKGS='tk itcl kitdll'
 		b. $ export KITCREATOR_PKGS
 		c. $ ./kitcreator
 

Index: build/test/test
==================================================================
--- build/test/test
+++ build/test/test
@@ -261,11 +261,11 @@
 					echo ""
 					echo ""
 					echo " *** Building KitDLL test driver (tclsh)"
 					echo ""
 
-					cd kitdll/build/kitdll-*/ || exit 1
+					cd kitsh/build/kitsh-*/ || exit 1
 					make tclsh
 					cp tclsh ../../../
 				) >> "${buildlog}" 2>&1
 			fi
 

Index: kitcreator
==================================================================
--- kitcreator
+++ kitcreator
@@ -20,11 +20,11 @@
 
 	mode="distclean"
 fi
 
 # Define the list of all packages, for cleaning purposes
-KITCREATOR_ALLPKGS="kitsh tcl tclvfs zlib tk itcl mk4tcl thread kitdll"
+KITCREATOR_ALLPKGS="kitsh tcl tclvfs zlib tk itcl mk4tcl thread"
 for pkg in ${KITCREATOR_ALLPKGS}; do
 	rm -f "${pkg}/build.log"
 	rm -rf "${pkg}/out" "${pkg}/inst" "${pkg}/build"
 
 	rm -rf "${pkg}/src"/tmp-*
@@ -100,11 +100,11 @@
 fi
 export KITCREATOR_ICON KITCREATOR_RC
 
 failedpkgs=""
 buildfailed="0"
-for pkg in tcl tclvfs zlib ${KITCREATOR_PKGS} "${KITTARGET}"; do
+for pkg in tcl tclvfs zlib ${KITCREATOR_PKGS} kitsh; do
 	echo -n "Building ${pkg} ..."
 
 	failed="0"
 	(
 		cd "${pkg}" >/dev/null 2>/dev/null || exit 1
@@ -137,9 +137,9 @@
 
 if [ "${buildfailed}" != "0" ]; then
 	echo 'WARNING: Build is likely incomplete or failed.' >&2
 fi
 
-cp 'kitdll/build'/kitdll-*/libtclkit* . >/dev/null 2>/dev/null
+cp 'kitsh/build'/kitsh-*/libtclkit* . >/dev/null 2>/dev/null
 cp 'kitsh/build'/kitsh-*/kit "tclkit-${TCLVERS}" >/dev/null 2>/dev/null
 
 exit "${buildfailed}"

DELETED kitdll/build.sh
Index: kitdll/build.sh
==================================================================
--- kitdll/build.sh
+++ /dev/null
@@ -1,142 +0,0 @@
-#! /bin/bash
-
-if [ ! -f 'build.sh' ]; then
-	echo 'ERROR: This script must be run from the directory it is in' >&2
-
-	exit 1
-fi
-if [ -z "${TCLVERS}" ]; then
-	echo 'ERROR: The TCLVERS environment variable is not set' >&2
-
-	exit 1
-fi
-
-KITDLLVERS="0.0"
-BUILDDIR="$(pwd)/build/kitdll-${KITDLLVERS}"
-OUTDIR="$(pwd)/out"
-INSTDIR="$(pwd)/inst"
-OTHERPKGSDIR="$(pwd)/../"
-export KITDLLVERS BUILDDIR OUTDIR INSTDIR OTHERPKGSDIR
-
-rm -rf 'build' 'out' 'inst'
-mkdir 'out' 'inst' || exit 1
-
-(
-	cp -r 'buildsrc' 'build'
-	cd "${BUILDDIR}" || exit 1
-
-	# Fix up archives that Tcl gets wrong
-	for archive in ../../../tcl/inst/lib/dde*/tcldde*.a ../../../tcl/inst/lib/reg*/tclreg*.a; do
-		if [ ! -f "${archive}" ]; then
-			continue
-		fi
-
-		rm -rf __TEMP__
-		(
-			mkdir __TEMP__ || exit 1
-			cd __TEMP__
-
-			## Patch archive name
-			archive="../${archive}"
-
-			"${AR:-ar}" x "${archive}" || exit 1
-
-			rm -f "${archive}"
-
-			"${AR:-ar}" cr "${archive}" *.o || exit 1
-			"${RANLIB:-ranlib}" "${archive}" || true
-		)
-	done
-
-	# Determine how we invoke a Tcl interpreter
-	for testsh in "${TCLSH_NATIVE:-false}" "${TCLKIT:-tclkit}"; do
-		if echo 'exit 0' | "${testsh}" >/dev/null 2>/dev/null; then
-			TCLSH_NATIVE="${testsh}"
-
-			break
-		fi
-	done
-
-	# Cleanup, just incase the incoming directory was not pre-cleaned
-	${MAKE:-make} distclean >/dev/null 2>/dev/null
-	rm -rf "starpack.vfs"
-
-	# Create VFS directory
-	mkdir "starpack.vfs"
-	mkdir "starpack.vfs/lib"
-
-	## Copy in required built directories
-	cp -r "${OTHERPKGSDIR}"/*/out/* 'starpack.vfs/'
-
-	## Rename the "vfs" package directory to what "boot.tcl" expects
-	mv 'starpack.vfs/lib'/vfs* 'starpack.vfs/lib/vfs'
-
-	## Install "boot.tcl"
-	cp 'boot.tcl' 'starpack.vfs/'
-
-	# Include extra objects as required
-	## Initialize list of extra objects
-	EXTRA_OBJS=""
-
-	## Figure out if zlib compiled (if not, the system zlib will be used and we
-	## will need to have that present)
-	ZLIBDIR="$(cd "${OTHERPKGSDIR}/zlib/inst" 2>/dev/null && pwd)"
-	export ZLIBDIR
-	if [ -n "${ZLIBDIR}" -a -f "${ZLIBDIR}/lib/libz.a" ]; then
-		EXTRA_OBJS="${EXTRA_OBJS} ${ZLIBDIR}/lib/libz.a"
-
-		### Add lib directory for zlib
-		LDFLAGS="${LDFLAGS} -L${ZLIBDIR}/lib"
-		export LDFLAGS
-
-		### Add include directory for zlib
-		CFLAGS="${CFLAGS} -I${ZLIBDIR}/include"
-		CPPFLAGS="${CPPFLAGS} -I${ZLIBDIR}/include"
-		export CFLAGS CPPFLAGS
-	fi
-
-	## Tk Resources (needed for Win32 support)
-	TKDIR="$(cd "${OTHERPKGSDIR}/tk/inst" && pwd)"
-	TKRSRC="${TKDIR}/lib/tkbase.res.o"
-	if [ -n "${TKDIR}" -a -f "${TKRSRC}" ]; then
-		EXTRA_OBJS="${EXTRA_OBJS} ${TKRSRC}"
-	fi
-
-	## Export to the environment, to be picked up by the "configure" script
-	export EXTRA_OBJS
-
-	# Build KitDLL
-	echo "Running: ./configure --with-tcl=\"${TCLCONFIGDIR}\" ${CONFIGUREEXTRA}"
-	./configure --with-tcl="${TCLCONFIGDIR}" ${CONFIGUREEXTRA}
-
-	echo "Running: ${MAKE:-make}"
-	${MAKE:-make} TCLSH_NATIVE="${TCLSH_NATIVE}" || exit 1
-
-	# Strip the KitDLL of debugging symbols, if possible
-	"${STRIP:-strip}" -g libtclkit* >/dev/null 2>/dev/null
-
-	# Fix up Win32 DLL names
-	## .DLL.A -> .LIB
-	for file in libtclkit*.dll.a; do
-		if [ ! -f "${file}" ]; then
-			continue
-		fi
-
-		newfile="$(basename "${file}" .dll.a).lib"
-		mv "${file}" "${newfile}"
-	done
-
-	## .DLL.DEF -> .DEF
-	for file in libtclkit*.dll.def; do
-		if [ ! -f "${file}" ]; then
-			continue
-		fi
-
-		newfile="$(basename "${file}" .dll.def).def"
-		mv "${file}" "${newfile}"
-	done
-
-	exit 0
-) || exit 1
-
-exit 0

DELETED kitdll/buildsrc/kitdll-0.0/Makefile.in
Index: kitdll/buildsrc/kitdll-0.0/Makefile.in
==================================================================
--- kitdll/buildsrc/kitdll-0.0/Makefile.in
+++ /dev/null
@@ -1,65 +0,0 @@
-CC = @CC@
-OBJCOPY = @OBJCOPY@
-CFLAGS = @CFLAGS@ @SHOBJFLAGS@ -Wall
-CPPFLAGS = @CPPFLAGS@ @DEFS@ -DKITDLL_MAKE_LOADABLE=1
-WISH_CFLAGS = @WISH_CFLAGS@
-LDFLAGS = @LDFLAGS@
-SHOBJLDFLAGS = @SHOBJLDFLAGS@
-LIBS = @LIBS@
-STATICLIBS = @ARCHS@
-STRIPLIBS = @STRIPLIBS@ @EXTRA_OBJS@
-OBJS = vfs_kitdll_data_tcl.o kitInit.o rechan.o pwb.o zlib.o
-EXTRA_OBJS = @EXTRA_OBJS@
-TCLSH_NATIVE = tclsh
-
-# Default target
-all: libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@
-
-# Build targets
-## VFS Build
-vfs_kitdll_data_tcl.o: vfs_kitdll_data_tcl.c
-vfs_kitdll_data_tcl.c: dir2c.tcl starpack.vfs vfs_kitdll_data.c
-	"$(TCLSH_NATIVE)" dir2c.tcl tcl starpack.vfs > vfs_kitdll_data_tcl.c
-
-## Tclkit Build
-kitInit.o: kitInit.c vfs_kitdll.tcl.h
-vfs_kitdll.tcl.h: vfs_kitdll.tcl
-	"$(TCLSH_NATIVE)" ./stringify.tcl vfs_kitdll.tcl > vfs_kitdll.tcl.h
-
-## Extensions
-rechan.o: rechan.c
-pwb.o: pwb.c
-zlib.o: zlib.c
-
-## DLL Build
-libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@: $(OBJS) $(EXTRA_OBJS)
-	-for striplib in $(STRIPLIBS); do $(OBJCOPY) --weaken "$${striplib}"; done
-	$(CC) $(CPPFLAGS) $(CFLAGS) -o libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ $(OBJS) $(EXTRA_OBJS) $(LDFLAGS) $(SHOBJLDFLAGS) @WHOLEARCHIVE@ $(STATICLIBS) @NOWHOLEARCHIVE@ $(LIBS)
-
-# Test driver
-tclsh.o: tclsh.c
-tclsh: tclsh.o $(EXTRA_OBJS) libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@
-	$(CC) $(CPPFLAGS) $(CFLAGS) -o tclsh tclsh.o $(EXTRA_OBJS) -L. -ltclkit@KITDLL_LIB_VERSION@ -Wl,-rpath,.
-
-wish.o: wish.c
-wish: wish.o $(EXTRA_OBJS) libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@
-	$(CC) $(CPPFLAGS) $(CFLAGS) $(WISH_CFLAGS) -o wish wish.o $(EXTRA_OBJS) -L. -ltclkit@KITDLL_LIB_VERSION@ -Wl,-rpath,.
-
-# Cleanup routeines
-clean:
-	rm -f libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@
-	rm -f $(OBJS)
-	rm -f vfs_kitdll_data_tcl.c
-	rm -f vfs_kitdll.tcl.h
-	rm -f tclsh.o tclsh tclsh.exe
-	rm -f wish.o wish wish.exe
-
-distclean: clean
-	rm -f config.status config.log
-	rm -f *~
-	rm -f Makefile
-	rm -rf starpack.vfs
-
-mrproper: distclean
-
-.PHONY: all clean distclean

DELETED kitdll/buildsrc/kitdll-0.0/aclocal.m4
Index: kitdll/buildsrc/kitdll-0.0/aclocal.m4
==================================================================
--- kitdll/buildsrc/kitdll-0.0/aclocal.m4
+++ /dev/null
@@ -1,429 +0,0 @@
-dnl Usage:
-dnl    DC_TEST_SHOBJFLAGS(shobjflags, shobjldflags, action-if-not-found)
-dnl
-AC_DEFUN(DC_TEST_SHOBJFLAGS, [
-  AC_SUBST(SHOBJFLAGS)
-  AC_SUBST(SHOBJLDFLAGS)
-
-  OLD_LDFLAGS="$LDFLAGS"
-  SHOBJFLAGS=""
-
-  LDFLAGS="$OLD_LDFLAGS $1 $2"
-
-  AC_TRY_LINK([#include <stdio.h>
-int unrestst(void);], [ printf("okay\n"); unrestst(); return(0); ], [ SHOBJFLAGS="$1"; SHOBJLDFLAGS="$2" ], [
-  LDFLAGS="$OLD_LDFLAGS"
-  $3
-])
-
-  LDFLAGS="$OLD_LDFLAGS"
-])
-
-AC_DEFUN(DC_GET_SHOBJFLAGS, [
-  AC_SUBST(SHOBJFLAGS)
-  AC_SUBST(SHOBJLDFLAGS)
-
-  AC_MSG_CHECKING(how to create shared objects)
-
-  if test -z "$SHOBJFLAGS" -a -z "$SHOBJLDFLAGS"; then
-    DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic], [
-      DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared], [
-        DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -mimpure-text], [
-          DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -mimpure-text], [
-            DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -Wl,-G,-z,textoff], [
-              DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -Wl,-G,-z,textoff], [
-                DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -dynamiclib -flat_namespace -undefined suppress -bind_at_load], [
-                  DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress -bind_at_load], [
-                    DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-Wl,-dynamiclib -Wl,-flat_namespace -Wl,-undefined,suppress -Wl,-bind_at_load], [
-                      DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress], [
-                        DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib], [
-                          AC_MSG_RESULT(cant)
-                          AC_MSG_ERROR([We are unable to make shared objects.])
-                        ])
-                      ])
-                    ])
-                  ])
-                ])
-              ])
-            ])
-          ])
-        ])
-      ])
-    ])
-  fi
-
-  AC_MSG_RESULT($SHOBJLDFLAGS $SHOBJFLAGS)
-])
-
-AC_DEFUN(DC_CHK_OS_INFO, [
-	AC_CANONICAL_HOST
-	AC_SUBST(SHOBJEXT)
-	AC_SUBST(AREXT)
-        AC_SUBST(SHOBJFLAGS)
-        AC_SUBST(SHOBJLDFLAGS)
-
-        AC_MSG_CHECKING(host operating system)
-        AC_MSG_RESULT($host_os)
-
-	SHOBJEXT="so"
-	AREXT="a"
-
-        case $host_os in
-                darwin*)
-			SHOBJEXT="dylib"
-                        ;;
-		hpux*)
-			SHOBJEXT="sl"
-			;;
-		mingw*)
-			SHOBJEXT="dll"
-			SHOBJFLAGS="-mno-cygwin -mms-bitfields -DPIC"
-			SHOBJLDFLAGS='-shared -Wl,--dll -Wl,--enable-auto-image-base -Wl,--output-def,$[@].def,--out-implib,$[@].a -Wl,--export-all-symbols -Wl,--add-stdcall-alias'
-			;;
-	esac
-])
-
-AC_DEFUN(DC_DO_TCL, [
-	AC_MSG_CHECKING([path to tcl])
-	AC_ARG_WITH(tcl, AC_HELP_STRING([--with-tcl], [directory containing tcl configuration (tclConfig.sh)]), [], [
-		with_tcl="auto"
-	])
-
-	if test "${with_tcl}" = "auto"; then
-		for dir in `echo "${PATH}" | sed 's@:@ @g'`; do
-			if test -f "${dir}/tclConfig.sh"; then
-				tclconfigshdir="${dir}"
-				tclconfigsh="${tclconfigshdir}/tclConfig.sh"
-				break
-			fi
-			if test -f "${dir}/../lib/tclConfig.sh"; then
-				tclconfigshdir="${dir}/../lib"
-				tclconfigsh="${tclconfigshdir}/tclConfig.sh"
-				break
-			fi
-			if test -f "${dir}/../lib64/tclConfig.sh"; then
-				tclconfigshdir="${dir}/../lib64"
-				tclconfigsh="${tclconfigshdir}/tclConfig.sh"
-				break
-			fi
-		done
-
-		if test -z "${tclconfigsh}"; then
-			AC_MSG_ERROR([Unable to find tclConfig.sh])
-		fi
-	else
-		tclconfigshdir="${with_tcl}"
-		tclconfigsh="${tclconfigshdir}/tclConfig.sh"
-	fi
-
-	if test -f "${tclconfigsh}"; then
-		. "${tclconfigsh}"
-
-		CFLAGS="${CFLAGS} ${TCL_INCLUDE_SPEC} -I${TCL_SRC_DIR}/generic -I${tclconfigshdir}"
-		CPPFLAGS="${CPPFLAGS} ${TCL_INCLUDE_SPEC} -I${TCL_SRC_DIR}/generic -I${tclconfigshdir}"
-		LIBS="${LIBS} ${TCL_LIBS}"
-
-		KITDLL_LIB_VERSION=`echo "${TCL_VERSION}${TCL_PATCH_LEVEL}" | sed 's@\.@@g'`
-	fi
-
-	AC_SUBST(CFLAGS)
-	AC_SUBST(CPPFLAGS)
-	AC_SUBST(LIBS)
-
-	AC_SUBST(KITDLL_LIB_VERSION)
-
-	AC_MSG_RESULT([$tclconfigsh])
-])
-
-AC_DEFUN(DC_DO_TK, [
-	AC_MSG_CHECKING([path to tk])
-	AC_ARG_WITH(tk, AC_HELP_STRING([--with-tk], [directory containing tk configuration (tkConfig.sh)]), [], [
-		with_tk="auto"
-	])
-
-	if test "${with_tk}" = "auto"; then
-		for dir in ../../../tk/build/tk*/*/ `echo "${PATH}" | sed 's@:@ @g'`; do
-			if test -f "${dir}/tkConfig.sh"; then
-				tkconfigshdir="${dir}"
-				tkconfigsh="${tkconfigshdir}/tkConfig.sh"
-				break
-			fi
-			if test -f "${dir}/../lib/tkConfig.sh"; then
-				tkconfigshdir="${dir}/../lib"
-				tkconfigsh="${tkconfigshdir}/tkConfig.sh"
-				break
-			fi
-			if test -f "${dir}/../lib64/tkConfig.sh"; then
-				tkconfigshdir="${dir}/../lib64"
-				tkconfigsh="${tkconfigshdir}/tkConfig.sh"
-				break
-			fi
-		done
-
-		if test -z "${tkconfigsh}"; then
-			AC_MSG_ERROR([Unable to find tkConfig.sh])
-		fi
-	else
-		tkconfigshdir="${with_tk}"
-		tkconfigsh="${tkconfigshdir}/tkConfig.sh"
-	fi
-
-	if test -f "${tkconfigsh}"; then
-		. "${tkconfigsh}"
-
-		CFLAGS="${CFLAGS} ${TK_INCLUDE_SPEC} -I${tkconfigshdir} -I${TK_SRC_DIR}/generic -I${TK_SRC_DIR}/xlib"
-		CPPFLAGS="${CPPFLAGS} ${TK_INCLUDE_SPEC} -I${tkconfigshdir} -I${TK_SRC_DIR}/generic -I${TK_SRC_DIR}/xlib"
-		LIBS="${LIBS} ${TK_LIBS}"
-
-		NEWLIBS=""
-		for lib in ${LIBS}; do
-			if echo "${lib}" | grep '^-l' >/dev/null; then
-				if echo " ${NEWLIBS} " | grep " ${lib} " >/dev/null; then
-					continue
-				fi
-			fi
-
-			NEWLIBS="${NEWLIBS} ${lib}"
-		done
-		LIBS="${NEWLIBS}"
-		unset NEWLIBS
-	fi
-
-	AC_SUBST(CFLAGS)
-	AC_SUBST(CPPFLAGS)
-	AC_SUBST(LIBS)
-
-	AC_MSG_RESULT([$tkconfigsh])
-])
-
-AC_DEFUN(DC_SETUP_TCL_PLAT_DEFS, [
-	AC_CANONICAL_HOST
-  
-	AC_MSG_CHECKING(host operating system)
-	AC_MSG_RESULT($host_os)
-  
-	case $host_os in
-		mingw32*)
-			CFLAGS="${CFLAGS} -mno-cygwin -mms-bitfields"
-
-			dnl If we are building for Win32, we need to define "BUILD_tcl" so that
-			dnl TCL_STORAGE_CLASS gets defined as DLLEXPORT, to make static linking
-			dnl work
-			AC_DEFINE(BUILD_tcl, [1], [Define if you need to pretend to be building Tcl (Windows)])
-			AC_DEFINE(BUILD_tk, [1], [Define if you need to pretend to be building Tk (Windows)])
-			;;
-		cygwin*)
-			CFLAGS="${CFLAGS} -mms-bitfields"
-			;;
-	esac
-])
-
-AC_DEFUN(DC_TEST_WHOLE_ARCHIVE_SHARED_LIB, [
-
-	SAVE_LIBS="${LIBS}"
-
-	LIBS="${WHOLEARCHIVE} $1 ${NOWHOLEARCHIVE} ${SAVE_LIBS}"
-	AC_LINK_IFELSE(
-		AC_LANG_PROGRAM([[
-			]], [[
-			]]
-		),
-		[
-			LIBS="${SAVE_LIBS}"
-
-			$2
-		], [
-			LIBS="${SAVE_LIBS}"
-
-			$3
-		]
-	)
-])
-
-AC_DEFUN(DC_DO_STATIC_LINK_LIB, [
-	AC_MSG_CHECKING([for how to statically link to $1])
-	 
-	SAVELIBS="${LIBS}"
-	staticlib=""
-	found="0"
-	dnl HP/UX uses -Wl,-a,archive -lstdc++ -Wl,-a,shared_archive
-	dnl Linux and Solaris us -Wl,-Bstatic ... -Wl,-Bdynamic
-	for trylink in "-Wl,-a,archive $2 -Wl,-a,shared_archive" "-Wl,-Bstatic $2 -Wl,-Bdynamic" "$2"; do
-		LIBS="${SAVELIBS} ${trylink}"
-	       
-		AC_LINK_IFELSE(AC_LANG_PROGRAM([], []), [
-			staticlib="${trylink}"
-			found="1"
-	       
-			break
-		])
-	done   
-	 
-	if test "${found}" = "1"; then
-		SAVELIBS=`echo "$SAVELIBS" | sed 's@ $2 @ @'`
-		LIBS="${SAVELIBS} ${staticlib}"
-
-		AC_MSG_RESULT([${staticlib}])
-
-		AC_SUBST(LIBS)
-
-		$3
-	else    
-		LIBS="${SAVELIBS}"
-		
-		AC_MSG_RESULT([cant])
-		
-		$4
-	fi
-])
-
-AC_DEFUN(DC_DO_STATIC_LINK_LIBCXX, [
-	dnl Sun Studio uses -lCstd -lCrun, most platforms use -lstdc++
-	DC_DO_STATIC_LINK_LIB([C++ Library (Sun Studio)], [-lCstd -lCrun],, [
-		DC_DO_STATIC_LINK_LIB([C++ Library (UNIX)], [-lstdc++])
-	])
-])
-
-AC_DEFUN(DC_FIND_TCLKIT_LIBS, [
-	AC_CHECK_TOOL(OBJCOPY, objcopy, [:])
-
-	DC_SETUP_TCL_PLAT_DEFS
-
-	WISH_CFLAGS=""
-
-	dnl We will need this for the Tcl project, which we will always have
-	DC_CHECK_FOR_WHOLE_ARCHIVE
-
-	for proj in tcl tclvfs tk mk4tcl; do
-		AC_MSG_CHECKING([for libraries required for ${proj}])
-
-		libdir="../../../${proj}/inst"
-		libfiles="`find "${libdir}" -name '*.a' 2>/dev/null | tr "\n" ' '`"
-		libfilesnostub="`find "${libdir}" -name '*.a' 2>/dev/null | grep -v 'stub' | tr "\n" ' '`"
-
-		for libfile in ${libfiles}; do
-			LDFLAGS="${LDFLAGS} -L`dirname "${libfile}"`"
-		done
-
-		hide_symbols="1"
-
-		if test "$proj" = "tcl"; then
-			DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $libfilesnostub], [
-				libfiles="${libfilesnostub}"
-			], [
-				DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $libfiles], [
-					libfiles="${libfiles}"
-				])
-			])
-
-			hide_symbols="0"
-		fi
-
-		if test "${proj}" = "mk4tcl"; then
-			if test -n "$libfiles"; then
-				AC_DEFINE(KIT_INCLUDES_MK4TCL, [1], [Specify this if you link against mkt4tcl])
-				DC_DO_STATIC_LINK_LIBCXX
-			fi
-		fi
-
-		if test "$proj" = "tk"; then
-			if test -n "$libfilesnostub"; then
-				DC_DO_TK
-				DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $libfilesnostub], [
-					libfiles="${libfilesnostub}"
-				], [
-					DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $libfiles], [
-						libfiles="${libfiles}"
-					])
-				])
-
-				AC_DEFINE(KIT_INCLUDES_TK, [1], [Specify this if we link statically to Tk])
-
-				if test -n "${TK_VERSION}"; then
-					AC_DEFINE_UNQUOTED(KIT_TK_VERSION, "${TK_VERSION}${TK_PATCH_LEVEL}", [Specify the version of Tk])
-				fi
-
-				if test "$host_os" = "mingw32msvc" -o "$host_os" = "mingw32"; then
-					WISH_CFLAGS="-mwindows"
-				fi
-
-				hide_symbols="0"
-			fi
-		fi
-
-		ARCHS="${ARCHS} ${libfiles}"
-
-		AC_MSG_RESULT([${libfiles}])
-
-		if test "${hide_symbols}" = "1"; then
-			STRIPLIBS="${STRIPLIBS} ${libfiles}"
-		fi
-
-	done
-
-	AC_SUBST(WISH_CFLAGS)
-	AC_SUBST(ARCHS)
-	AC_SUBST(STRIPLIBS)
-])
-
-AC_DEFUN(DC_CHECK_FOR_ACCEPTABLE_DLADDR, [
-	AC_CHECK_HEADERS(dlfcn.h)
-	AC_CHECK_FUNCS(dladdr)
-
-	AC_MSG_CHECKING([for acceptable dladdr])
-
-	AC_LINK_IFELSE(
-		AC_LANG_PROGRAM([[
-#ifdef HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-			]], [[
-char *x;
-Dl_info syminfo;
-dladdr((void *) 0, &syminfo);
-x = syminfo.dli_fname;
-			]]
-		),
-		[
-			AC_MSG_RESULT([found])
-			AC_DEFINE(HAVE_ACCEPTABLE_DLADDR, [1], [Define to 1 if you have an acceptable dladdr implementation with dli_fname])
-		], [
-			AC_MSG_RESULT([not found])
-		]
-	)
-])
-
-AC_DEFUN(DC_CHECK_FOR_WHOLE_ARCHIVE, [
-	AC_MSG_CHECKING([for how to link whole archive])
-
-	SAVE_CFLAGS="${CFLAGS}"
-
-	wholearchive=""
-
-	for check in "-Wl,--whole-archive -Wl,--no-whole-archive" "-Wl,-z,allextract -Wl,-z,defaultextract"; do
-		CFLAGS="${SAVE_CFLAGS} ${check}"
-
-		AC_LINK_IFELSE(AC_LANG_PROGRAM([], []),
-			[
-				wholearchive="${check}"
-
-				break
-			]
-		)
-
-	done
-
-	CFLAGS="${SAVE_CFLAGS}"
-
-	if test -z "${wholearchive}"; then
-		AC_MSG_RESULT([not found])
-	else
-		AC_MSG_RESULT([${wholearchive}])
-
-		WHOLEARCHIVE=`echo "${wholearchive}" | cut -f 1 -d ' '`
-		NOWHOLEARCHIVE=`echo "${wholearchive}" | cut -f 2 -d ' '`
-	fi
-
-	AC_SUBST(WHOLEARCHIVE)
-	AC_SUBST(NOWHOLEARCHIVE)
-])

DELETED kitdll/buildsrc/kitdll-0.0/boot.tcl
Index: kitdll/buildsrc/kitdll-0.0/boot.tcl
==================================================================
--- kitdll/buildsrc/kitdll-0.0/boot.tcl
+++ /dev/null
@@ -1,112 +0,0 @@
-proc tclInit {} {
-	rename tclInit {}
-
-	global auto_path tcl_library tcl_libPath
-	global tcl_version
-  
-	# Set path where to mount VFS
-	set tcl_mountpoint "/.KITDLL_TCL"
-
-	set tcl_library [file join $tcl_mountpoint lib tcl$tcl_version]
-	set tcl_libPath [list $tcl_library [file join $tcl_mountpoint lib]]
-
-	# get rid of a build residue
-	unset -nocomplain ::tclDefaultLibrary
-
-	# the following code only gets executed once on startup
-	if {[info exists ::initVFS]} {
-		set vfsHandler [list ::vfs::kitdll::vfshandler tcl]
-
-		# alter path to find encodings
-		if {[info tclversion] eq "8.4"} {
-			load {} pwb
-			librarypath [info library]
-		} else {
-			encoding dirs [list [file join [info library] encoding]] ;# TIP 258
-		}
-
-		# fix system encoding, if it wasn't properly set up (200207.004 bug)
-		if {[encoding system] eq "identity"} {
-			if {[info exists ::tclkit_system_encoding] && $::tclkit_system_encoding != ""} {
-				catch {
-					encoding system $::tclkit_system_encoding
-				}
-			}
-			unset -nocomplain ::tclkit_system_encoding
-		}
-
-		# If we've still not been able to set the encoding, revert to Tclkit defaults
-		if {[encoding system] eq "identity"} {
-			catch {
-				switch $::tcl_platform(platform) {
-					windows		{ encoding system cp1252 }
-					macintosh	{ encoding system macRoman }
-				        default		{ encoding system iso8859-1 }
-				}
-			}
-		}
-
-		# now remount the executable with the correct encoding
-		vfs::filesystem unmount [lindex [::vfs::filesystem info] 0]
-
-		# Resolve symlinks
-		set tcl_mountpoint [file dirname [file normalize [file join $tcl_mountpoint __dummy__]]]
-
-		set tcl_library [file join $tcl_mountpoint lib tcl$tcl_version]
-		set tcl_libPath [list $tcl_library [file join $tcl_mountpoint lib]]
-
-		vfs::filesystem mount $tcl_mountpoint $vfsHandler
-
-	}
-
-	# load config settings file if present
-	namespace eval ::vfs { variable tclkit_version 1 }
-	catch { uplevel #0 [list source [file join $tcl_mountpoint config.tcl]] }
-
-	uplevel #0 [list source [file join $tcl_library init.tcl]]
-  
-	# reset auto_path, so that init.tcl's search outside of tclkit is cancelled
-	set auto_path $tcl_libPath
-
-	# This loads everything needed for "clock scan" to work
-	# "clock scan" is used within "vfs::zip", which may be
-	# loaded before this is run causing the root VFS to break
-	catch { clock scan }
-
-	# Load these, the original Tclkit does so it should be safe.
-	foreach vfsfile [list vfsUtils vfslib] {
-		uplevel #0 [list source [file join $tcl_mountpoint lib vfs ${vfsfile}.tcl]]
-	}
-
-	# Set a maximum seek to avoid reading the entire DLL looking for a
-	# zip header
-	catch {
-		package require vfs::zip
-		set ::zip::max_header_seek 8192
-	}
-
-	# Now that the initialization is complete, mount the user VFS if needed
-	## Mount the VFS from the Shared Object
-	if {[info exists ::initVFS] && [info exists ::tclKitFilename]} {
-		catch {
-			vfs::zip::Mount $::tclKitFilename "/.KITDLL_USER"
-
-			lappend auto_path [file normalize "/.KITDLL_USER/lib"]
-		}
-	}
-
-	## Mount the VFS from executable
-	if {[info exists ::initVFS]} {
-		catch {
-			vfs::zip::Mount [info nameofexecutable] "/.KITDLL_APP"
-
-			lappend auto_path [file normalize "/.KITDLL_APP/lib"]
-		}
-	}
-
-	# Clean up
-	unset -nocomplain ::zip::max_header_seek
-
-	# Clean up after the kitInit.c:preInitCmd
-	unset -nocomplain ::initVFS ::tclKitFilename
-}

DELETED kitdll/buildsrc/kitdll-0.0/config.guess
Index: kitdll/buildsrc/kitdll-0.0/config.guess
==================================================================
--- kitdll/buildsrc/kitdll-0.0/config.guess
+++ /dev/null
@@ -1,1463 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-timestamp='2005-07-08'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub.  If it succeeds, it prints the system name on stdout, and
-# exits with 0.  Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-	for c in cc gcc c89 c99 ; do
-	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-	     CC_FOR_BUILD="$c"; break ;
-	  fi ;
-	done ;
-	if test x"$CC_FOR_BUILD" = x ; then
-	  CC_FOR_BUILD=no_compiler_found ;
-	fi
-	;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-	PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
-	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-	# switched to ELF, *-*-netbsd* would select the old
-	# object file format.  This provides both forward
-	# compatibility and a consistent mechanism for selecting the
-	# object file format.
-	#
-	# Note: NetBSD doesn't particularly care about the vendor
-	# portion of the name.  We always set it to "unknown".
-	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-	case "${UNAME_MACHINE_ARCH}" in
-	    armeb) machine=armeb-unknown ;;
-	    arm*) machine=arm-unknown ;;
-	    sh3el) machine=shl-unknown ;;
-	    sh3eb) machine=sh-unknown ;;
-	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-	esac
-	# The Operating System including object format, if it has switched
-	# to ELF recently, or will in the future.
-	case "${UNAME_MACHINE_ARCH}" in
-	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-		eval $set_cc_for_build
-		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-			| grep __ELF__ >/dev/null
-		then
-		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-		    # Return netbsd for either.  FIX?
-		    os=netbsd
-		else
-		    os=netbsdelf
-		fi
-		;;
-	    *)
-	        os=netbsd
-		;;
-	esac
-	# The OS release
-	# Debian GNU/NetBSD machines have a different userland, and
-	# thus, need a distinct triplet. However, they do not need
-	# kernel version information, so it can be replaced with a
-	# suitable tag, in the style of linux-gnu.
-	case "${UNAME_VERSION}" in
-	    Debian*)
-		release='-gnu'
-		;;
-	    *)
-		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-		;;
-	esac
-	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-	# contains redundant information, the shorter form:
-	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "${machine}-${os}${release}"
-	exit ;;
-    *:OpenBSD:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    *:ekkoBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-	exit ;;
-    macppc:MirBSD:*:*)
-	echo powerppc-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    *:MirBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    alpha:OSF1:*:*)
-	case $UNAME_RELEASE in
-	*4.0)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-		;;
-	*5.*)
-	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-		;;
-	esac
-	# According to Compaq, /usr/sbin/psrinfo has been available on
-	# OSF/1 and Tru64 systems produced since 1995.  I hope that
-	# covers most systems running today.  This code pipes the CPU
-	# types through head -n 1, so we only detect the type of CPU 0.
-	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-	case "$ALPHA_CPU_TYPE" in
-	    "EV4 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV4.5 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "LCA4 (21066/21068)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV5 (21164)")
-		UNAME_MACHINE="alphaev5" ;;
-	    "EV5.6 (21164A)")
-		UNAME_MACHINE="alphaev56" ;;
-	    "EV5.6 (21164PC)")
-		UNAME_MACHINE="alphapca56" ;;
-	    "EV5.7 (21164PC)")
-		UNAME_MACHINE="alphapca57" ;;
-	    "EV6 (21264)")
-		UNAME_MACHINE="alphaev6" ;;
-	    "EV6.7 (21264A)")
-		UNAME_MACHINE="alphaev67" ;;
-	    "EV6.8CB (21264C)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8AL (21264B)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8CX (21264D)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.9A (21264/EV69A)")
-		UNAME_MACHINE="alphaev69" ;;
-	    "EV7 (21364)")
-		UNAME_MACHINE="alphaev7" ;;
-	    "EV7.9 (21364A)")
-		UNAME_MACHINE="alphaev79" ;;
-	esac
-	# A Pn.n version is a patched version.
-	# A Vn.n version is a released version.
-	# A Tn.n version is a released field test version.
-	# A Xn.n version is an unreleased experimental baselevel.
-	# 1.2 uses "1.2" for uname -r.
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	exit ;;
-    Alpha\ *:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# Should we change UNAME_MACHINE based on the output of uname instead
-	# of the specific Alpha model?
-	echo alpha-pc-interix
-	exit ;;
-    21064:Windows_NT:50:3)
-	echo alpha-dec-winnt3.5
-	exit ;;
-    Amiga*:UNIX_System_V:4.0:*)
-	echo m68k-unknown-sysv4
-	exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-amigaos
-	exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-morphos
-	exit ;;
-    *:OS/390:*:*)
-	echo i370-ibm-openedition
-	exit ;;
-    *:z/VM:*:*)
-	echo s390-ibm-zvmoe
-	exit ;;
-    *:OS400:*:*)
-        echo powerpc-ibm-os400
-	exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-	echo arm-acorn-riscix${UNAME_RELEASE}
-	exit ;;
-    arm:riscos:*:*|arm:RISCOS:*:*)
-	echo arm-unknown-riscos
-	exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-	echo hppa1.1-hitachi-hiuxmpp
-	exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-	if test "`(/bin/universe) 2>/dev/null`" = att ; then
-		echo pyramid-pyramid-sysv3
-	else
-		echo pyramid-pyramid-bsd
-	fi
-	exit ;;
-    NILE*:*:*:dcosx)
-	echo pyramid-pyramid-svr4
-	exit ;;
-    DRS?6000:unix:4.0:6*)
-	echo sparc-icl-nx6
-	exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-	case `/usr/bin/uname -p` in
-	    sparc) echo sparc-icl-nx7; exit ;;
-	esac ;;
-    sun4H:SunOS:5.*:*)
-	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    i86pc:SunOS:5.*:*)
-	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:6*:*)
-	# According to config.sub, this is the proper way to canonicalize
-	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-	# it's likely to be more like Solaris than SunOS4.
-	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:*:*)
-	case "`/usr/bin/arch -k`" in
-	    Series*|S4*)
-		UNAME_RELEASE=`uname -v`
-		;;
-	esac
-	# Japanese Language versions have a version number like `4.1.3-JL'.
-	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-	exit ;;
-    sun3*:SunOS:*:*)
-	echo m68k-sun-sunos${UNAME_RELEASE}
-	exit ;;
-    sun*:*:4.2BSD:*)
-	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-	case "`/bin/arch`" in
-	    sun3)
-		echo m68k-sun-sunos${UNAME_RELEASE}
-		;;
-	    sun4)
-		echo sparc-sun-sunos${UNAME_RELEASE}
-		;;
-	esac
-	exit ;;
-    aushp:SunOS:*:*)
-	echo sparc-auspex-sunos${UNAME_RELEASE}
-	exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-        exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-        echo m68k-milan-mint${UNAME_RELEASE}
-        exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-        echo m68k-hades-mint${UNAME_RELEASE}
-        exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-        echo m68k-unknown-mint${UNAME_RELEASE}
-        exit ;;
-    m68k:machten:*:*)
-	echo m68k-apple-machten${UNAME_RELEASE}
-	exit ;;
-    powerpc:machten:*:*)
-	echo powerpc-apple-machten${UNAME_RELEASE}
-	exit ;;
-    RISC*:Mach:*:*)
-	echo mips-dec-mach_bsd4.3
-	exit ;;
-    RISC*:ULTRIX:*:*)
-	echo mips-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    VAX*:ULTRIX*:*:*)
-	echo vax-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-	echo clipper-intergraph-clix${UNAME_RELEASE}
-	exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-	int main (int argc, char *argv[]) {
-#else
-	int main (argc, argv) int argc; char *argv[]; {
-#endif
-	#if defined (host_mips) && defined (MIPSEB)
-	#if defined (SYSTYPE_SYSV)
-	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_SVR4)
-	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-	#endif
-	#endif
-	  exit (-1);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c &&
-	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-	  SYSTEM_NAME=`$dummy $dummyarg` &&
-	    { echo "$SYSTEM_NAME"; exit; }
-	echo mips-mips-riscos${UNAME_RELEASE}
-	exit ;;
-    Motorola:PowerMAX_OS:*:*)
-	echo powerpc-motorola-powermax
-	exit ;;
-    Motorola:*:4.3:PL8-*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-	echo powerpc-harris-powerunix
-	exit ;;
-    m88k:CX/UX:7*:*)
-	echo m88k-harris-cxux7
-	exit ;;
-    m88k:*:4*:R4*)
-	echo m88k-motorola-sysv4
-	exit ;;
-    m88k:*:3*:R3*)
-	echo m88k-motorola-sysv3
-	exit ;;
-    AViiON:dgux:*:*)
-        # DG/UX returns AViiON for all architectures
-        UNAME_PROCESSOR=`/usr/bin/uname -p`
-	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-	then
-	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-	       [ ${TARGET_BINARY_INTERFACE}x = x ]
-	    then
-		echo m88k-dg-dgux${UNAME_RELEASE}
-	    else
-		echo m88k-dg-dguxbcs${UNAME_RELEASE}
-	    fi
-	else
-	    echo i586-dg-dgux${UNAME_RELEASE}
-	fi
- 	exit ;;
-    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
-	echo m88k-dolphin-sysv3
-	exit ;;
-    M88*:*:R3*:*)
-	# Delta 88k system running SVR3
-	echo m88k-motorola-sysv3
-	exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-	echo m88k-tektronix-sysv3
-	exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-	echo m68k-tektronix-bsd
-	exit ;;
-    *:IRIX*:*:*)
-	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-	exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-	echo i386-ibm-aix
-	exit ;;
-    ia64:AIX:*:*)
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:2:3)
-	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-		eval $set_cc_for_build
-		sed 's/^		//' << EOF >$dummy.c
-		#include <sys/systemcfg.h>
-
-		main()
-			{
-			if (!__power_pc())
-				exit(1);
-			puts("powerpc-ibm-aix3.2.5");
-			exit(0);
-			}
-EOF
-		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-		then
-			echo "$SYSTEM_NAME"
-		else
-			echo rs6000-ibm-aix3.2.5
-		fi
-	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-		echo rs6000-ibm-aix3.2.4
-	else
-		echo rs6000-ibm-aix3.2
-	fi
-	exit ;;
-    *:AIX:*:[45])
-	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-		IBM_ARCH=rs6000
-	else
-		IBM_ARCH=powerpc
-	fi
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:*:*)
-	echo rs6000-ibm-aix
-	exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-	echo romp-ibm-bsd4.4
-	exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-	exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-	echo rs6000-bull-bosx
-	exit ;;
-    DPX/2?00:B.O.S.:*:*)
-	echo m68k-bull-sysv3
-	exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-	echo m68k-hp-bsd
-	exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-	echo m68k-hp-bsd4.4
-	exit ;;
-    9000/[34678]??:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	case "${UNAME_MACHINE}" in
-	    9000/31? )            HP_ARCH=m68000 ;;
-	    9000/[34]?? )         HP_ARCH=m68k ;;
-	    9000/[678][0-9][0-9])
-		if [ -x /usr/bin/getconf ]; then
-		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                    case "${sc_cpu_version}" in
-                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-                      532)                      # CPU_PA_RISC2_0
-                        case "${sc_kernel_bits}" in
-                          32) HP_ARCH="hppa2.0n" ;;
-                          64) HP_ARCH="hppa2.0w" ;;
-			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-                        esac ;;
-                    esac
-		fi
-		if [ "${HP_ARCH}" = "" ]; then
-		    eval $set_cc_for_build
-		    sed 's/^              //' << EOF >$dummy.c
-
-              #define _HPUX_SOURCE
-              #include <stdlib.h>
-              #include <unistd.h>
-
-              int main ()
-              {
-              #if defined(_SC_KERNEL_BITS)
-                  long bits = sysconf(_SC_KERNEL_BITS);
-              #endif
-                  long cpu  = sysconf (_SC_CPU_VERSION);
-
-                  switch (cpu)
-              	{
-              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-              	case CPU_PA_RISC2_0:
-              #if defined(_SC_KERNEL_BITS)
-              	    switch (bits)
-              		{
-              		case 64: puts ("hppa2.0w"); break;
-              		case 32: puts ("hppa2.0n"); break;
-              		default: puts ("hppa2.0"); break;
-              		} break;
-              #else  /* !defined(_SC_KERNEL_BITS) */
-              	    puts ("hppa2.0"); break;
-              #endif
-              	default: puts ("hppa1.0"); break;
-              	}
-                  exit (0);
-              }
-EOF
-		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-		    test -z "$HP_ARCH" && HP_ARCH=hppa
-		fi ;;
-	esac
-	if [ ${HP_ARCH} = "hppa2.0w" ]
-	then
-	    eval $set_cc_for_build
-
-	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-	    # generating 64-bit code.  GNU and HP use different nomenclature:
-	    #
-	    # $ CC_FOR_BUILD=cc ./config.guess
-	    # => hppa2.0w-hp-hpux11.23
-	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-	    # => hppa64-hp-hpux11.23
-
-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-		grep __LP64__ >/dev/null
-	    then
-		HP_ARCH="hppa2.0w"
-	    else
-		HP_ARCH="hppa64"
-	    fi
-	fi
-	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-	exit ;;
-    ia64:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	echo ia64-hp-hpux${HPUX_REV}
-	exit ;;
-    3050*:HI-UX:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <unistd.h>
-	int
-	main ()
-	{
-	  long cpu = sysconf (_SC_CPU_VERSION);
-	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-	     results, however.  */
-	  if (CPU_IS_PA_RISC (cpu))
-	    {
-	      switch (cpu)
-		{
-		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-		  default: puts ("hppa-hitachi-hiuxwe2"); break;
-		}
-	    }
-	  else if (CPU_IS_HP_MC68K (cpu))
-	    puts ("m68k-hitachi-hiuxwe2");
-	  else puts ("unknown-hitachi-hiuxwe2");
-	  exit (0);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-		{ echo "$SYSTEM_NAME"; exit; }
-	echo unknown-hitachi-hiuxwe2
-	exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-	echo hppa1.1-hp-bsd
-	exit ;;
-    9000/8??:4.3bsd:*:*)
-	echo hppa1.0-hp-bsd
-	exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-	echo hppa1.0-hp-mpeix
-	exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-	echo hppa1.1-hp-osf
-	exit ;;
-    hp8??:OSF1:*:*)
-	echo hppa1.0-hp-osf
-	exit ;;
-    i*86:OSF1:*:*)
-	if [ -x /usr/sbin/sysversion ] ; then
-	    echo ${UNAME_MACHINE}-unknown-osf1mk
-	else
-	    echo ${UNAME_MACHINE}-unknown-osf1
-	fi
-	exit ;;
-    parisc*:Lites*:*:*)
-	echo hppa1.1-hp-lites
-	exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-	echo c1-convex-bsd
-        exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-        exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-	echo c34-convex-bsd
-        exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-	echo c38-convex-bsd
-        exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-	echo c4-convex-bsd
-        exit ;;
-    CRAY*Y-MP:*:*:*)
-	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*[A-Z]90:*:*:*)
-	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-	      -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*TS:*:*:*)
-	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*T3E:*:*:*)
-	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*SV1:*:*:*)
-	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    *:UNICOS/mp:*:*)
-	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-        exit ;;
-    5000:UNIX_System_V:4.*:*)
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-	exit ;;
-    sparc*:BSD/OS:*:*)
-	echo sparc-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:BSD/OS:*:*)
-	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:FreeBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-	exit ;;
-    i*:CYGWIN*:*)
-	echo ${UNAME_MACHINE}-pc-cygwin
-	exit ;;
-    i*:MINGW*:*)
-	echo ${UNAME_MACHINE}-pc-mingw32
-	exit ;;
-    i*:windows32*:*)
-    	# uname -m includes "-pc" on this system.
-    	echo ${UNAME_MACHINE}-mingw32
-	exit ;;
-    i*:PW*:*)
-	echo ${UNAME_MACHINE}-pc-pw32
-	exit ;;
-    x86:Interix*:[34]*)
-	echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
-	exit ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-	echo i${UNAME_MACHINE}-pc-mks
-	exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-	# UNAME_MACHINE based on the output of uname instead of i386?
-	echo i586-pc-interix
-	exit ;;
-    i*:UWIN*:*)
-	echo ${UNAME_MACHINE}-pc-uwin
-	exit ;;
-    amd64:CYGWIN*:*:*)
-	echo x86_64-unknown-cygwin
-	exit ;;
-    p*:CYGWIN*:*)
-	echo powerpcle-unknown-cygwin
-	exit ;;
-    prep*:SunOS:5.*:*)
-	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    *:GNU:*:*)
-	# the GNU system
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-	exit ;;
-    *:GNU/*:*:*)
-	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
-	exit ;;
-    i*86:Minix:*:*)
-	echo ${UNAME_MACHINE}-pc-minix
-	exit ;;
-    arm*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    cris:Linux:*:*)
-	echo cris-axis-linux-gnu
-	exit ;;
-    crisv32:Linux:*:*)
-	echo crisv32-axis-linux-gnu
-	exit ;;
-    frv:Linux:*:*)
-    	echo frv-unknown-linux-gnu
-	exit ;;
-    ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    mips:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef mips
-	#undef mipsel
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=mipsel
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=mips
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-	;;
-    mips64:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef mips64
-	#undef mips64el
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=mips64el
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=mips64
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-	;;
-    ppc:Linux:*:*)
-	echo powerpc-unknown-linux-gnu
-	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-gnu
-	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
-	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-	exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-	# Look for CPU level
-	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
-	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
-	  *)    echo hppa-unknown-linux-gnu ;;
-	esac
-	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-gnu
-	exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux
-	exit ;;
-    sh64*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
-	exit ;;
-    x86_64:Linux:*:*)
-	echo x86_64-unknown-linux-gnu
-	exit ;;
-    i*86:Linux:*:*)
-	# The BFD linker knows what the default object file format is, so
-	# first see if it will tell us. cd to the root directory to prevent
-	# problems with other programs or directories called `ld' in the path.
-	# Set LC_ALL=C to ensure ld outputs messages in English.
-	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-			 | sed -ne '/supported targets:/!d
-				    s/[ 	][ 	]*/ /g
-				    s/.*supported targets: *//
-				    s/ .*//
-				    p'`
-        case "$ld_supported_targets" in
-	  elf32-i386)
-		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
-		;;
-	  a.out-i386-linux)
-		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-		exit ;;
-	  coff-i386)
-		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-		exit ;;
-	  "")
-		# Either a pre-BFD a.out linker (linux-gnuoldld) or
-		# one that does not give us useful --help.
-		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
-		exit ;;
-	esac
-	# Determine whether the default compiler is a.out or elf
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <features.h>
-	#ifdef __ELF__
-	# ifdef __GLIBC__
-	#  if __GLIBC__ >= 2
-	LIBC=gnu
-	#  else
-	LIBC=gnulibc1
-	#  endif
-	# else
-	LIBC=gnulibc1
-	# endif
-	#else
-	#ifdef __INTEL_COMPILER
-	LIBC=gnu
-	#else
-	LIBC=gnuaout
-	#endif
-	#endif
-	#ifdef __dietlibc__
-	LIBC=dietlibc
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
-	test x"${LIBC}" != x && {
-		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-		exit
-	}
-	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
-	;;
-    i*86:DYNIX/ptx:4*:*)
-	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-	# earlier versions are messed up and put the nodename in both
-	# sysname and nodename.
-	echo i386-sequent-sysv4
-	exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-        # Unixware is an offshoot of SVR4, but it has its own version
-        # number series starting with 2...
-        # I am not positive that other SVR4 systems won't match this,
-	# I just have to hope.  -- rms.
-        # Use sysv4.2uw... so that sysv4* matches it.
-	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-	exit ;;
-    i*86:OS/2:*:*)
-	# If we were able to find `uname', then EMX Unix compatibility
-	# is probably installed.
-	echo ${UNAME_MACHINE}-pc-os2-emx
-	exit ;;
-    i*86:XTS-300:*:STOP)
-	echo ${UNAME_MACHINE}-unknown-stop
-	exit ;;
-    i*86:atheos:*:*)
-	echo ${UNAME_MACHINE}-unknown-atheos
-	exit ;;
-    i*86:syllable:*:*)
-	echo ${UNAME_MACHINE}-pc-syllable
-	exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
-	echo i386-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    i*86:*DOS:*:*)
-	echo ${UNAME_MACHINE}-pc-msdosdjgpp
-	exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-	else
-		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-	fi
-	exit ;;
-    i*86:*:5:[678]*)
-    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
-	case `/bin/uname -X | grep "^Machine"` in
-	    *486*)	     UNAME_MACHINE=i486 ;;
-	    *Pentium)	     UNAME_MACHINE=i586 ;;
-	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-	esac
-	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-	exit ;;
-    i*86:*:3.2:*)
-	if test -f /usr/options/cb.name; then
-		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-	elif /bin/uname -X 2>/dev/null >/dev/null ; then
-		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-			&& UNAME_MACHINE=i586
-		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-	else
-		echo ${UNAME_MACHINE}-pc-sysv32
-	fi
-	exit ;;
-    pc:*:*:*)
-	# Left here for compatibility:
-        # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i386.
-	echo i386-pc-msdosdjgpp
-        exit ;;
-    Intel:Mach:3*:*)
-	echo i386-pc-mach3
-	exit ;;
-    paragon:*:*:*)
-	echo i860-intel-osf1
-	exit ;;
-    i860:*:4.*:*) # i860-SVR4
-	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-	else # Add other i860-SVR4 vendors below as they are discovered.
-	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-	fi
-	exit ;;
-    mini*:CTIX:SYS*5:*)
-	# "miniframe"
-	echo m68010-convergent-sysv
-	exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-	echo m68k-convergent-sysv
-	exit ;;
-    M680?0:D-NIX:5.3:*)
-	echo m68k-diab-dnix
-	exit ;;
-    M68*:*:R3V[5678]*:*)
-	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-	OS_REL=''
-	test -r /etc/.relid \
-	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-          && { echo i486-ncr-sysv4; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-	echo m68k-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-	echo m68k-atari-sysv4
-	exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-	echo sparc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    rs6000:LynxOS:2.*:*)
-	echo rs6000-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
-	echo powerpc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-	echo mips-dde-sysv${UNAME_RELEASE}
-	exit ;;
-    RM*:ReliantUNIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    RM*:SINIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    *:SINIX-*:*:*)
-	if uname -p 2>/dev/null >/dev/null ; then
-		UNAME_MACHINE=`(uname -p) 2>/dev/null`
-		echo ${UNAME_MACHINE}-sni-sysv4
-	else
-		echo ns32k-sni-sysv
-	fi
-	exit ;;
-    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                      # says <Richard.M.Bartel@ccMail.Census.GOV>
-        echo i586-unisys-sysv4
-        exit ;;
-    *:UNIX_System_V:4*:FTX*)
-	# From Gerald Hewes <hewes@openmarket.com>.
-	# How about differentiating between stratus architectures? -djm
-	echo hppa1.1-stratus-sysv4
-	exit ;;
-    *:*:*:FTX*)
-	# From seanf@swdc.stratus.com.
-	echo i860-stratus-sysv4
-	exit ;;
-    i*86:VOS:*:*)
-	# From Paul.Green@stratus.com.
-	echo ${UNAME_MACHINE}-stratus-vos
-	exit ;;
-    *:VOS:*:*)
-	# From Paul.Green@stratus.com.
-	echo hppa1.1-stratus-vos
-	exit ;;
-    mc68*:A/UX:*:*)
-	echo m68k-apple-aux${UNAME_RELEASE}
-	exit ;;
-    news*:NEWS-OS:6*:*)
-	echo mips-sony-newsos6
-	exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-	if [ -d /usr/nec ]; then
-	        echo mips-nec-sysv${UNAME_RELEASE}
-	else
-	        echo mips-unknown-sysv${UNAME_RELEASE}
-	fi
-        exit ;;
-    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
-	echo powerpc-be-beos
-	exit ;;
-    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
-	echo powerpc-apple-beos
-	exit ;;
-    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
-	echo i586-pc-beos
-	exit ;;
-    SX-4:SUPER-UX:*:*)
-	echo sx4-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-5:SUPER-UX:*:*)
-	echo sx5-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-6:SUPER-UX:*:*)
-	echo sx6-nec-superux${UNAME_RELEASE}
-	exit ;;
-    Power*:Rhapsody:*:*)
-	echo powerpc-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Rhapsody:*:*)
-	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Darwin:*:*)
-	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	case $UNAME_PROCESSOR in
-	    *86) UNAME_PROCESSOR=i686 ;;
-	    unknown) UNAME_PROCESSOR=powerpc ;;
-	esac
-	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-	exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-	UNAME_PROCESSOR=`uname -p`
-	if test "$UNAME_PROCESSOR" = "x86"; then
-		UNAME_PROCESSOR=i386
-		UNAME_MACHINE=pc
-	fi
-	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-	exit ;;
-    *:QNX:*:4*)
-	echo i386-pc-qnx
-	exit ;;
-    NSE-?:NONSTOP_KERNEL:*:*)
-	echo nse-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-	echo nsr-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    *:NonStop-UX:*:*)
-	echo mips-compaq-nonstopux
-	exit ;;
-    BS2000:POSIX*:*:*)
-	echo bs2000-siemens-sysv
-	exit ;;
-    DS/*:UNIX_System_V:*:*)
-	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-	exit ;;
-    *:Plan9:*:*)
-	# "uname -m" is not consistent, so use $cputype instead. 386
-	# is converted to i386 for consistency with other x86
-	# operating systems.
-	if test "$cputype" = "386"; then
-	    UNAME_MACHINE=i386
-	else
-	    UNAME_MACHINE="$cputype"
-	fi
-	echo ${UNAME_MACHINE}-unknown-plan9
-	exit ;;
-    *:TOPS-10:*:*)
-	echo pdp10-unknown-tops10
-	exit ;;
-    *:TENEX:*:*)
-	echo pdp10-unknown-tenex
-	exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-	echo pdp10-dec-tops20
-	exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-	echo pdp10-xkl-tops20
-	exit ;;
-    *:TOPS-20:*:*)
-	echo pdp10-unknown-tops20
-	exit ;;
-    *:ITS:*:*)
-	echo pdp10-unknown-its
-	exit ;;
-    SEI:*:*:SEIUX)
-        echo mips-sei-seiux${UNAME_RELEASE}
-	exit ;;
-    *:DragonFly:*:*)
-	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-	exit ;;
-    *:*VMS:*:*)
-    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
-	case "${UNAME_MACHINE}" in
-	    A*) echo alpha-dec-vms ; exit ;;
-	    I*) echo ia64-dec-vms ; exit ;;
-	    V*) echo vax-dec-vms ; exit ;;
-	esac ;;
-    *:XENIX:*:SysV)
-	echo i386-pc-xenix
-	exit ;;
-    i*86:skyos:*:*)
-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-	exit ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-          "4"
-#else
-	  ""
-#endif
-         ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-	printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-	printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-	{ echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-	echo c1-convex-bsd
-	exit ;;
-    c2*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit ;;
-    c34*)
-	echo c34-convex-bsd
-	exit ;;
-    c38*)
-	echo c38-convex-bsd
-	exit ;;
-    c4*)
-	echo c4-convex-bsd
-	exit ;;
-    esac
-fi
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
-and
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:

DELETED kitdll/buildsrc/kitdll-0.0/config.sub
Index: kitdll/buildsrc/kitdll-0.0/config.sub
==================================================================
--- kitdll/buildsrc/kitdll-0.0/config.sub
+++ /dev/null
@@ -1,1579 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-timestamp='2005-07-08'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine.  It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
-  kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-	-sun*os*)
-		# Prevent following clause from handling this invalid input.
-		;;
-	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray)
-		os=
-		basic_machine=$1
-		;;
-	-sim | -cisco | -oki | -wec | -winbond)
-		os=
-		basic_machine=$1
-		;;
-	-scout)
-		;;
-	-wrs)
-		os=-vxworks
-		basic_machine=$1
-		;;
-	-chorusos*)
-		os=-chorusos
-		basic_machine=$1
-		;;
- 	-chorusrdb)
- 		os=-chorusrdb
-		basic_machine=$1
- 		;;
-	-hiux*)
-		os=-hiuxwe2
-		;;
-	-sco5)
-		os=-sco3.2v5
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco4)
-		os=-sco3.2v4
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2.[4-9]*)
-		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2v[4-9]*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco*)
-		os=-sco3.2v2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-udk*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-isc)
-		os=-isc2.2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-clix*)
-		basic_machine=clipper-intergraph
-		;;
-	-isc*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-lynx*)
-		os=-lynxos
-		;;
-	-ptx*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-		;;
-	-windowsnt*)
-		os=`echo $os | sed -e 's/windowsnt/winnt/'`
-		;;
-	-psos*)
-		os=-psos
-		;;
-	-mint | -mint[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-	# Recognize the basic CPU types without company name.
-	# Some are omitted here because they have special meanings below.
-	1750a | 580 \
-	| a29k \
-	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-	| am33_2.0 \
-	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
-	| bfin \
-	| c4x | clipper \
-	| d10v | d30v | dlx | dsp16xx \
-	| fr30 | frv \
-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-	| i370 | i860 | i960 | ia64 \
-	| ip2k | iq2000 \
-	| m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
-	| mips | mipsbe | mipseb | mipsel | mipsle \
-	| mips16 \
-	| mips64 | mips64el \
-	| mips64vr | mips64vrel \
-	| mips64orion | mips64orionel \
-	| mips64vr4100 | mips64vr4100el \
-	| mips64vr4300 | mips64vr4300el \
-	| mips64vr5000 | mips64vr5000el \
-	| mips64vr5900 | mips64vr5900el \
-	| mipsisa32 | mipsisa32el \
-	| mipsisa32r2 | mipsisa32r2el \
-	| mipsisa64 | mipsisa64el \
-	| mipsisa64r2 | mipsisa64r2el \
-	| mipsisa64sb1 | mipsisa64sb1el \
-	| mipsisa64sr71k | mipsisa64sr71kel \
-	| mipstx39 | mipstx39el \
-	| mn10200 | mn10300 \
-	| ms1 \
-	| msp430 \
-	| ns16k | ns32k \
-	| or32 \
-	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
-	| pyramid \
-	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
-	| sh64 | sh64le \
-	| sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
-	| sparcv8 | sparcv9 | sparcv9b \
-	| strongarm \
-	| tahoe | thumb | tic4x | tic80 | tron \
-	| v850 | v850e \
-	| we32k \
-	| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
-	| z8k)
-		basic_machine=$basic_machine-unknown
-		;;
-	m32c)
-		basic_machine=$basic_machine-unknown
-		;;
-	m6811 | m68hc11 | m6812 | m68hc12)
-		# Motorola 68HC11/12.
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-		;;
-
-	# We use `pc' rather than `unknown'
-	# because (1) that's what they normally are, and
-	# (2) the word "unknown" tends to confuse beginning users.
-	i*86 | x86_64)
-	  basic_machine=$basic_machine-pc
-	  ;;
-	# Object if more than one company name word.
-	*-*-*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-	# Recognize the basic CPU types with company name.
-	580-* \
-	| a29k-* \
-	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-	| avr-* \
-	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-	| clipper-* | craynv-* | cydra-* \
-	| d10v-* | d30v-* | dlx-* \
-	| elxsi-* \
-	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
-	| h8300-* | h8500-* \
-	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-	| i*86-* | i860-* | i960-* | ia64-* \
-	| ip2k-* | iq2000-* \
-	| m32r-* | m32rle-* \
-	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* \
-	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-	| mips16-* \
-	| mips64-* | mips64el-* \
-	| mips64vr-* | mips64vrel-* \
-	| mips64orion-* | mips64orionel-* \
-	| mips64vr4100-* | mips64vr4100el-* \
-	| mips64vr4300-* | mips64vr4300el-* \
-	| mips64vr5000-* | mips64vr5000el-* \
-	| mips64vr5900-* | mips64vr5900el-* \
-	| mipsisa32-* | mipsisa32el-* \
-	| mipsisa32r2-* | mipsisa32r2el-* \
-	| mipsisa64-* | mipsisa64el-* \
-	| mipsisa64r2-* | mipsisa64r2el-* \
-	| mipsisa64sb1-* | mipsisa64sb1el-* \
-	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
-	| mipstx39-* | mipstx39el-* \
-	| mmix-* \
-	| ms1-* \
-	| msp430-* \
-	| none-* | np1-* | ns16k-* | ns32k-* \
-	| orion-* \
-	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
-	| pyramid-* \
-	| romp-* | rs6000-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
-	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-	| sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
-	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
-	| tahoe-* | thumb-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-	| tron-* \
-	| v850-* | v850e-* | vax-* \
-	| we32k-* \
-	| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
-	| xstormy16-* | xtensa-* \
-	| ymp-* \
-	| z8k-*)
-		;;
-	m32c-*)
-		;;
-	# Recognize the various machine names and aliases which stand
-	# for a CPU type and a company and sometimes even an OS.
-	386bsd)
-		basic_machine=i386-unknown
-		os=-bsd
-		;;
-	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-		basic_machine=m68000-att
-		;;
-	3b*)
-		basic_machine=we32k-att
-		;;
-	a29khif)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-    	abacus)
-		basic_machine=abacus-unknown
-		;;
-	adobe68k)
-		basic_machine=m68010-adobe
-		os=-scout
-		;;
-	alliant | fx80)
-		basic_machine=fx80-alliant
-		;;
-	altos | altos3068)
-		basic_machine=m68k-altos
-		;;
-	am29k)
-		basic_machine=a29k-none
-		os=-bsd
-		;;
-	amd64)
-		basic_machine=x86_64-pc
-		;;
-	amd64-*)
-		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	amdahl)
-		basic_machine=580-amdahl
-		os=-sysv
-		;;
-	amiga | amiga-*)
-		basic_machine=m68k-unknown
-		;;
-	amigaos | amigados)
-		basic_machine=m68k-unknown
-		os=-amigaos
-		;;
-	amigaunix | amix)
-		basic_machine=m68k-unknown
-		os=-sysv4
-		;;
-	apollo68)
-		basic_machine=m68k-apollo
-		os=-sysv
-		;;
-	apollo68bsd)
-		basic_machine=m68k-apollo
-		os=-bsd
-		;;
-	aux)
-		basic_machine=m68k-apple
-		os=-aux
-		;;
-	balance)
-		basic_machine=ns32k-sequent
-		os=-dynix
-		;;
-	c90)
-		basic_machine=c90-cray
-		os=-unicos
-		;;
-	convex-c1)
-		basic_machine=c1-convex
-		os=-bsd
-		;;
-	convex-c2)
-		basic_machine=c2-convex
-		os=-bsd
-		;;
-	convex-c32)
-		basic_machine=c32-convex
-		os=-bsd
-		;;
-	convex-c34)
-		basic_machine=c34-convex
-		os=-bsd
-		;;
-	convex-c38)
-		basic_machine=c38-convex
-		os=-bsd
-		;;
-	cray | j90)
-		basic_machine=j90-cray
-		os=-unicos
-		;;
-	craynv)
-		basic_machine=craynv-cray
-		os=-unicosmp
-		;;
-	cr16c)
-		basic_machine=cr16c-unknown
-		os=-elf
-		;;
-	crds | unos)
-		basic_machine=m68k-crds
-		;;
-	crisv32 | crisv32-* | etraxfs*)
-		basic_machine=crisv32-axis
-		;;
-	cris | cris-* | etrax*)
-		basic_machine=cris-axis
-		;;
-	crx)
-		basic_machine=crx-unknown
-		os=-elf
-		;;
-	da30 | da30-*)
-		basic_machine=m68k-da30
-		;;
-	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-		basic_machine=mips-dec
-		;;
-	decsystem10* | dec10*)
-		basic_machine=pdp10-dec
-		os=-tops10
-		;;
-	decsystem20* | dec20*)
-		basic_machine=pdp10-dec
-		os=-tops20
-		;;
-	delta | 3300 | motorola-3300 | motorola-delta \
-	      | 3300-motorola | delta-motorola)
-		basic_machine=m68k-motorola
-		;;
-	delta88)
-		basic_machine=m88k-motorola
-		os=-sysv3
-		;;
-	djgpp)
-		basic_machine=i586-pc
-		os=-msdosdjgpp
-		;;
-	dpx20 | dpx20-*)
-		basic_machine=rs6000-bull
-		os=-bosx
-		;;
-	dpx2* | dpx2*-bull)
-		basic_machine=m68k-bull
-		os=-sysv3
-		;;
-	ebmon29k)
-		basic_machine=a29k-amd
-		os=-ebmon
-		;;
-	elxsi)
-		basic_machine=elxsi-elxsi
-		os=-bsd
-		;;
-	encore | umax | mmax)
-		basic_machine=ns32k-encore
-		;;
-	es1800 | OSE68k | ose68k | ose | OSE)
-		basic_machine=m68k-ericsson
-		os=-ose
-		;;
-	fx2800)
-		basic_machine=i860-alliant
-		;;
-	genix)
-		basic_machine=ns32k-ns
-		;;
-	gmicro)
-		basic_machine=tron-gmicro
-		os=-sysv
-		;;
-	go32)
-		basic_machine=i386-pc
-		os=-go32
-		;;
-	h3050r* | hiux*)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	h8300hms)
-		basic_machine=h8300-hitachi
-		os=-hms
-		;;
-	h8300xray)
-		basic_machine=h8300-hitachi
-		os=-xray
-		;;
-	h8500hms)
-		basic_machine=h8500-hitachi
-		os=-hms
-		;;
-	harris)
-		basic_machine=m88k-harris
-		os=-sysv3
-		;;
-	hp300-*)
-		basic_machine=m68k-hp
-		;;
-	hp300bsd)
-		basic_machine=m68k-hp
-		os=-bsd
-		;;
-	hp300hpux)
-		basic_machine=m68k-hp
-		os=-hpux
-		;;
-	hp3k9[0-9][0-9] | hp9[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k2[0-9][0-9] | hp9k31[0-9])
-		basic_machine=m68000-hp
-		;;
-	hp9k3[2-9][0-9])
-		basic_machine=m68k-hp
-		;;
-	hp9k6[0-9][0-9] | hp6[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k7[0-79][0-9] | hp7[0-79][0-9])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k78[0-9] | hp78[0-9])
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][13679] | hp8[0-9][13679])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][0-9] | hp8[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hppa-next)
-		os=-nextstep3
-		;;
-	hppaosf)
-		basic_machine=hppa1.1-hp
-		os=-osf
-		;;
-	hppro)
-		basic_machine=hppa1.1-hp
-		os=-proelf
-		;;
-	i370-ibm* | ibm*)
-		basic_machine=i370-ibm
-		;;
-# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
-	i*86v32)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv32
-		;;
-	i*86v4*)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv4
-		;;
-	i*86v)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv
-		;;
-	i*86sol2)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-solaris2
-		;;
-	i386mach)
-		basic_machine=i386-mach
-		os=-mach
-		;;
-	i386-vsta | vsta)
-		basic_machine=i386-unknown
-		os=-vsta
-		;;
-	iris | iris4d)
-		basic_machine=mips-sgi
-		case $os in
-		    -irix*)
-			;;
-		    *)
-			os=-irix4
-			;;
-		esac
-		;;
-	isi68 | isi)
-		basic_machine=m68k-isi
-		os=-sysv
-		;;
-	m88k-omron*)
-		basic_machine=m88k-omron
-		;;
-	magnum | m3230)
-		basic_machine=mips-mips
-		os=-sysv
-		;;
-	merlin)
-		basic_machine=ns32k-utek
-		os=-sysv
-		;;
-	mingw32)
-		basic_machine=i386-pc
-		os=-mingw32
-		;;
-	miniframe)
-		basic_machine=m68000-convergent
-		;;
-	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-	mips3*-*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-		;;
-	mips3*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-		;;
-	monitor)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	morphos)
-		basic_machine=powerpc-unknown
-		os=-morphos
-		;;
-	msdos)
-		basic_machine=i386-pc
-		os=-msdos
-		;;
-	mvs)
-		basic_machine=i370-ibm
-		os=-mvs
-		;;
-	ncr3000)
-		basic_machine=i486-ncr
-		os=-sysv4
-		;;
-	netbsd386)
-		basic_machine=i386-unknown
-		os=-netbsd
-		;;
-	netwinder)
-		basic_machine=armv4l-rebel
-		os=-linux
-		;;
-	news | news700 | news800 | news900)
-		basic_machine=m68k-sony
-		os=-newsos
-		;;
-	news1000)
-		basic_machine=m68030-sony
-		os=-newsos
-		;;
-	news-3600 | risc-news)
-		basic_machine=mips-sony
-		os=-newsos
-		;;
-	necv70)
-		basic_machine=v70-nec
-		os=-sysv
-		;;
-	next | m*-next )
-		basic_machine=m68k-next
-		case $os in
-		    -nextstep* )
-			;;
-		    -ns2*)
-		      os=-nextstep2
-			;;
-		    *)
-		      os=-nextstep3
-			;;
-		esac
-		;;
-	nh3000)
-		basic_machine=m68k-harris
-		os=-cxux
-		;;
-	nh[45]000)
-		basic_machine=m88k-harris
-		os=-cxux
-		;;
-	nindy960)
-		basic_machine=i960-intel
-		os=-nindy
-		;;
-	mon960)
-		basic_machine=i960-intel
-		os=-mon960
-		;;
-	nonstopux)
-		basic_machine=mips-compaq
-		os=-nonstopux
-		;;
-	np1)
-		basic_machine=np1-gould
-		;;
-	nsr-tandem)
-		basic_machine=nsr-tandem
-		;;
-	op50n-* | op60c-*)
-		basic_machine=hppa1.1-oki
-		os=-proelf
-		;;
-	openrisc | openrisc-*)
-		basic_machine=or32-unknown
-		;;
-	os400)
-		basic_machine=powerpc-ibm
-		os=-os400
-		;;
-	OSE68000 | ose68000)
-		basic_machine=m68000-ericsson
-		os=-ose
-		;;
-	os68k)
-		basic_machine=m68k-none
-		os=-os68k
-		;;
-	pa-hitachi)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	paragon)
-		basic_machine=i860-intel
-		os=-osf
-		;;
-	pbd)
-		basic_machine=sparc-tti
-		;;
-	pbb)
-		basic_machine=m68k-tti
-		;;
-	pc532 | pc532-*)
-		basic_machine=ns32k-pc532
-		;;
-	pentium | p5 | k5 | k6 | nexgen | viac3)
-		basic_machine=i586-pc
-		;;
-	pentiumpro | p6 | 6x86 | athlon | athlon_*)
-		basic_machine=i686-pc
-		;;
-	pentiumii | pentium2 | pentiumiii | pentium3)
-		basic_machine=i686-pc
-		;;
-	pentium4)
-		basic_machine=i786-pc
-		;;
-	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumpro-* | p6-* | 6x86-* | athlon-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium4-*)
-		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pn)
-		basic_machine=pn-gould
-		;;
-	power)	basic_machine=power-ibm
-		;;
-	ppc)	basic_machine=powerpc-unknown
-		;;
-	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppcle | powerpclittle | ppc-le | powerpc-little)
-		basic_machine=powerpcle-unknown
-		;;
-	ppcle-* | powerpclittle-*)
-		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64)	basic_machine=powerpc64-unknown
-		;;
-	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-		basic_machine=powerpc64le-unknown
-		;;
-	ppc64le-* | powerpc64little-*)
-		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ps2)
-		basic_machine=i386-ibm
-		;;
-	pw32)
-		basic_machine=i586-unknown
-		os=-pw32
-		;;
-	rom68k)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	rm[46]00)
-		basic_machine=mips-siemens
-		;;
-	rtpc | rtpc-*)
-		basic_machine=romp-ibm
-		;;
-	s390 | s390-*)
-		basic_machine=s390-ibm
-		;;
-	s390x | s390x-*)
-		basic_machine=s390x-ibm
-		;;
-	sa29200)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	sb1)
-		basic_machine=mipsisa64sb1-unknown
-		;;
-	sb1el)
-		basic_machine=mipsisa64sb1el-unknown
-		;;
-	sei)
-		basic_machine=mips-sei
-		os=-seiux
-		;;
-	sequent)
-		basic_machine=i386-sequent
-		;;
-	sh)
-		basic_machine=sh-hitachi
-		os=-hms
-		;;
-	sh64)
-		basic_machine=sh64-unknown
-		;;
-	sparclite-wrs | simso-wrs)
-		basic_machine=sparclite-wrs
-		os=-vxworks
-		;;
-	sps7)
-		basic_machine=m68k-bull
-		os=-sysv2
-		;;
-	spur)
-		basic_machine=spur-unknown
-		;;
-	st2000)
-		basic_machine=m68k-tandem
-		;;
-	stratus)
-		basic_machine=i860-stratus
-		os=-sysv4
-		;;
-	sun2)
-		basic_machine=m68000-sun
-		;;
-	sun2os3)
-		basic_machine=m68000-sun
-		os=-sunos3
-		;;
-	sun2os4)
-		basic_machine=m68000-sun
-		os=-sunos4
-		;;
-	sun3os3)
-		basic_machine=m68k-sun
-		os=-sunos3
-		;;
-	sun3os4)
-		basic_machine=m68k-sun
-		os=-sunos4
-		;;
-	sun4os3)
-		basic_machine=sparc-sun
-		os=-sunos3
-		;;
-	sun4os4)
-		basic_machine=sparc-sun
-		os=-sunos4
-		;;
-	sun4sol2)
-		basic_machine=sparc-sun
-		os=-solaris2
-		;;
-	sun3 | sun3-*)
-		basic_machine=m68k-sun
-		;;
-	sun4)
-		basic_machine=sparc-sun
-		;;
-	sun386 | sun386i | roadrunner)
-		basic_machine=i386-sun
-		;;
-	sv1)
-		basic_machine=sv1-cray
-		os=-unicos
-		;;
-	symmetry)
-		basic_machine=i386-sequent
-		os=-dynix
-		;;
-	t3e)
-		basic_machine=alphaev5-cray
-		os=-unicos
-		;;
-	t90)
-		basic_machine=t90-cray
-		os=-unicos
-		;;
-	tic54x | c54x*)
-		basic_machine=tic54x-unknown
-		os=-coff
-		;;
-	tic55x | c55x*)
-		basic_machine=tic55x-unknown
-		os=-coff
-		;;
-	tic6x | c6x*)
-		basic_machine=tic6x-unknown
-		os=-coff
-		;;
-	tx39)
-		basic_machine=mipstx39-unknown
-		;;
-	tx39el)
-		basic_machine=mipstx39el-unknown
-		;;
-	toad1)
-		basic_machine=pdp10-xkl
-		os=-tops20
-		;;
-	tower | tower-32)
-		basic_machine=m68k-ncr
-		;;
-	tpf)
-		basic_machine=s390x-ibm
-		os=-tpf
-		;;
-	udi29k)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	ultra3)
-		basic_machine=a29k-nyu
-		os=-sym1
-		;;
-	v810 | necv810)
-		basic_machine=v810-nec
-		os=-none
-		;;
-	vaxv)
-		basic_machine=vax-dec
-		os=-sysv
-		;;
-	vms)
-		basic_machine=vax-dec
-		os=-vms
-		;;
-	vpp*|vx|vx-*)
-		basic_machine=f301-fujitsu
-		;;
-	vxworks960)
-		basic_machine=i960-wrs
-		os=-vxworks
-		;;
-	vxworks68)
-		basic_machine=m68k-wrs
-		os=-vxworks
-		;;
-	vxworks29k)
-		basic_machine=a29k-wrs
-		os=-vxworks
-		;;
-	w65*)
-		basic_machine=w65-wdc
-		os=-none
-		;;
-	w89k-*)
-		basic_machine=hppa1.1-winbond
-		os=-proelf
-		;;
-	xbox)
-		basic_machine=i686-pc
-		os=-mingw32
-		;;
-	xps | xps100)
-		basic_machine=xps100-honeywell
-		;;
-	ymp)
-		basic_machine=ymp-cray
-		os=-unicos
-		;;
-	z8k-*-coff)
-		basic_machine=z8k-unknown
-		os=-sim
-		;;
-	none)
-		basic_machine=none-none
-		os=-none
-		;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-	w89k)
-		basic_machine=hppa1.1-winbond
-		;;
-	op50n)
-		basic_machine=hppa1.1-oki
-		;;
-	op60c)
-		basic_machine=hppa1.1-oki
-		;;
-	romp)
-		basic_machine=romp-ibm
-		;;
-	mmix)
-		basic_machine=mmix-knuth
-		;;
-	rs6000)
-		basic_machine=rs6000-ibm
-		;;
-	vax)
-		basic_machine=vax-dec
-		;;
-	pdp10)
-		# there are many clones, so DEC is not a safe bet
-		basic_machine=pdp10-unknown
-		;;
-	pdp11)
-		basic_machine=pdp11-dec
-		;;
-	we32k)
-		basic_machine=we32k-att
-		;;
-	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
-		basic_machine=sh-unknown
-		;;
-	sparc | sparcv8 | sparcv9 | sparcv9b)
-		basic_machine=sparc-sun
-		;;
-	cydra)
-		basic_machine=cydra-cydrome
-		;;
-	orion)
-		basic_machine=orion-highlevel
-		;;
-	orion105)
-		basic_machine=clipper-highlevel
-		;;
-	mac | mpw | mac-mpw)
-		basic_machine=m68k-apple
-		;;
-	pmac | pmac-mpw)
-		basic_machine=powerpc-apple
-		;;
-	*-unknown)
-		# Make sure to match an already-canonicalized machine name.
-		;;
-	*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-	*-digital*)
-		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-		;;
-	*-commodore*)
-		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-		;;
-	*)
-		;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-        # First match some system type aliases
-        # that might get confused with valid system types.
-	# -solaris* is a basic system type, with this one exception.
-	-solaris1 | -solaris1.*)
-		os=`echo $os | sed -e 's|solaris1|sunos4|'`
-		;;
-	-solaris)
-		os=-solaris2
-		;;
-	-svr4*)
-		os=-sysv4
-		;;
-	-unixware*)
-		os=-sysv4.2uw
-		;;
-	-gnu/linux*)
-		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-		;;
-	# First accept the basic system types.
-	# The portable systems comes first.
-	# Each alternative MUST END IN A *, to match a version number.
-	# -sysv* is not here because it comes later, after sysvr4.
-	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
-	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* \
-	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
-	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* \
-	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
-	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku*)
-	# Remember, each alternative MUST END IN *, to match a version number.
-		;;
-	-qnx*)
-		case $basic_machine in
-		    x86-* | i*86-*)
-			;;
-		    *)
-			os=-nto$os
-			;;
-		esac
-		;;
-	-nto-qnx*)
-		;;
-	-nto*)
-		os=`echo $os | sed -e 's|nto|nto-qnx|'`
-		;;
-	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-		;;
-	-mac*)
-		os=`echo $os | sed -e 's|mac|macos|'`
-		;;
-	-linux-dietlibc)
-		os=-linux-dietlibc
-		;;
-	-linux*)
-		os=`echo $os | sed -e 's|linux|linux-gnu|'`
-		;;
-	-sunos5*)
-		os=`echo $os | sed -e 's|sunos5|solaris2|'`
-		;;
-	-sunos6*)
-		os=`echo $os | sed -e 's|sunos6|solaris3|'`
-		;;
-	-opened*)
-		os=-openedition
-		;;
-        -os400*)
-		os=-os400
-		;;
-	-wince*)
-		os=-wince
-		;;
-	-osfrose*)
-		os=-osfrose
-		;;
-	-osf*)
-		os=-osf
-		;;
-	-utek*)
-		os=-bsd
-		;;
-	-dynix*)
-		os=-bsd
-		;;
-	-acis*)
-		os=-aos
-		;;
-	-atheos*)
-		os=-atheos
-		;;
-	-syllable*)
-		os=-syllable
-		;;
-	-386bsd)
-		os=-bsd
-		;;
-	-ctix* | -uts*)
-		os=-sysv
-		;;
-	-nova*)
-		os=-rtmk-nova
-		;;
-	-ns2 )
-		os=-nextstep2
-		;;
-	-nsk*)
-		os=-nsk
-		;;
-	# Preserve the version number of sinix5.
-	-sinix5.*)
-		os=`echo $os | sed -e 's|sinix|sysv|'`
-		;;
-	-sinix*)
-		os=-sysv4
-		;;
-        -tpf*)
-		os=-tpf
-		;;
-	-triton*)
-		os=-sysv3
-		;;
-	-oss*)
-		os=-sysv3
-		;;
-	-svr4)
-		os=-sysv4
-		;;
-	-svr3)
-		os=-sysv3
-		;;
-	-sysvr4)
-		os=-sysv4
-		;;
-	# This must come after -sysvr4.
-	-sysv*)
-		;;
-	-ose*)
-		os=-ose
-		;;
-	-es1800*)
-		os=-ose
-		;;
-	-xenix)
-		os=-xenix
-		;;
-	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-		os=-mint
-		;;
-	-aros*)
-		os=-aros
-		;;
-	-kaos*)
-		os=-kaos
-		;;
-	-zvmoe)
-		os=-zvmoe
-		;;
-	-none)
-		;;
-	*)
-		# Get rid of the `-' at the beginning of $os.
-		os=`echo $os | sed 's/[^-]*-//'`
-		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-		exit 1
-		;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-	*-acorn)
-		os=-riscix1.2
-		;;
-	arm*-rebel)
-		os=-linux
-		;;
-	arm*-semi)
-		os=-aout
-		;;
-    c4x-* | tic4x-*)
-        os=-coff
-        ;;
-	# This must come before the *-dec entry.
-	pdp10-*)
-		os=-tops20
-		;;
-	pdp11-*)
-		os=-none
-		;;
-	*-dec | vax-*)
-		os=-ultrix4.2
-		;;
-	m68*-apollo)
-		os=-domain
-		;;
-	i386-sun)
-		os=-sunos4.0.2
-		;;
-	m68000-sun)
-		os=-sunos3
-		# This also exists in the configure program, but was not the
-		# default.
-		# os=-sunos4
-		;;
-	m68*-cisco)
-		os=-aout
-		;;
-	mips*-cisco)
-		os=-elf
-		;;
-	mips*-*)
-		os=-elf
-		;;
-	or32-*)
-		os=-coff
-		;;
-	*-tti)	# must be before sparc entry or we get the wrong os.
-		os=-sysv3
-		;;
-	sparc-* | *-sun)
-		os=-sunos4.1.1
-		;;
-	*-be)
-		os=-beos
-		;;
-	*-haiku)
-		os=-haiku
-		;;
-	*-ibm)
-		os=-aix
-		;;
-    	*-knuth)
-		os=-mmixware
-		;;
-	*-wec)
-		os=-proelf
-		;;
-	*-winbond)
-		os=-proelf
-		;;
-	*-oki)
-		os=-proelf
-		;;
-	*-hp)
-		os=-hpux
-		;;
-	*-hitachi)
-		os=-hiux
-		;;
-	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-		os=-sysv
-		;;
-	*-cbm)
-		os=-amigaos
-		;;
-	*-dg)
-		os=-dgux
-		;;
-	*-dolphin)
-		os=-sysv3
-		;;
-	m68k-ccur)
-		os=-rtu
-		;;
-	m88k-omron*)
-		os=-luna
-		;;
-	*-next )
-		os=-nextstep
-		;;
-	*-sequent)
-		os=-ptx
-		;;
-	*-crds)
-		os=-unos
-		;;
-	*-ns)
-		os=-genix
-		;;
-	i370-*)
-		os=-mvs
-		;;
-	*-next)
-		os=-nextstep3
-		;;
-	*-gould)
-		os=-sysv
-		;;
-	*-highlevel)
-		os=-bsd
-		;;
-	*-encore)
-		os=-bsd
-		;;
-	*-sgi)
-		os=-irix
-		;;
-	*-siemens)
-		os=-sysv4
-		;;
-	*-masscomp)
-		os=-rtu
-		;;
-	f30[01]-fujitsu | f700-fujitsu)
-		os=-uxpv
-		;;
-	*-rom68k)
-		os=-coff
-		;;
-	*-*bug)
-		os=-coff
-		;;
-	*-apple)
-		os=-macos
-		;;
-	*-atari*)
-		os=-mint
-		;;
-	*)
-		os=-none
-		;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-	*-unknown)
-		case $os in
-			-riscix*)
-				vendor=acorn
-				;;
-			-sunos*)
-				vendor=sun
-				;;
-			-aix*)
-				vendor=ibm
-				;;
-			-beos*)
-				vendor=be
-				;;
-			-hpux*)
-				vendor=hp
-				;;
-			-mpeix*)
-				vendor=hp
-				;;
-			-hiux*)
-				vendor=hitachi
-				;;
-			-unos*)
-				vendor=crds
-				;;
-			-dgux*)
-				vendor=dg
-				;;
-			-luna*)
-				vendor=omron
-				;;
-			-genix*)
-				vendor=ns
-				;;
-			-mvs* | -opened*)
-				vendor=ibm
-				;;
-			-os400*)
-				vendor=ibm
-				;;
-			-ptx*)
-				vendor=sequent
-				;;
-			-tpf*)
-				vendor=ibm
-				;;
-			-vxsim* | -vxworks* | -windiss*)
-				vendor=wrs
-				;;
-			-aux*)
-				vendor=apple
-				;;
-			-hms*)
-				vendor=hitachi
-				;;
-			-mpw* | -macos*)
-				vendor=apple
-				;;
-			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-				vendor=atari
-				;;
-			-vos*)
-				vendor=stratus
-				;;
-		esac
-		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-		;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:

DELETED kitdll/buildsrc/kitdll-0.0/configure.ac
Index: kitdll/buildsrc/kitdll-0.0/configure.ac
==================================================================
--- kitdll/buildsrc/kitdll-0.0/configure.ac
+++ /dev/null
@@ -1,48 +0,0 @@
-dnl What are we running
-AC_INIT(kitdll, 0.0)
-
-dnl Checks for programs.
-AC_PROG_CC
-AC_PROG_MAKE_SET
-AC_PROG_INSTALL
-AC_AIX
-AC_GNU_SOURCE
-
-dnl Determine system information
-DC_CHK_OS_INFO
-
-dnl Find the appropriate libraries to link to
-AC_SEARCH_LIBS(acos, m,, [ AC_MSG_WARN([Couldn't find acos (normally in libm)!]) ])
-AC_SEARCH_LIBS(dlsym, dl,, [ AC_MSG_WARN([Couldn't find dlsym (normally in libdl)!]) ])
-
-dnl Determine how to create a shared object
-DC_GET_SHOBJFLAGS
-
-dnl Find the appropriate Tcl headers and libraries
-DC_DO_TCL
-
-dnl Find required libs
-DC_FIND_TCLKIT_LIBS
-
-dnl Check for Tcl features
-SAVE_LIBS="${LIBS}"
-LIBS="${ARCHS} ${LIBS}"
-dnl Check for the ability to get the current system encoding
-AC_CHECK_FUNCS(Tcl_GetEncodingNameFromEnvironment Tcl_SetSystemEncoding)
-LIBS="${SAVE_LIBS}"
-
-dnl Find extra objects we need to link as a part of "libtclkit"
-AC_SUBST(EXTRA_OBJS)
-
-dnl Check for optional headers
-AC_HEADER_STDC
-AC_CHECK_HEADERS(unistd.h string.h strings.h)
-
-dnl Check for optional system calls
-AC_CHECK_FUNCS(readlink)
-
-dnl Check for acceptable dladdr so we can find ourselves on UNIX
-DC_CHECK_FOR_ACCEPTABLE_DLADDR
-
-dnl Produce output
-AC_OUTPUT(Makefile)

DELETED kitdll/buildsrc/kitdll-0.0/dir2c.tcl
Index: kitdll/buildsrc/kitdll-0.0/dir2c.tcl
==================================================================
--- kitdll/buildsrc/kitdll-0.0/dir2c.tcl
+++ /dev/null
@@ -1,395 +0,0 @@
-#! /usr/bin/env tclsh
-
-if {[llength $argv] != 2} {
-	puts stderr "Usage: kitdll <hashkey> <startdir>"
-
-	exit 1
-}
-
-set hashkey [lindex $argv 0]
-set startdir [lindex $argv 1]
-
-proc shorten_file {dir file} {
-	set dirNameLen [string length $dir]
-
-	if {[string range $file 0 [expr {$dirNameLen - 1}]] == $dir} {
-		set file [string range $file $dirNameLen end]
-	}
-
-	if {[string index $file 0] == "/"} {
-		set file [string range $file 1 end]
-	}
-	return $file
-}
-
-proc recursive_glob {dir} {
-	set children [glob -nocomplain -directory $dir *]
-
-	set ret [list $dir]
-	foreach child $children {
-		unset -nocomplain childinfo
-		catch {
-			file stat $child childinfo
-		}
-
-		if {![info exists childinfo(type)]} {
-			continue
-		}
-
-		if {$childinfo(type) == "directory"} {
-			foreach add [recursive_glob $child] {
-				lappend ret $add
-			}
-
-			continue
-		}
-
-		if {$childinfo(type) != "file"} {
-			continue
-		}
-
-		lappend ret $child
-	}
-
-	return $ret
-}
-
-# Convert a string into a C-style binary string
-## XXX: This function needs to be optimized
-proc stringify {data} {
-	set ret "\""
-	for {set idx 0} {$idx < [string length $data]} {incr idx} {
-		binary scan [string index $data $idx] H* char
-
-		append ret "\\x${char}"
-
-		if {($idx % 20) == 0 && $idx != 0} {
-			append ret "\"\n\""
-		}
-	}
-
-	set ret [string trim $ret "\n\""]
-
-	set ret "\"$ret\""
-
-	return $ret
-}
-
-# This function must be kept in-sync with the generated C function below
-proc kitdll_hash {path} {
-	set h 0
-	set g 0
-
-	for {set idx 0} {$idx < [string length $path]} {incr idx} {
-		binary scan [string index $path $idx] H* char
-		set char "0x$char"
-
-		set h [expr {($h << 4) + $char}]
-		set g [expr {$h & 0xf0000000}]
-		if {$g != 0} {
-			set h [expr {($h & 0xffffffff) ^ ($g >> 24)}]
-		}
-
-		set h [expr {$h & ((~$g) & 0xffffffff)}]
-	}
-
-	return $h
-}
-
-# Generate list of files to include in output
-set files [recursive_glob $startdir]
-
-# Insert dummy entry cooresponding to C dummy entry
-set files [linsert $files 0 "__DUMMY__"]
-
-# Produce C89 compatible header
-set cpp_tag "KITDLL_[string toupper $hashkey]"
-set code_tag "kitdll_[string tolower $hashkey]"
-set hashkey [string tolower $hashkey]
-
-puts "#ifndef $cpp_tag"
-puts "#  define $cpp_tag 1"
-puts {
-#  ifdef HAVE_STDC
-#    ifndef HAVE_UNISTD_H
-#      define HAVE_UNISTD_H 1
-#    endif
-#    ifndef HAVE_STRING_H
-#      define HAVE_STRING_H 1
-#    endif
-#  endif
-#  ifdef HAVE_UNISTD_H
-#    include <unistd.h>
-#  endif
-#  ifdef HAVE_STRING_H
-#    include <string.h>
-#  endif
-
-#  ifndef LOADED_KITDLL_COMMON
-#    define LOADED_KITDLL_COMMON 1
-
-typedef enum {
-	KITDLL_FILETYPE_FILE,
-	KITDLL_FILETYPE_DIR
-} kitdll_filetype_t;
-
-struct kitdll_data {
-	const char *             name;
-	unsigned long            index;
-	unsigned long            size;
-	kitdll_filetype_t        type;
-	const unsigned char *    data;
-};
-
-static unsigned long kitdll_hash(const unsigned char *path) {
-	unsigned long i, h = 0, g = 0;
-
-	for (i = 0; path[i]; i++) {
-		h = (h << 4) + path[i];
-		g = h & 0xf0000000;
-		if (g) {
-			h ^= (g >> 24);
-		}
-		h &= ((~g) & 0xffffffffLU);
-	}
-        
-        return(h);
-}
-
-#  endif /* !LOADED_KITDLL_COMMON */}
-puts ""
-
-puts "static struct kitdll_data ${code_tag}_data\[\] = {"
-puts "\t{"
-puts "\t\t.name  = NULL,"
-puts "\t\t.index = 0,"
-puts "\t\t.type  = 0,"
-puts "\t\t.size  = 0,"
-puts "\t\t.data  = NULL,"
-puts "\t},"
-for {set idx 1} {$idx < [llength $files]} {incr idx} {
-	set file [lindex $files $idx]
-	set shortfile [shorten_file $startdir $file]
-
-	unset -nocomplain finfo type
-	file stat $file finfo
-
-	switch -- $finfo(type) {
-		"file" {
-			set type "KITDLL_FILETYPE_FILE"
-			set size $finfo(size)
-
-			set fd [open $file]
-			fconfigure $fd -translation binary
-			set data [read $fd]
-			close $fd
-
-			set data "(unsigned char *) [stringify $data]"
-		}
-		"directory" {
-			set type "KITDLL_FILETYPE_DIR"
-			set data "NULL"
-			set size 0
-		}
-	}
-
-	puts "\t{"
-	puts "\t\t.name  = \"$shortfile\","
-	puts "\t\t.index = $idx,"
-	puts "\t\t.type  = $type,"
-	puts "\t\t.size  = $size,"
-	puts "\t\t.data  = $data,"
-	puts "\t},"
-}
-puts "};"
-puts ""
-
-puts "static unsigned long ${code_tag}_lookup_index(const char *path) {"
-puts "\tswitch (kitdll_hash((unsigned char *) path)) {"
-
-for {set idx 1} {$idx < [llength $files]} {incr idx} {
-	set file [lindex $files $idx]
-	set shortfile [shorten_file $startdir $file]
-	set hash [kitdll_hash $shortfile]
-
-	lappend indexes_per_hash($hash) [list $shortfile $idx]
-}
-
-foreach {hash idx_list} [array get indexes_per_hash] {
-	puts "\t\tcase $hash:"
-
-	if {[llength $idx_list] == 1} {
-		set idx [lindex $idx_list 0 1]
-
-		puts "\t\t\treturn($idx);"
-	} else {
-		foreach idx_ent $idx_list {
-			set shortfile [lindex $idx_ent 0]
-			set idx [lindex $idx_ent 1]
-
-			puts "\t\t\tif (strcmp(path, \"$shortfile\") == 0) return($idx);"
-		}
-		puts "\t\t\tbreak;"
-	}
-}
-
-puts "\t}"
-puts "\treturn(0);"
-puts "}"
-puts ""
-
-puts "static struct kitdll_data *${code_tag}_getData(const char *path, unsigned long index) {"
-puts "\tif (path != NULL) {"
-puts "\t\tindex = ${code_tag}_lookup_index(path);"
-puts "\t}"
-puts ""
-puts "\tif (index == 0) {"
-puts "\t\treturn(NULL);"
-puts "\t}"
-puts ""
-puts "\tif (path != NULL) {"
-puts "\t\tif (strcmp(path, ${code_tag}_data\[index\].name) != 0) {"
-puts "\t\t\treturn(NULL);"
-puts "\t\t}"
-puts "\t}"
-puts ""
-puts "\treturn(&${code_tag}_data\[index\]);"
-puts "}"
-puts ""
-
-puts "static unsigned long ${code_tag}_getChildren(const char *path, unsigned long *outbuf, unsigned long outbuf_count) {"
-puts "\tunsigned long index;"
-puts "\tunsigned long num_children = 0;"
-puts ""
-puts "\tindex = ${code_tag}_lookup_index(path);"
-puts "\tif (index == 0) {"
-puts "\t\treturn(0);"
-puts "\t}"
-puts ""
-puts "\tif (${code_tag}_data\[index\].type != KITDLL_FILETYPE_DIR) {"
-puts "\t\treturn(0);"
-puts "\t}"
-puts ""
-puts "\tif (strcmp(path, ${code_tag}_data\[index\].name) != 0) {"
-puts "\t\treturn(0);"
-puts "\t}"
-puts ""
-puts "\tswitch (index) {"
-
-unset -nocomplain children
-array set children [list]
-for {set idx 1} {$idx < [llength $files]} {incr idx} {
-	set file [lindex $files $idx]
-	set shortfile [shorten_file $startdir $file]
-
-	unset -nocomplain finfo type
-	file stat $file finfo
-
-	if {$finfo(type) != "directory"} {
-		continue;
-	}
-
-	# Determine which children are under this directory
-	## Convert the current pathname to a regular expression that matches exactly
-	set file_regexp [string map [list "\\" "\\\\" "." "\\." "\{" "\\\{" "\}" "\\\}" "*" "\\*"] $file]
-
-	## Search for pathnames which start with exactly our name, followed by a slash
-	## followed by no more slashes (direct descendants)
-	set child_idx_list [lsearch -regexp -all $files "^${file_regexp}/\[^/\]*$"]
-
-	set children($idx) $child_idx_list
-
-	puts "\t\tcase $idx:"
-	puts "\t\t\tnum_children = [llength $child_idx_list];"
-	puts "\t\t\tbreak;"
-	
-}
-
-puts "\t}"
-puts ""
-puts "\tif (outbuf == NULL) {"
-puts "\t\treturn(num_children);"
-puts "\t}"
-puts ""
-puts "\tif (num_children > outbuf_count) {"
-puts "\t\tnum_children = outbuf_count;"
-puts "\t}"
-puts ""
-puts "\tif (num_children == 0) {"
-puts "\t\treturn(num_children);"
-puts "\t}"
-puts ""
-puts "\tif (outbuf_count > num_children) {"
-puts "\t\toutbuf_count = num_children;"
-puts "\t}"
-puts ""
-puts "\tswitch (index) {"
-
-foreach {idx child_idx_list} [array get children] {
-	if {[llength $child_idx_list] == 0} {
-		continue
-	}
-
-	puts "\t\tcase $idx:"
-	puts "\t\t\tswitch(outbuf_count) {"
-
-	for {set child_idx_idx [expr {[llength $child_idx_list] - 1}]} {$child_idx_idx >= 0} {incr child_idx_idx -1} {
-		set child_idx [lindex $child_idx_list $child_idx_idx]
-
-		puts "\t\t\t\tcase [expr {$child_idx_idx + 1}]:"
-		puts "\t\t\t\t\toutbuf\[$child_idx_idx\] = $child_idx;"
-	}
-
-	puts "\t\t\t}"
-
-	puts "\t\t\tbreak;"
-}
-
-puts "\t}"
-puts ""
-puts "\treturn(num_children);"
-puts "}"
-puts ""
-
-puts "#  ifdef KITDLL_MAKE_LOADABLE"
-
-set fd [open "vfs_kitdll_data.c"]
-puts [read $fd]
-close $fd
-
-
-puts "static cmd_getData_t *getCmdData(const char *hashkey) {"
-puts "\treturn(${code_tag}_getData);"
-puts "}"
-puts ""
-puts "static cmd_getChildren_t *getCmdChildren(const char *hashkey) {"
-puts "\treturn(${code_tag}_getChildren);"
-puts "}"
-puts ""
-
-puts "int Vfs_kitdll_data_${hashkey}_Init(Tcl_Interp *interp) {"
-puts "\tTcl_Command tclCreatComm_ret;"
-puts "\tint tclPkgProv_ret;"
-puts ""
-puts "\ttclCreatComm_ret = Tcl_CreateObjCommand(interp, \"::vfs::kitdll::data::${hashkey}::getMetadata\", getMetadata, NULL, NULL);"
-puts "\tif (!tclCreatComm_ret) {"
-puts "\t\treturn(TCL_ERROR);"
-puts "\t}"
-puts ""
-puts "\ttclCreatComm_ret = Tcl_CreateObjCommand(interp, \"::vfs::kitdll::data::${hashkey}::getData\", getData, NULL, NULL);"
-puts "\tif (!tclCreatComm_ret) {"
-puts "\t\treturn(TCL_ERROR);"
-puts "\t}"
-puts ""
-puts "\ttclCreatComm_ret = Tcl_CreateObjCommand(interp, \"::vfs::kitdll::data::${hashkey}::getChildren\", getChildren, NULL, NULL);"
-puts "\tif (!tclCreatComm_ret) {"
-puts "\t\treturn(TCL_ERROR);"
-puts "\t}"
-puts ""
-puts "\ttclPkgProv_ret = Tcl_PkgProvide(interp, \"vfs::kitdll::data::${hashkey}\", \"1.0\");"
-puts ""
-puts "\treturn(tclPkgProv_ret);"
-puts "\t}"
-puts "#  endif /* KITDLL_MAKE_LOADABLE */"
-
-puts "#endif /* !$cpp_tag */"

DELETED kitdll/buildsrc/kitdll-0.0/install-sh
Index: kitdll/buildsrc/kitdll-0.0/install-sh
==================================================================
--- kitdll/buildsrc/kitdll-0.0/install-sh
+++ /dev/null
@@ -1,323 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2005-05-14.22
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.  It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-chmodcmd="$chmodprog 0755"
-chowncmd=
-chgrpcmd=
-stripcmd=
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=
-dst=
-dir_arg=
-dstarg=
-no_target_directory=
-
-usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-   or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-   or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
--c         (ignored)
--d         create directories instead of installing files.
--g GROUP   $chgrpprog installed files to GROUP.
--m MODE    $chmodprog installed files to MODE.
--o USER    $chownprog installed files to USER.
--s         $stripprog installed files.
--t DIRECTORY  install into DIRECTORY.
--T         report an error if DSTFILE is a directory.
---help     display this help and exit.
---version  display version info and exit.
-
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
-"
-
-while test -n "$1"; do
-  case $1 in
-    -c) shift
-        continue;;
-
-    -d) dir_arg=true
-        shift
-        continue;;
-
-    -g) chgrpcmd="$chgrpprog $2"
-        shift
-        shift
-        continue;;
-
-    --help) echo "$usage"; exit $?;;
-
-    -m) chmodcmd="$chmodprog $2"
-        shift
-        shift
-        continue;;
-
-    -o) chowncmd="$chownprog $2"
-        shift
-        shift
-        continue;;
-
-    -s) stripcmd=$stripprog
-        shift
-        continue;;
-
-    -t) dstarg=$2
-	shift
-	shift
-	continue;;
-
-    -T) no_target_directory=true
-	shift
-	continue;;
-
-    --version) echo "$0 $scriptversion"; exit $?;;
-
-    *)  # When -d is used, all remaining arguments are directories to create.
-	# When -t is used, the destination is already specified.
-	test -n "$dir_arg$dstarg" && break
-        # Otherwise, the last argument is the destination.  Remove it from $@.
-	for arg
-	do
-          if test -n "$dstarg"; then
-	    # $@ is not empty: it contains at least $arg.
-	    set fnord "$@" "$dstarg"
-	    shift # fnord
-	  fi
-	  shift # arg
-	  dstarg=$arg
-	done
-	break;;
-  esac
-done
-
-if test -z "$1"; then
-  if test -z "$dir_arg"; then
-    echo "$0: no input file specified." >&2
-    exit 1
-  fi
-  # It's OK to call `install-sh -d' without argument.
-  # This can happen when creating conditional directories.
-  exit 0
-fi
-
-for src
-do
-  # Protect names starting with `-'.
-  case $src in
-    -*) src=./$src ;;
-  esac
-
-  if test -n "$dir_arg"; then
-    dst=$src
-    src=
-
-    if test -d "$dst"; then
-      mkdircmd=:
-      chmodcmd=
-    else
-      mkdircmd=$mkdirprog
-    fi
-  else
-    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-    # might cause directories to be created, which would be especially bad
-    # if $src (and thus $dsttmp) contains '*'.
-    if test ! -f "$src" && test ! -d "$src"; then
-      echo "$0: $src does not exist." >&2
-      exit 1
-    fi
-
-    if test -z "$dstarg"; then
-      echo "$0: no destination specified." >&2
-      exit 1
-    fi
-
-    dst=$dstarg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst ;;
-    esac
-
-    # If destination is a directory, append the input filename; won't work
-    # if double slashes aren't ignored.
-    if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-	echo "$0: $dstarg: Is a directory" >&2
-	exit 1
-      fi
-      dst=$dst/`basename "$src"`
-    fi
-  fi
-
-  # This sed command emulates the dirname command.
-  dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
-
-  # Make sure that the destination directory exists.
-
-  # Skip lots of stat calls in the usual case.
-  if test ! -d "$dstdir"; then
-    defaultIFS='
-	 '
-    IFS="${IFS-$defaultIFS}"
-
-    oIFS=$IFS
-    # Some sh's can't handle IFS=/ for some reason.
-    IFS='%'
-    set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
-    shift
-    IFS=$oIFS
-
-    pathcomp=
-
-    while test $# -ne 0 ; do
-      pathcomp=$pathcomp$1
-      shift
-      if test ! -d "$pathcomp"; then
-        $mkdirprog "$pathcomp"
-	# mkdir can fail with a `File exist' error in case several
-	# install-sh are creating the directory concurrently.  This
-	# is OK.
-	test -d "$pathcomp" || exit
-      fi
-      pathcomp=$pathcomp/
-    done
-  fi
-
-  if test -n "$dir_arg"; then
-    $doit $mkdircmd "$dst" \
-      && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
-      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
-      && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
-      && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
-
-  else
-    dstfile=`basename "$dst"`
-
-    # Make a couple of temp file names in the proper directory.
-    dsttmp=$dstdir/_inst.$$_
-    rmtmp=$dstdir/_rm.$$_
-
-    # Trap to clean up those temp files at exit.
-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-    trap '(exit $?); exit' 1 2 13 15
-
-    # Copy the file name to the temp name.
-    $doit $cpprog "$src" "$dsttmp" &&
-
-    # and set any options; do chmod last to preserve setuid bits.
-    #
-    # If any of these fail, we abort the whole thing.  If we want to
-    # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $cpprog $src $dsttmp" command.
-    #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
-      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
-      && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
-      && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
-
-    # Now rename the file to the real destination.
-    { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
-      || {
-	   # The rename failed, perhaps because mv can't rename something else
-	   # to itself, or perhaps because mv is so ancient that it does not
-	   # support -f.
-
-	   # Now remove or move aside any old file at destination location.
-	   # We try this two ways since rm can't unlink itself on some
-	   # systems and the destination file might be busy for other
-	   # reasons.  In this case, the final cleanup might fail but the new
-	   # file should still install successfully.
-	   {
-	     if test -f "$dstdir/$dstfile"; then
-	       $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
-	       || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
-	       || {
-		 echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
-		 (exit 1); exit 1
-	       }
-	     else
-	       :
-	     fi
-	   } &&
-
-	   # Now rename the file to the real destination.
-	   $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
-	 }
-    }
-  fi || { (exit 1); exit 1; }
-done
-
-# The final little trick to "correctly" pass the exit status to the exit trap.
-{
-  (exit 0); exit 0
-}
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:

DELETED kitdll/buildsrc/kitdll-0.0/kitInit.c
Index: kitdll/buildsrc/kitdll-0.0/kitInit.c
==================================================================
--- kitdll/buildsrc/kitdll-0.0/kitInit.c
+++ /dev/null
@@ -1,305 +0,0 @@
-#ifdef KIT_INCLUDES_TK
-#  include <tk.h>
-#else
-#  include <tcl.h>
-#endif /* KIT_INCLUDES_TK */
-
-#ifdef _WIN32
-#  define WIN32_LEAN_AND_MEAN
-#  include <windows.h>
-#  undef WIN32_LEAN_AND_MEAN
-#endif /* _WIN32 */
-
-#ifdef HAVE_STRING_H
-#  include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-#  include <strings.h>
-#endif
-#ifdef HAVE_DLFCN_H
-#  include <dlfcn.h>
-#endif
-
-#include "tclInt.h"
-
-#if defined(HAVE_TCL_GETENCODINGNAMEFROMENVIRONMENT) && defined(HAVE_TCL_SETSYSTEMENCODING)
-#  define TCLKIT_CAN_SET_ENCODING 1
-#endif
-#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 85
-#  define TCLKIT_REQUIRE_TCLEXECUTABLENAME 1
-#endif
-#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 85
-#  define KIT_INCLUDES_PWB 1
-#endif
-#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 86
-#  define KIT_INCLUDES_ZLIB 1
-#endif
-
-Tcl_AppInitProc Vfs_Init, Rechan_Init;
-Tcl_AppInitProc Vfs_kitdll_data_tcl_Init;
-#ifdef KIT_INCLUDES_MK4TCL
-Tcl_AppInitProc Mk4tcl_Init;
-#endif
-#ifdef KIT_INCLUDES_PWB
-Tcl_AppInitProc Pwb_Init;
-#endif
-#ifdef KIT_INCLUDES_ZLIB
-Tcl_AppInitProc Zlib_Init;
-#endif
-#ifdef TCL_THREADS
-Tcl_AppInitProc Thread_Init;
-#endif
-#ifdef _WIN32
-Tcl_AppInitProc Dde_Init, Registry_Init;
-#endif
-
-/*
- * This Tcl code is invoked whenever Tcl_Init() is called on an
- * interpreter.  It should mount up the VFS and make everything ready for
- * that interpreter to do its job.
- */
-static char *preInitCmd =
-"proc tclKitInit {} {\n"
-	"rename tclKitInit {}\n"
-#ifdef KIT_INCLUDES_ZLIB
-	"catch { load {} zlib }\n"
-#endif
-	"load {} tclkit::init\n"
-	"load {} rechan\n"
-	"load {} vfs\n"
-	"load {} vfs_kitdll_data_tcl\n"
-#ifdef KIT_INCLUDES_MK4TCL
-	"catch { load {} Mk4tcl }\n"
-#endif
-#include "vfs_kitdll.tcl.h"
-	"if {![file exists \"/.KITDLL_TCL/boot.tcl\"]} {\n"
-		"vfs::kitdll::Mount tcl /.KITDLL_TCL\n"
-		"set ::initVFS 1\n"
-	"}\n"
-	"set f [open \"/.KITDLL_TCL/boot.tcl\"]\n"
-	"set s [read $f]\n"
-	"close $f\n"
-	"::tclkit::init::initInterp\n"
-	"rename ::tclkit::init::initInterp {}\n"
-	"uplevel #0 $s\n"
-#if defined(KIT_INCLUDES_TK) && defined(KIT_TK_VERSION)
-	"package ifneeded Tk " KIT_TK_VERSION " {\n"
-		"load {} Tk\n"
-	"}\n"
-#endif
-#ifdef _WIN32
-	"catch {load {} dde}\n"
-	"catch {load {} registry}\n"
-#endif /* _WIN32 */
-"}\n"
-"tclKitInit";
-
-#ifdef HAVE_ACCEPTABLE_DLADDR
-/* Symbol to resolve against dladdr() */
-static void _tclkit_dummy_func(void) {
-	return;
-}
-
-int main(int argc, char **argv);
-#endif /* HAVE_ACCEPTABLE_DLADDR */
-
-/*
- * This function will return a pathname we can open() to treat as a VFS,
- * hopefully
- */
-static char *find_tclkit_dll_path(void) {
-#ifdef HAVE_ACCEPTABLE_DLADDR
-	Dl_info syminfo;
-	int dladdr_ret;
-#endif /* HAVE_ACCEPTABLE_DLADDR */
-#ifdef _WIN32
-	TCHAR modulename[8192];
-	DWORD gmfn_ret;
-#endif /* _WIN32 */
-
-#ifdef HAVE_ACCEPTABLE_DLADDR
-	dladdr_ret = dladdr(&_tclkit_dummy_func, &syminfo);
-	if (dladdr_ret != 0) {
-		if (syminfo.dli_fname && syminfo.dli_fname[0] != '\0') {
-			return(strdup(syminfo.dli_fname));
-		}
-	}
-#endif /* HAVE_ACCEPTABLE_DLADDR */
-
-#ifdef _WIN32
-	gmfn_ret = GetModuleFileName(TclWinGetTclInstance(), modulename, sizeof(modulename) / sizeof(modulename[0]) - 1);
-
-	if (gmfn_ret != 0) {
-		return(strdup(modulename));
-	}
-#endif /* _WIN32 */
-
-	return(NULL);
-}
-
-/* SetExecName --
-	
-   Hack to get around Tcl bug 1224888.
-*/
-static void SetExecName(Tcl_Interp *interp, const char *path) {
-#ifdef TCLKIT_REQUIRE_TCLEXECUTABLENAME
-	tclExecutableName = strdup(path);
-#endif  
-	Tcl_FindExecutable(path);
-
-	return;
-}
-	
-static void FindAndSetExecName(Tcl_Interp *interp) {
-	int len = 0;
-	Tcl_Obj *execNameObj;
-	Tcl_Obj *lobjv[1];
-#ifdef HAVE_READLINK
-	ssize_t readlink_ret;
-	char exe_buf[4096];
-#endif /* HAVE_READLINK */
-#ifdef HAVE_ACCEPTABLE_DLADDR
-	Dl_info syminfo;
-	int dladdr_ret;
-#endif /* HAVE_ACCEPTABLE_DLADDR */
-
-#ifdef HAVE_READLINK
-	if (Tcl_GetNameOfExecutable() == NULL) {
-		readlink_ret = readlink("/proc/self/exe", exe_buf, sizeof(exe_buf) - 1);
-		
-		if (readlink_ret > 0 && readlink_ret < (sizeof(exe_buf) - 1)) {
-			exe_buf[readlink_ret] = '\0';
-			
-			SetExecName(interp, exe_buf);
-			
-			return;
-		}
-	}
-	
-	if (Tcl_GetNameOfExecutable() == NULL) {
-		readlink_ret = readlink("/proc/curproc/file", exe_buf, sizeof(exe_buf) - 1);												 
-
-		if (readlink_ret > 0 && readlink_ret < (sizeof(exe_buf) - 1)) {
-			exe_buf[readlink_ret] = '\0';
-
-			if (strcmp(exe_buf, "unknown") != 0) {
-				SetExecName(interp, exe_buf);
-
-				return;
-			}
-		}
-	}
-#endif /* HAVE_READLINK */
-
-#ifdef HAVE_ACCEPTABLE_DLADDR
-	if (Tcl_GetNameOfExecutable() == NULL) {
-		dladdr_ret = dladdr(&main, &syminfo);
-		if (dladdr_ret != 0) {
-			SetExecName(interp, syminfo.dli_fname);
-		}
-	}
-#endif /* HAVE_ACCEPTABLE_DLADDR */
-
-	if (Tcl_GetNameOfExecutable() == NULL) {
-		lobjv[0] = Tcl_GetVar2Ex(interp, "argv0", NULL, TCL_GLOBAL_ONLY);
-		execNameObj = Tcl_FSJoinToPath(Tcl_FSGetCwd(interp), 1, lobjv);
-
-		SetExecName(interp, Tcl_GetStringFromObj(execNameObj, &len));
-
-		return;
-	}
-
-	return;
-}
-
-
-/*
- * This function exists to allow C code to initialize a particular
- * interpreter.
- */
-static int tclkit_init_initinterp(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
-	char *kitdll_path;
-#ifdef TCLKIT_CAN_SET_ENCODING
-	Tcl_DString encodingName;
-#endif /* TCLKIT_CAN_SET_ENCODING */
-
-
-#ifdef _WIN32
-	Tcl_SetVar(interp, "tcl_rcFileName", "~/tclkitrc.tcl", TCL_GLOBAL_ONLY);
-#else   
-	Tcl_SetVar(interp, "tcl_rcFileName", "~/.tclkitrc", TCL_GLOBAL_ONLY);
-#endif
-
-	kitdll_path = find_tclkit_dll_path();
-	if (kitdll_path != NULL) {
-		Tcl_SetVar(interp, "tclKitFilename", kitdll_path, TCL_GLOBAL_ONLY);
-
-		free(kitdll_path);
-	}
-
-	FindAndSetExecName(interp);
-
-#ifdef TCLKIT_CAN_SET_ENCODING
-	/* Set the encoding from the Environment */
-	Tcl_GetEncodingNameFromEnvironment(&encodingName);
-	Tcl_SetSystemEncoding(NULL, Tcl_DStringValue(&encodingName));
-	Tcl_SetVar(interp, "tclkit_system_encoding", Tcl_DStringValue(&encodingName), TCL_GLOBAL_ONLY);
-	Tcl_DStringFree(&encodingName);
-#endif  
-
-	return(TCL_OK);
-}
-
-/*
- * Create a package for initializing a particular interpreter.  This is
- * our hook to have Tcl invoke C commands when creating an interpreter.
- * The preInitCmd will load the package in the new interpreter and invoke
- * this function.
- */
-int Tclkit_init_Init(Tcl_Interp *interp) {
-	Tcl_Command tclCreatComm_ret;
-	int tclPkgProv_ret;
-
-	tclCreatComm_ret = Tcl_CreateObjCommand(interp, "::tclkit::init::initInterp", tclkit_init_initinterp, NULL, NULL);
-	if (!tclCreatComm_ret) {
-		return(TCL_ERROR);
-	}
-
-	tclPkgProv_ret = Tcl_PkgProvide(interp, "tclkit::init", "1.0");
-
-	return(tclPkgProv_ret);
-}
-
-/*
- * Initialize the Tcl system when we are loaded, that way Tcl functions
- * are ready to be used when invoked.
- */
-void __attribute__((constructor)) _Tclkit_Init(void) {
-	Tcl_StaticPackage(0, "tclkit::init", Tclkit_init_Init, NULL);
-	Tcl_StaticPackage(0, "rechan", Rechan_Init, NULL);
-	Tcl_StaticPackage(0, "vfs", Vfs_Init, NULL);
-	Tcl_StaticPackage(0, "vfs_kitdll_data_tcl", Vfs_kitdll_data_tcl_Init, NULL);
-#ifdef KIT_INCLUDES_ZLIB
-        Tcl_StaticPackage(0, "zlib", Zlib_Init, NULL);
-#endif
-#ifdef KIT_INCLUDES_MK4TCL
-	Tcl_StaticPackage(0, "Mk4tcl", Mk4tcl_Init, NULL);
-#endif
-#ifdef KIT_INCLUDES_PWB
-	Tcl_StaticPackage(0, "pwb", Pwb_Init, NULL);
-#endif
-#ifdef TCL_THREADS
-	Tcl_StaticPackage(0, "Thread", Thread_Init, NULL);
-#endif
-#ifdef _WIN32
-	Tcl_StaticPackage(0, "dde", Dde_Init, NULL);
-	Tcl_StaticPackage(0, "registry", Registry_Init, NULL);
-#endif
-#ifdef KIT_INCLUDES_TK
-	Tcl_StaticPackage(0, "Tk", Tk_Init, Tk_SafeInit);
-#endif  
-
-	TclSetPreInitScript(preInitCmd);
-
-	return;
-}

DELETED kitdll/buildsrc/kitdll-0.0/pwb.c
Index: kitdll/buildsrc/kitdll-0.0/pwb.c
==================================================================
--- kitdll/buildsrc/kitdll-0.0/pwb.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Written by Matt Newman and Jean-Claude Wippler, as part of Tclkit.
- * March 2003 - placed in the public domain by the authors.
- *
- * Expose TclSetLibraryPath to scripts (in 8.4 only, 8.5 has "encoding dirs").
- */
-
-#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 85
-
-#include <tcl.h>
-#include <tclInt.h> /* TclGetLibraryPath */
-
-void SetExecName(Tcl_Interp *);
-
-/* Support for encodings, from Vince Darley <vince.darley@eurobios.com> */
-static int
-LibraryPathObjCmd(dummy, interp, objc, objv)
-     ClientData dummy;
-     Tcl_Interp *interp;
-     int objc;
-     Tcl_Obj *CONST objv[];
-{
-     if (objc == 1) {
-	Tcl_SetObjResult(interp, TclGetLibraryPath());
-     } else {
-	Tcl_Obj *path=Tcl_DuplicateObj(objv[1]);
-	TclSetLibraryPath(Tcl_NewListObj(1,&path));
-	TclpSetInitialEncodings();
-     }
-     return TCL_OK;
-}
-
-/*
- * Public Entrypoint
- */
-
-DLLEXPORT int Pwb_Init(Tcl_Interp *interp)
-{
-    Tcl_CreateObjCommand(interp, "librarypath", LibraryPathObjCmd, 0, 0);
-    return Tcl_PkgProvide( interp, "pwb", "1.1");
-}
-
-#endif

DELETED kitdll/buildsrc/kitdll-0.0/rechan.c
Index: kitdll/buildsrc/kitdll-0.0/rechan.c
==================================================================
--- kitdll/buildsrc/kitdll-0.0/rechan.c
+++ /dev/null
@@ -1,295 +0,0 @@
-/* Written by Matt Newman and Jean-Claude Wippler, as part of Tclkit.
- * March 2003 - placed in the public domain by the authors.
- *
- * Reflecting channel interface
- */
-
-#include <tcl.h>
-
-#ifndef TCL_DECLARE_MUTEX
-#define TCL_DECLARE_MUTEX(v)
-#define Tcl_MutexLock(v)
-#define Tcl_MutexUnlock(v)
-#endif
-
-  static int mkChanSeq = 0;
-  TCL_DECLARE_MUTEX(rechanMutex)
-
-/* Uncomment for Linux or other non-Solaris OS's for memcpy declaration */
-#include <memory.h>
-
-/* Uncomment for Solaris (and comment above) for memcpy declaration */
-/* #include <string.h> */
-
-#ifndef EINVAL
-#define EINVAL 9
-#endif
-
-typedef struct
-{
-  Tcl_Channel _chan;
-  int _validMask;
-  int _watchMask;
-  Tcl_Interp* _interp;
-  Tcl_Obj* _context;
-  Tcl_Obj* _seek;
-  Tcl_Obj* _read;
-  Tcl_Obj* _write;
-  Tcl_Obj* _name;
-  Tcl_TimerToken _timer;
-} ReflectingChannel;
-
-static ReflectingChannel*
-rcCreate (Tcl_Interp* ip_, Tcl_Obj* context_, int mode_, const char* name_)
-{
-  ReflectingChannel* cp = (ReflectingChannel*) Tcl_Alloc (sizeof *cp);
-
-  cp->_validMask = mode_;
-  cp->_watchMask = 0;
-  cp->_chan = 0;
-  cp->_context = context_;
-  cp->_interp = ip_;
-  cp->_name = Tcl_NewStringObj(name_, -1);
-  cp->_timer = NULL;
-
-    /* support Tcl_GetIndexFromObj by keeping these objectified */
-  cp->_seek = Tcl_NewStringObj("seek", -1);
-  cp->_read = Tcl_NewStringObj("read", -1);
-  cp->_write = Tcl_NewStringObj("write", -1);
-
-  Tcl_IncrRefCount(cp->_context);
-  Tcl_IncrRefCount(cp->_seek);
-  Tcl_IncrRefCount(cp->_read);
-  Tcl_IncrRefCount(cp->_write);
-  Tcl_IncrRefCount(cp->_name);
-
-  return cp;
-}
-
-static Tcl_Obj*
-rcBuildCmdList(ReflectingChannel* chan_, Tcl_Obj* cmd_)
-{
-  Tcl_Obj* vec = Tcl_DuplicateObj(chan_->_context);
-  Tcl_IncrRefCount(vec);
-
-  Tcl_ListObjAppendElement(chan_->_interp, vec, cmd_);
-  Tcl_ListObjAppendElement(chan_->_interp, vec, chan_->_name);
-
-  return vec; /* with refcount 1 */
-}
-
-static int
-rcClose (ClientData cd_, Tcl_Interp* interp)
-{
-  ReflectingChannel* chan = (ReflectingChannel*) cd_;
-  int n = -1;
-
-  Tcl_SavedResult sr;
-  Tcl_Obj* cmd = rcBuildCmdList(chan, Tcl_NewStringObj("close", -1));
-  Tcl_Interp* ip = chan->_interp;
-
-  Tcl_SaveResult(ip, &sr);
-
-  if (Tcl_EvalObjEx(ip, cmd, TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT) == TCL_OK)
-    Tcl_GetIntFromObj(NULL, Tcl_GetObjResult(ip), &n);
-
-  Tcl_RestoreResult(ip, &sr);
-  Tcl_DecrRefCount(cmd);
-
-  if (chan->_timer != NULL) {
-    Tcl_DeleteTimerHandler(chan->_timer);
-    chan->_timer = NULL;
-  }
-
-  Tcl_DecrRefCount(chan->_context);
-  Tcl_DecrRefCount(chan->_seek);
-  Tcl_DecrRefCount(chan->_read);
-  Tcl_DecrRefCount(chan->_write);
-  Tcl_DecrRefCount(chan->_name);
-  Tcl_Free((char*) chan);
-
-  return TCL_OK;
-}
-
-static int
-rcInput (ClientData cd_, char* buf, int toRead, int* errorCodePtr)
-{
-  ReflectingChannel* chan = (ReflectingChannel*) cd_;
-  int n = -1;
-
-  if (chan->_validMask & TCL_READABLE) {
-    Tcl_SavedResult sr;
-    Tcl_Obj* cmd = rcBuildCmdList(chan, chan->_read);
-    Tcl_Interp* ip = chan->_interp;
-
-    Tcl_ListObjAppendElement(NULL, cmd, Tcl_NewIntObj(toRead));
-    Tcl_SaveResult(ip, &sr);
-
-    if (Tcl_EvalObjEx(ip, cmd, TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT) == TCL_OK) {
-      void* s = Tcl_GetByteArrayFromObj(Tcl_GetObjResult(ip), &n);
-      if (0 <= n && n <= toRead)
-	if (n > 0)
-	  memcpy(buf, s, n);
-	else
-	  chan->_watchMask &= ~TCL_READABLE;
-      else
-	n = -1;
-    }
-
-    Tcl_RestoreResult(ip, &sr);
-    Tcl_DecrRefCount(cmd);
-  }
-
-  if (n < 0)
-    *errorCodePtr = EINVAL;
-  return n;
-}
-
-static int
-rcOutput (ClientData cd_, const char* buf, int toWrite, int* errorCodePtr)
-{
-  ReflectingChannel* chan = (ReflectingChannel*) cd_;
-  int n = -1;
-
-  if (chan->_validMask & TCL_WRITABLE) {
-    Tcl_SavedResult sr;
-    Tcl_Obj* cmd = rcBuildCmdList(chan, chan->_write);
-    Tcl_Interp* ip = chan->_interp;
-
-    Tcl_ListObjAppendElement(NULL, cmd,
-	      		Tcl_NewByteArrayObj((unsigned char*) buf, toWrite));
-    Tcl_SaveResult(ip, &sr);
-
-    if (Tcl_EvalObjEx(ip, cmd, TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT) == TCL_OK &&
-	Tcl_GetIntFromObj(NULL, Tcl_GetObjResult(ip), &n) == TCL_OK)
-      if (0 <= n && n <= toWrite)
-	chan->_watchMask = chan->_validMask;
-      else
-	n = -1;
-
-    Tcl_RestoreResult(ip, &sr);
-    Tcl_DecrRefCount(cmd);
-  }
-
-  if (n < 0)
-    *errorCodePtr = EINVAL;
-  return n;
-}
-
-static int
-rcSeek (ClientData cd_, long offset, int seekMode, int* errorCodePtr)
-{
-  ReflectingChannel* chan = (ReflectingChannel*) cd_;
-  int n = -1;
-
-  Tcl_SavedResult sr;
-  Tcl_Obj* cmd = rcBuildCmdList(chan, chan->_seek);
-  Tcl_Interp* ip = chan->_interp;
-
-  Tcl_ListObjAppendElement(NULL, cmd, Tcl_NewLongObj(offset));
-  Tcl_ListObjAppendElement(NULL, cmd, Tcl_NewIntObj(seekMode));
-  Tcl_SaveResult(ip, &sr);
-
-  if (Tcl_EvalObjEx(ip, cmd, TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT) == TCL_OK &&
-      Tcl_GetIntFromObj(NULL, Tcl_GetObjResult(ip), &n) == TCL_OK)
-    chan->_watchMask = chan->_validMask;
-
-  Tcl_RestoreResult(ip, &sr);
-  Tcl_DecrRefCount(cmd);
-
-  if (n < 0)
-    *errorCodePtr = EINVAL;
-  return n;
-}
-
-static void
-rcTimerProc (ClientData cd_)
-{
-  ReflectingChannel* chan = (ReflectingChannel*) cd_;
-
-  if (chan->_timer != NULL)
-    Tcl_DeleteTimerHandler(chan->_timer);
-  chan->_timer = NULL;
-  Tcl_NotifyChannel(chan->_chan, chan->_watchMask);
-}
-
-static void
-rcWatchChannel (ClientData cd_, int mask)
-{
-  ReflectingChannel* chan = (ReflectingChannel*) cd_;
-
-  /* Dec 2001: adopting logic used in Andreas Kupries' memchan, i.e. timers */
-
-  if (mask) {
-    chan->_watchMask = mask & chan->_validMask;
-    if (chan->_watchMask && chan->_timer == NULL)
-      chan->_timer = Tcl_CreateTimerHandler(5, rcTimerProc, cd_);
-  } else if (chan->_timer != NULL) {
-    Tcl_DeleteTimerHandler(chan->_timer);
-    chan->_timer = NULL;
-  }
-}
-
-static int
-rcGetFile (ClientData cd_, int direction, ClientData* handlePtr)
-{
-  return TCL_ERROR;
-}
-
-static int
-rcBlock (ClientData cd_, int mode)
-{
-  return 0;
-}
-
-static Tcl_ChannelType reChannelType = {
-  "rechan",       /* Type name.                                    */
-  (Tcl_ChannelTypeVersion) rcBlock, /* Set blocking/nonblocking behaviour */
-  rcClose,        /* Close channel, clean instance data            */
-  rcInput,        /* Handle read request                           */
-  rcOutput,       /* Handle write request                          */
-  rcSeek,         /* Move location of access point.    NULL'able   */
-  0,              /* Set options.                      NULL'able   */
-  0,              /* Get options.                      NULL'able   */
-  rcWatchChannel, /* Initialize notifier                           */
-  rcGetFile       /* Get OS handle from the channel.               */
-};
-
-static int
-cmd_rechan(ClientData cd_, Tcl_Interp* ip_, int objc_, Tcl_Obj*const* objv_)
-{
-  ReflectingChannel *rc;
-  int mode;
-  char buffer [20];
-
-  if (objc_ != 3) {
-    Tcl_WrongNumArgs(ip_, 1, objv_, "command mode");
-    return TCL_ERROR;
-  }
-
-  if (Tcl_ListObjLength(ip_, objv_[1], &mode) == TCL_ERROR ||
-      Tcl_GetIntFromObj(ip_, objv_[2], &mode) == TCL_ERROR)
-    return TCL_ERROR;
-
-  Tcl_MutexLock(&rechanMutex);
-  sprintf(buffer, "rechan%d", ++mkChanSeq);
-  Tcl_MutexUnlock(&rechanMutex);
-
-  rc = rcCreate (ip_, objv_[1], mode, buffer);
-  rc->_chan = Tcl_CreateChannel(&reChannelType, buffer, (ClientData) rc, mode);
-
-  Tcl_RegisterChannel(ip_, rc->_chan);
-  Tcl_SetChannelOption(ip_, rc->_chan, "-buffering", "none");
-  Tcl_SetChannelOption(ip_, rc->_chan, "-blocking", "0");
-
-  Tcl_SetResult(ip_, buffer, TCL_VOLATILE);
-  return TCL_OK;
-}
-
-DLLEXPORT int Rechan_Init(Tcl_Interp* interp)
-{
-    if (!Tcl_InitStubs(interp, "8.4", 0))
-        return TCL_ERROR;
-    Tcl_CreateObjCommand(interp, "rechan", cmd_rechan, 0, 0);
-    return Tcl_PkgProvide(interp, "rechan", "1.0");
-}

DELETED kitdll/buildsrc/kitdll-0.0/stringify.tcl
Index: kitdll/buildsrc/kitdll-0.0/stringify.tcl
==================================================================
--- kitdll/buildsrc/kitdll-0.0/stringify.tcl
+++ /dev/null
@@ -1,27 +0,0 @@
-#! /usr/bin/env tclsh
-
-proc stringifyfile {filename {key 0}} {
-	catch {
-		set fd [open $filename r]
-	}
-
-	if {![info exists fd]} {
-		return ""
-	}
-
-	set data [read -nonewline $fd]
-	close $fd
-
-	foreach line [split $data \n] {
-		set line [string map [list "\\" "\\\\" "\"" "\\\""] $line]
-		append ret "	\"$line\\n\"\n"
-	}
-
-	return $ret
-}
-
-foreach file $argv {
-	puts -nonewline [stringifyfile $file]
-}
-
-exit 0

DELETED kitdll/buildsrc/kitdll-0.0/tclsh.c
Index: kitdll/buildsrc/kitdll-0.0/tclsh.c
==================================================================
--- kitdll/buildsrc/kitdll-0.0/tclsh.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <tcl.h>
-
-int Tcl_AppInit(Tcl_Interp *interp) {
-	return(Tcl_Init(interp));
-}
-
-int main(int argc, char **argv) {
-	Tcl_Main(argc, argv, Tcl_AppInit);
-
-	return(1);
-}

DELETED kitdll/buildsrc/kitdll-0.0/vfs_kitdll.tcl
Index: kitdll/buildsrc/kitdll-0.0/vfs_kitdll.tcl
==================================================================
--- kitdll/buildsrc/kitdll-0.0/vfs_kitdll.tcl
+++ /dev/null
@@ -1,335 +0,0 @@
-#! /usr/bin/env tcl
-
-package require vfs
-
-namespace eval ::vfs::kitdll {}
-
-# Convience functions
-proc ::vfs::kitdll::Mount {hashkey local} {
-	vfs::filesystem mount $local [list ::vfs::kitdll::vfshandler $hashkey]
-	catch {
-		vfs::RegisterMount $local [list ::vfs::kitdll::Unmount]
-	}
-}
-
-proc ::vfs::kitdll::Unmount {local} {
-	vfs::filesystem unmount $local
-}
-
-# Implementation
-## I/O Handlers (pass to appropriate hashkey)
-namespace eval ::vfs::kitdll::data {}
-proc ::vfs::kitdll::data::getChildren args {
-	set hashkey [lindex $args 0]
-
-	set cmd "::vfs::kitdll::data::${hashkey}::getChildren"
-	set cmd [linsert $args 0 $cmd]
-
-	eval $cmd
-}
-
-proc ::vfs::kitdll::data::getMetadata args {
-	set hashkey [lindex $args 0]
-
-	set cmd "::vfs::kitdll::data::${hashkey}::getMetadata"
-	set cmd [linsert $args 0 $cmd]
-
-	eval $cmd
-}
-
-proc ::vfs::kitdll::data::getData args {
-	set hashkey [lindex $args 0]
-
-	set cmd "::vfs::kitdll::data::${hashkey}::getData"
-	set cmd [linsert $args 0 $cmd]
-
-	eval $cmd
-}
-
-## VFS and Chan I/O
-### Dispatchers
-proc ::vfs::kitdll::vfshandler {hashkey subcmd args} {
-	set cmd $args
-	set cmd [linsert $cmd 0 "::vfs::kitdll::vfsop_${subcmd}" $hashkey]
-
-	return [eval $cmd]
-}
-
-proc ::vfs::kitdll::chanhandler {hashkey subcmd args} {
-	set cmd $args
-	set cmd [linsert $cmd 0 "::vfs::kitdll::chanop_${subcmd}" $hashkey]
-
-	return [eval $cmd]
-}
-
-### Actual handlers
-#### Channel operation handlers
-proc ::vfs::kitdll::chanop_initialize {hashkey chanId mode} {
-	return [list initialize finalize watch read seek]
-}
-
-proc ::vfs::kitdll::chanop_finalize {hashkey chanId} {
-	unset -nocomplain ::vfs::kitdll::chandata([list $hashkey $chanId])
-
-	return
-}
-
-proc ::vfs::kitdll::chanop_watch {hashkey chanId eventSpec} {
-	array set chaninfo $::vfs::kitdll::chandata([list $hashkey $chanId])
-
-	set chaninfo(watching) $eventSpec
-
-	set ::vfs::kitdll::chandata([list $hashkey $chanId]) [array get chaninfo]
-
-	if {[lsearch -exact $chaninfo(watching) "read"] != -1} {
-		after 0 [list catch "chan postevent $chanId [list {read}]"]
-	}
-
-	return
-}
-
-proc ::vfs::kitdll::chanop_read {hashkey chanId bytes} {
-	array set chaninfo $::vfs::kitdll::chandata([list $hashkey $chanId])
-
-	set pos $chaninfo(pos)
-	set len $chaninfo(len)
-
-	if {[lsearch -exact $chaninfo(watching) "read"] != -1} {
-		after 0 [list catch "chan postevent $chanId [list {read}]"]
-	}
-
-	if {$pos == $len} {
-		return ""
-	}
-
-	set end [expr {$pos + $bytes}]
-	if {$end > $len} {
-		set end $len
-	}
-
-	set data [::vfs::kitdll::data::getData $hashkey $chaninfo(file) $pos $end]
-
-	set dataLen [string length $data]
-	incr pos $dataLen
-
-	set chaninfo(pos) $pos
-
-	set ::vfs::kitdll::chandata([list $hashkey $chanId]) [array get chaninfo]
-
-	return $data
-}
-
-proc ::vfs::kitdll::chanop_seek {hashkey chanId offset origin} {
-	array set chaninfo $::vfs::kitdll::chandata([list $hashkey $chanId])
-
-	set pos $chaninfo(pos)
-	set len $chaninfo(len)
-
-	switch -- $origin {
-		"start" - "0" {
-			set pos $offset
-		}
-		"current" - "1" {
-			set pos [expr {$pos + $offset}]
-		}
-		"end" - "2" {
-			set pos [expr {$len + $offset}]
-		}
-	}
-
-	if {$pos < 0} {
-		set pos 0
-	}
-
-	if {$pos > $len} {
-		set pos $len
-	}
-
-	set chaninfo(pos) $pos
-	set ::vfs::kitdll::chandata([list $hashkey $chanId]) [array get chaninfo]
-
-	return $pos
-}
-
-#### VFS operation handlers
-proc ::vfs::kitdll::vfsop_stat {hashkey root relative actualpath} {
-	catch {
-		set ret [::vfs::kitdll::data::getMetadata $hashkey $relative]
-	}
-
-	if {![info exists ret]} {
-		vfs::filesystem posixerror $::vfs::posix(ENOENT)
-	}
-
-	return $ret
-}
-
-proc ::vfs::kitdll::vfsop_access {hashkey root relative actualpath mode} {
-	set ret [::vfs::kitdll::data::getMetadata $hashkey $relative]
-
-	if {$mode & 0x2} {
-		vfs::filesystem posixerror $::vfs::posix(EROFS)
-	}
-
-	return 1
-}
-
-proc ::vfs::kitdll::vfsop_matchindirectory {hashkey root relative actualpath pattern types} {
-	set ret [list]
-
-	catch {
-		array set metadata [::vfs::kitdll::data::getMetadata $hashkey $relative]
-	}
-
-	if {![info exists metadata]} {
-		return [list]
-	}
-
-	if {$pattern == ""} {
-		set children [list $relative]
-	} else {
-		set children [::vfs::kitdll::data::getChildren $hashkey $relative]
-	}
-
-	foreach child $children {
-		if {$pattern != ""} {
-			if {![string match $pattern $child]} {
-				continue
-			}
-		}
-
-		unset -nocomplain metadata
-		catch {
-			array set metadata [::vfs::kitdll::data::getMetadata $hashkey $child]
-		}
-
-		if {[string index $root end] == "/"} {
-			set child "${root}${child}"
-		} else {
-			set child "${root}/${child}"
-		}
-		if {[string index $child end] == "/"} {
-			set child [string range $child 0 end-1]
-		}
-
-		if {![info exists metadata(type)]} {
-			continue
-		}
-
-		set filetype 0
-		switch -- $metadata(type) {
-			"directory" {
-				set filetype [expr {$filetype | 0x04}]
-			}
-			"file" {
-				set filetype [expr {$filetype | 0x10}]
-			}
-			"link" {
-				set filetype [expr {$filetype | 0x20}]
-			}
-			default {
-				continue
-			}
-		}
-
-		if {($filetype & $types) != $types} {
-			continue
-		}
-
-		lappend ret $child
-	}
-
-	return $ret
-}
-
-proc ::vfs::kitdll::vfsop_fileattributes {hashkey root relative actualpath {index -1} {value ""}} {
-	set attrs [list -owner -group -permissions]
-
-	if {$value != ""} {
-		vfs::filesystem posixerror $::vfs::posix(EROFS)
-	}
-
-	if {$index == -1} {
-		return $attrs
-	}
-
-	array set metadata [::vfs::kitdll::data::getMetadata $hashkey $relative]
-
-	set attr [lindex $attrs $index]
-
-	switch -- $attr {
-		"-owner" {
-			return $metadata(uid)
-		}
-		"-group" {
-			return $metadata(gid)
-		}
-		"-permissions" {
-			if {$metadata(type) == "directory"} {
-				set metadata(mode) [expr {$metadata(mode) | 040000}]
-			}
-
-			return [format {0%o} $metadata(mode)]
-		}
-	}
-
-	return -code error "Invalid index"
-}
-
-proc ::vfs::kitdll::vfsop_open {hashkey root relative actualpath mode permissions} {
-	if {$mode != "" && $mode != "r"} {
-		vfs::filesystem posixerror $::vfs::posix(EROFS)
-	}
-
-	catch {
-		array set metadata [::vfs::kitdll::data::getMetadata $hashkey $relative]
-	}
-
-	if {![info exists metadata]} {
-		vfs::filesystem posixerror $::vfs::posix(ENOENT)
-	}
-
-	if {$metadata(type) == "directory"} {
-		vfs::filesystem posixerror $::vfs::posix(EISDIR)
-	}
-
-	if {[info command chan] != ""} {
-		set chan [chan create [list "read"] [list ::vfs::kitdll::chanhandler $hashkey]]
-
-		set ::vfs::kitdll::chandata([list $hashkey $chan]) [list file $relative pos 0 len $metadata(size) watching ""]
-
-		return [list $chan]
-	}
-
-	if {[info command rechan] == ""} {
-		catch {
-			package require rechan
-		}
-	}
-
-	if {[info command rechan] != ""} {
-		set chan [rechan [list ::vfs::kitdll::chanhandler $hashkey] 2]
-
-		set ::vfs::kitdll::chandata([list $hashkey $chan]) [list file $relative pos 0 len $metadata(size) watching ""]
-
-		return [list $chan]
-	}
-
-	return -code error "No way to generate a channel, need either Tcl 8.5+, \"rechan\""
-}
-
-##### No-Ops since we are a readonly filesystem
-proc ::vfs::kitdll::vfsop_createdirectory {args} {
-	vfs::filesystem posixerror $::vfs::posix(EROFS)
-}
-proc ::vfs::kitdll::vfsop_deletefile {args} {
-	vfs::filesystem posixerror $::vfs::posix(EROFS)
-}
-proc ::vfs::kitdll::vfsop_removedirectory {args} {
-	vfs::filesystem posixerror $::vfs::posix(EROFS)
-}
-proc ::vfs::kitdll::vfsop_utime {} {
-	vfs::filesystem posixerror $::vfs::posix(EROFS)
-}
-
-package provide vfs::kitdll 1.0

DELETED kitdll/buildsrc/kitdll-0.0/vfs_kitdll_data.c
Index: kitdll/buildsrc/kitdll-0.0/vfs_kitdll_data.c
==================================================================
--- kitdll/buildsrc/kitdll-0.0/vfs_kitdll_data.c
+++ /dev/null
@@ -1,270 +0,0 @@
-#include <tcl.h>
-
-#ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-#endif
-
-typedef struct kitdll_data *(cmd_getData_t)(const char *, unsigned long);
-typedef unsigned long (cmd_getChildren_t)(const char *, unsigned long *, unsigned long);
-
-/* Your implementation must provide these */
-static cmd_getData_t *getCmdData(const char *hashkey);
-static cmd_getChildren_t *getCmdChildren(const char *hashkey);
-
-/* Tcl Commands */
-static int getMetadata(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
-	cmd_getData_t *cmd_getData;
-	cmd_getChildren_t *cmd_getChildren;
-	struct kitdll_data *finfo = NULL;
-	Tcl_Obj *ret_list, *ret_list_items[20];
-	unsigned long num_children;
-	const char *hashkey;
-	const char *file;
-
-	if (objc != 3) {
-		Tcl_SetResult(interp, "wrong # args: should be \"getMetadata hashKey fileName\"", TCL_STATIC);
-
-		return(TCL_ERROR);
-	}
-
-	hashkey = Tcl_GetString(objv[1]);
-	file = Tcl_GetString(objv[2]);
-
-	cmd_getData = getCmdData(hashkey);
-	cmd_getChildren = getCmdChildren(hashkey);
-
-	if (cmd_getData == NULL || cmd_getChildren == NULL) {
-		Tcl_SetResult(interp, "No such hashkey", TCL_STATIC);
-
-		return(TCL_ERROR);
-	}
-
-	finfo = cmd_getData(file, 0);
-
-	if (finfo == NULL) {
-		Tcl_SetResult(interp, "No such file or directory", TCL_STATIC);
-
-		return(TCL_ERROR);
-	}
-
-	/* Values that can be derived from "finfo" */
-	ret_list_items[0] = Tcl_NewStringObj("type", 4);
-	ret_list_items[2] = Tcl_NewStringObj("mode", 4);
-	ret_list_items[4] = Tcl_NewStringObj("nlink", 5);
-
-	if (finfo->type == KITDLL_FILETYPE_DIR) {
-		num_children = cmd_getChildren(file, NULL, 0);
-
-		ret_list_items[1] = Tcl_NewStringObj("directory", 9);
-		ret_list_items[3] = Tcl_NewLongObj(040555);
-		ret_list_items[5] = Tcl_NewLongObj(num_children);
-	} else {
-		ret_list_items[1] = Tcl_NewStringObj("file", 4);
-		ret_list_items[3] = Tcl_NewLongObj(0444);
-		ret_list_items[5] = Tcl_NewLongObj(1);
-	}
-
-	ret_list_items[6] = Tcl_NewStringObj("ino", 3);
-	ret_list_items[7] = Tcl_NewLongObj(finfo->index);
-
-	ret_list_items[8] = Tcl_NewStringObj("size", 4);
-	ret_list_items[9] = Tcl_NewLongObj(finfo->size);
-
-	/* Dummy values */
-	ret_list_items[10] = Tcl_NewStringObj("uid", 3);
-	ret_list_items[11] = Tcl_NewStringObj("0", 1);
-
-	ret_list_items[12] = Tcl_NewStringObj("gid", 3);
-	ret_list_items[13] = Tcl_NewStringObj("0", 1);
-
-	ret_list_items[14] = Tcl_NewStringObj("atime", 5);
-	ret_list_items[15] = Tcl_NewStringObj("0", 1);
-
-	ret_list_items[16] = Tcl_NewStringObj("mtime", 5);
-	ret_list_items[17] = Tcl_NewStringObj("0", 1);
-
-	ret_list_items[18] = Tcl_NewStringObj("ctime", 5);
-	ret_list_items[19] = Tcl_NewStringObj("0", 1);
-
-	ret_list = Tcl_NewListObj(sizeof(ret_list_items) / sizeof(ret_list_items[0]), ret_list_items);
-
-	Tcl_SetObjResult(interp, ret_list);
-
-	return(TCL_OK);
-}
-
-static int getData(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
-	struct kitdll_data *finfo = NULL;
-	cmd_getData_t *cmd_getData;
-	const char *hashkey;
-	const char *file;
-	const char *end_str;
-	Tcl_Obj *ret_str;
-	long start = 0;
-	long end = -1;
-	int tclGetLFO_ret;
-
-	if (objc < 3 || objc > 5) {
-		Tcl_SetResult(interp, "wrong # args: should be \"getData hashKey fileName ?start? ?end?\"", TCL_STATIC);
-
-		return(TCL_ERROR);
-	}
-
-	hashkey = Tcl_GetString(objv[1]);
-	file = Tcl_GetString(objv[2]);
-
-	if (objc > 3) {
-		tclGetLFO_ret = Tcl_GetLongFromObj(interp, objv[3], &start);
-
-		if (tclGetLFO_ret != TCL_OK) {
-			return(tclGetLFO_ret);
-		}
-	}
-
-	if (objc > 4) {
-		end_str = Tcl_GetString(objv[4]);
-		if (strcmp(end_str, "end") == 0) {
-			end = -1;
-		} else {
-			tclGetLFO_ret = Tcl_GetLongFromObj(interp, objv[4], &end);
-
-			if (tclGetLFO_ret != TCL_OK) {
-				return(tclGetLFO_ret);
-			}
-		}
-	}
-
-	cmd_getData = getCmdData(hashkey);
-
-	if (cmd_getData == NULL) {
-		Tcl_SetResult(interp, "No such hashkey", TCL_STATIC);
-
-		return(TCL_ERROR);
-	}
-
-	finfo = cmd_getData(file, 0);
-
-	if (finfo == NULL) {
-		Tcl_SetResult(interp, "No such file or directory", TCL_STATIC);
-
-		return(TCL_ERROR);
-	}
-
-	if (finfo->type != KITDLL_FILETYPE_FILE) {
-		Tcl_SetResult(interp, "Not a file", TCL_STATIC);
-
-		return(TCL_ERROR);
-	}
-
-	if (end == -1) {
-		end = finfo->size;
-	}
-
-	if (end > finfo->size) {
-		end = finfo->size;
-	}
-
-	if (start < 0) {
-		start = 0;
-	}
-
-	if (end < 0) {
-		end = 0;
-	}
-
-	if (end < start) {
-		Tcl_SetResult(interp, "Invalid arguments, start must be less than end", TCL_STATIC);
-
-		return(TCL_ERROR);
-	}
-
-	ret_str = Tcl_NewByteArrayObj(finfo->data + start, (end - start));
-
-	Tcl_SetObjResult(interp, ret_str);
-
-	return(TCL_OK);
-}
-
-static int getChildren(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
-	struct kitdll_data *finfo = NULL;
-	cmd_getChildren_t *cmd_getChildren;
-	cmd_getData_t *cmd_getData;
-	unsigned long num_children, idx;
-	unsigned long *children;
-	const char *hashkey;
-	const char *file;
-	const char *child;
-	Tcl_Obj *ret_list, *ret_curr_obj;
-
-	if (objc != 3) {
-		Tcl_SetResult(interp, "wrong # args: should be \"getChildren hashKey fileName\"", TCL_STATIC);
-
-		return(TCL_ERROR);
-	}
-
-	hashkey = Tcl_GetString(objv[1]);
-	file = Tcl_GetString(objv[2]);
-
-	cmd_getData = getCmdData(hashkey);
-	cmd_getChildren = getCmdChildren(hashkey);
-
-	if (cmd_getData == NULL || cmd_getChildren == NULL) {
-		Tcl_SetResult(interp, "No such hashkey", TCL_STATIC);
-
-		return(TCL_ERROR);
-	}
-
-	finfo = cmd_getData(file, 0);
-
-	if (finfo == NULL) {
-		Tcl_SetResult(interp, "No such file or directory", TCL_STATIC);
-
-		return(TCL_ERROR);
-	}
-
-	if (finfo->type != KITDLL_FILETYPE_DIR) {
-		Tcl_SetResult(interp, "Not a directory", TCL_STATIC);
-
-		return(TCL_ERROR);
-	}
-
-	num_children = cmd_getChildren(file, NULL, 0);
-
-	if (num_children == 0) {
-		/* Return immediately if there are no children */
-		Tcl_SetResult(interp, "", TCL_STATIC);
-
-		return(TCL_OK);
-	}
-
-	ret_list = Tcl_NewObj();
-	if (ret_list == NULL) {
-		Tcl_SetResult(interp, "Failed to allocate new object", TCL_STATIC);
-
-		return(TCL_ERROR);
-	}
-
-	children = malloc(sizeof(*children) * num_children);
-
-	num_children = cmd_getChildren(file, children, num_children);
-
-	for (idx = 0; idx < num_children; idx++) {
-		finfo = cmd_getData(NULL, children[idx]);
-
-		if (finfo == NULL || finfo->name == NULL) {
-			continue;
-		}
-
-		child = finfo->name;
-
-		ret_curr_obj = Tcl_NewStringObj(child, strlen(child));
-
-		Tcl_ListObjAppendList(interp, ret_list, ret_curr_obj);
-	}
-
-	free(children);
-
-	Tcl_SetObjResult(interp, ret_list);
-
-	return(TCL_OK);
-}

DELETED kitdll/buildsrc/kitdll-0.0/wish.c
Index: kitdll/buildsrc/kitdll-0.0/wish.c
==================================================================
--- kitdll/buildsrc/kitdll-0.0/wish.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include <tk.h>
-
-int Tcl_AppInit(Tcl_Interp *interp) {
-	int tcl_ret;
-
-	tcl_ret = Tcl_Init(interp);
-	if (tcl_ret == TCL_ERROR) {
-		return(tcl_ret);
-	}
-
-	tcl_ret = Tk_Init(interp);
-	if (tcl_ret == TCL_ERROR) {
-		return(tcl_ret);
-	}
-
-#ifdef _WIN32
-	tcl_ret = Tk_CreateConsoleWindow(interp);
-	if (tcl_ret == TCL_ERROR) {
-		return(tcl_ret);
-	}
-#endif
-
-	return(TCL_OK);
-}
-
-int main(int argc, char **argv) {
-	Tk_Main(argc, argv, Tcl_AppInit);
-
-	return(1);
-}

DELETED kitdll/buildsrc/kitdll-0.0/zlib.c
Index: kitdll/buildsrc/kitdll-0.0/zlib.c
==================================================================
--- kitdll/buildsrc/kitdll-0.0/zlib.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/* Written by Jean-Claude Wippler, as part of Tclkit.
- * March 2003 - placed in the public domain by the author.
- *
- * Interface to the "zlib" compression library
- */
-
-#include <tcl.h>
-#if 10 * TCL_MAJOR_VERSION + TCL_MINOR_VERSION < 86
-#include "zlib.h"
-
-typedef struct {
-  z_stream stream;
-  Tcl_Obj *indata;
-} zlibstream;
-
-static int
-zstreamincmd(ClientData cd, Tcl_Interp *ip, int objc, Tcl_Obj *CONST objv[])
-{
-  zlibstream *zp = (zlibstream*) cd;
-  int count = 0;
-  int e, index;
-  Tcl_Obj *obj;
-
-  static CONST84 char* cmds[] = { "fill", "drain", NULL, };
-
-  if (Tcl_GetIndexFromObj(ip, objv[1], cmds, "option", 0, &index) != TCL_OK)
-    return TCL_ERROR;
-
-  switch (index) {
-
-    case 0: /* fill ?data? */
-      if (objc >= 3) {
-	Tcl_IncrRefCount(objv[2]);
-	Tcl_DecrRefCount(zp->indata);
-	zp->indata = objv[2];
-	zp->stream.next_in = Tcl_GetByteArrayFromObj(zp->indata,
-						  (int*) &zp->stream.avail_in);
-      }
-      Tcl_SetObjResult(ip, Tcl_NewIntObj(zp->stream.avail_in));
-      break;
-
-    case 1: /* drain count */
-      if (objc != 3) {
-	Tcl_WrongNumArgs(ip, 2, objv, "count");
-	return TCL_ERROR;
-      }
-      if (Tcl_GetIntFromObj(ip, objv[2], &count) != TCL_OK)
-	return TCL_ERROR;
-      obj = Tcl_GetObjResult(ip);
-      Tcl_SetByteArrayLength(obj, count);
-      zp->stream.next_out = Tcl_GetByteArrayFromObj(obj,
-						  (int*) &zp->stream.avail_out);
-      e = inflate(&zp->stream, Z_NO_FLUSH);
-      if (e != 0 && e != Z_STREAM_END) {
-	Tcl_SetResult(ip, (char*) zError(e), TCL_STATIC);
-	return TCL_ERROR;
-      }
-      Tcl_SetByteArrayLength(obj, count - zp->stream.avail_out);
-      break;
-  }
-  return TCL_OK;
-}
-
-void zstreamdelproc(ClientData cd)
-{
-  zlibstream *zp = (zlibstream*) cd;
-  inflateEnd(&zp->stream);
-  Tcl_DecrRefCount(zp->indata);
-  Tcl_Free((void*) zp);
-}
-
-static int
-ZlibCmd(ClientData dummy, Tcl_Interp *ip, int objc, Tcl_Obj *CONST objv[])
-{
-  int e = TCL_OK, index, dlen, wbits = -MAX_WBITS;
-  long flag;
-  Byte *data;
-  z_stream stream;
-  Tcl_Obj *obj = Tcl_GetObjResult(ip);
-
-  static CONST84 char* cmds[] = {
-    "adler32", "crc32", "compress", "deflate", "decompress", "inflate", 
-    "sdecompress", "sinflate", NULL,
-  };
-
-  if (objc < 3 || objc > 4) {
-    Tcl_WrongNumArgs(ip, 1, objv, "option data ?...?");
-    return TCL_ERROR;
-  }
-
-  if (Tcl_GetIndexFromObj(ip, objv[1], cmds, "option", 0, &index) != TCL_OK ||
-      objc > 3 && Tcl_GetLongFromObj(ip, objv[3], &flag) != TCL_OK)
-    return TCL_ERROR;
-
-  data = Tcl_GetByteArrayFromObj(objv[2], &dlen);
-
-  switch (index) {
-
-    case 0: /* adler32 str ?start? -> checksum */
-      if (objc < 4)
-	flag = (long) adler32(0, 0, 0);
-      Tcl_SetLongObj(obj, (long) adler32((uLong) flag, data, dlen));
-      return TCL_OK;
-
-    case 1: /* crc32 str ?start? -> checksum */
-      if (objc < 4)
-	flag = (long) crc32(0, 0, 0);
-      Tcl_SetLongObj(obj, (long) crc32((uLong) flag, data, dlen));
-      return TCL_OK;
-      
-    case 2: /* compress data ?level? -> data */
-      wbits = MAX_WBITS;
-    case 3: /* deflate data ?level? -> data */
-      if (objc < 4)
-	flag = Z_DEFAULT_COMPRESSION;
-
-      stream.avail_in = (uInt) dlen;
-      stream.next_in = data;
-
-      stream.avail_out = (uInt) dlen + dlen / 1000 + 12;
-      Tcl_SetByteArrayLength(obj, stream.avail_out);
-      stream.next_out = Tcl_GetByteArrayFromObj(obj, NULL);
-
-      stream.zalloc = 0;
-      stream.zfree = 0;
-      stream.opaque = 0;
-
-      e = deflateInit2(&stream, (int) flag, Z_DEFLATED, wbits,
-			      MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY);
-      if (e != Z_OK)
-	break;
-
-      e = deflate(&stream, Z_FINISH);
-      if (e != Z_STREAM_END) {
-	deflateEnd(&stream);
-	if (e == Z_OK) e = Z_BUF_ERROR;
-      } else
-	e = deflateEnd(&stream);
-      break;
-      
-    case 4: /* decompress data ?bufsize? -> data */
-      wbits = MAX_WBITS;
-    case 5: /* inflate data ?bufsize? -> data */
-    {
-      if (objc < 4)
-	flag = 16 * 1024;
-
-      for (;;) {
-	stream.zalloc = 0;
-	stream.zfree = 0;
-
-	/* +1 because ZLIB can "over-request" input (but ignore it) */
-	stream.avail_in = (uInt) dlen +  1;
-	stream.next_in = data;
-
-	stream.avail_out = (uInt) flag;
-	Tcl_SetByteArrayLength(obj, stream.avail_out);
-	stream.next_out = Tcl_GetByteArrayFromObj(obj, NULL);
-
-	/* Negative value suppresses ZLIB header */
-	e = inflateInit2(&stream, wbits);
-	if (e == Z_OK) {
-	  e = inflate(&stream, Z_FINISH);
-	  if (e != Z_STREAM_END) {
-	    inflateEnd(&stream);
-	    if (e == Z_OK) e = Z_BUF_ERROR;
-	  } else
-	    e = inflateEnd(&stream);
-	}
-
-	if (e == Z_OK || e != Z_BUF_ERROR) break;
-
-	Tcl_SetByteArrayLength(obj, 0);
-	flag *= 2;
-      }
-
-      break;
-    }
-      
-    case 6: /* sdecompress cmdname -> */
-      wbits = MAX_WBITS;
-    case 7: /* sinflate cmdname -> */
-    {
-      zlibstream *zp = (zlibstream*) Tcl_Alloc(sizeof (zlibstream));
-      zp->indata = Tcl_NewObj();
-      Tcl_IncrRefCount(zp->indata);
-      zp->stream.zalloc = 0;
-      zp->stream.zfree = 0;
-      zp->stream.opaque = 0;
-      zp->stream.next_in = 0;
-      zp->stream.avail_in = 0;
-      inflateInit2(&zp->stream, wbits);
-      Tcl_CreateObjCommand(ip, Tcl_GetStringFromObj(objv[2], 0), zstreamincmd,
-      				(ClientData) zp, zstreamdelproc);
-      return TCL_OK;
-    }
-  }
-
-  if (e != Z_OK) {
-    Tcl_SetResult(ip, (char*) zError(e), TCL_STATIC);
-    return TCL_ERROR;
-  }
-
-  Tcl_SetByteArrayLength(obj, stream.total_out);
-  return TCL_OK;
-}
-
-int Zlib_Init(Tcl_Interp *interp)
-{
-    Tcl_CreateObjCommand(interp, "zlib", ZlibCmd, 0, 0);
-    return Tcl_PkgProvide( interp, "zlib", "1.1");
-}
-#endif /* Tcl version less than 8.6 */

Index: kitsh/build.sh
==================================================================
--- kitsh/build.sh
+++ kitsh/build.sh
@@ -28,13 +28,59 @@
 
 
 (
 	cp -r 'buildsrc' 'build'
 	cd "${BUILDDIR}" || exit 1
+
+	# Fix up archives that Tcl gets wrong
+	for archive in ../../../tcl/inst/lib/dde*/tcldde*.a ../../../tcl/inst/lib/reg*/tclreg*.a; do
+		if [ ! -f "${archive}" ]; then
+			continue
+		fi
+
+		rm -rf __TEMP__
+		(
+			mkdir __TEMP__ || exit 1
+			cd __TEMP__
+
+			## Patch archive name
+			archive="../${archive}"
+
+			"${AR:-ar}" x "${archive}" || exit 1
+
+			rm -f "${archive}"
+
+			"${AR:-ar}" cr "${archive}" *.o || exit 1
+			"${RANLIB:-ranlib}" "${archive}" || true
+		)
+	done
+
+	# Determine how we invoke a Tcl interpreter
+	for testsh in "${TCLSH_NATIVE:-false}" tclsh tclsh8.4 tclsh8.5 tclsh8.6 "${TCLKIT:-tclkit}"; do
+		if echo 'exit 0' | "${testsh}" >/dev/null 2>/dev/null; then
+			TCLSH_NATIVE="${testsh}"
+
+			break
+		fi
+	done
 
 	# Cleanup, just incase the incoming directory was not pre-cleaned
 	${MAKE:-make} distclean >/dev/null 2>/dev/null
+	rm -rf 'starpack.vfs'
+
+	# Create VFS directory
+	mkdir "starpack.vfs"
+	mkdir "starpack.vfs/lib"
+
+	## Copy in all built directories
+	cp -r "${OTHERPKGSDIR}"/*/out/* 'starpack.vfs/'
+
+	## Rename the "vfs" package directory to what "boot.tcl" expects
+	mv 'starpack.vfs/lib'/vfs* 'starpack.vfs/lib/vfs'
+
+	## Install "boot.tcl"
+	cp 'boot.tcl' 'starpack.vfs/'
 
 	# Figure out if zlib compiled (if not, the system zlib will be used and we
 	# will need to have that present)
 	ZLIBDIR="$(cd "${OTHERPKGSDIR}/zlib/inst" 2>/dev/null && pwd)"
 	export ZLIBDIR
@@ -47,10 +93,11 @@
 	cp "${KITCREATOR_RC}" "${BUILDDIR}/kit.rc"
 
 	# Include extra objects as required
 	## Initialize list of extra objects
 	EXTRA_OBJS=""
+	export EXTRA_OBJS
 
 	## Tk Resources (needed for Win32 support) -- remove kit-found resources to prevent the symbols from being in conflict
 	TKDIR="$(cd "${OTHERPKGSDIR}/tk/inst" && pwd)"
 	TKRSRC="${TKDIR}/lib/tkbase.res.o"
 	if [ -n "${TKDIR}" -a -f "${TKRSRC}" ]; then
@@ -59,14 +106,16 @@
 		echo ' *** Removing "kit.rc" since we have Tk with its own resource file'
 
 		rm -f "${BUILDDIR}/kit.rc"
 	fi
 
-	## Export to the environment, to be picked up by the "configure" script
-	export EXTRA_OBJS
+	# Determine if target is KitDLL or KitSH
+	if [ "${KITTARGET}" = "kitdll" ]; then
+		CONFIGUREEXTRA="${CONFIGUREEXTRA} --enable-kitdll"
+	fi
 
-	# Compile Kitsh
+	# Compile Kit
 	if [ -z "${ZLIBDIR}" ]; then
 		echo "Running: ./configure --with-tcl=\"${TCLCONFIGDIR}\" ${CONFIGUREEXTRA}"
 
 		./configure --with-tcl="${TCLCONFIGDIR}" ${CONFIGUREEXTRA}
 	else
@@ -73,48 +122,90 @@
 		echo "Running: ./configure --with-tcl=\"${TCLCONFIGDIR}\" --with-zlib=\"${ZLIBDIR}\" ${CONFIGUREEXTRA}"
 
 		./configure --with-tcl="${TCLCONFIGDIR}" --with-zlib="${ZLIBDIR}" ${CONFIGUREEXTRA}
 	fi
 
-	echo "Running: ${MAKE:-make}"
-	${MAKE:-make} || exit 1
+	echo "Running: ${MAKE:-make} TCLSH_NATIVE=\"${TCLSH_NATIVE}\""
+	${MAKE:-make} TCLSH_NATIVE="${TCLSH_NATIVE}" || exit 1
 
 	# Strip the kit of all symbols, if possible
 	"${STRIP:-strip}" kit >/dev/null 2>/dev/null
-
-	# Create VFS directory
-	mkdir "starpack.vfs"
-	mkdir "starpack.vfs/lib"
-
-	## Copy in all built directories
-	cp -r "${OTHERPKGSDIR}"/*/out/* 'starpack.vfs/'
-
-	## Rename the "vfs" package directory to what "boot.tcl" expects
-	mv 'starpack.vfs/lib'/vfs* 'starpack.vfs/lib/vfs'
-
-	## Install "boot.tcl"
-	cp 'boot.tcl' 'starpack.vfs/'
+	"${STRIP:-strip}" -g libtclkit* >/dev/null 2>/dev/null
+
+	# Fix up Win32 DLL names
+	## .DLL.A -> .LIB
+	for file in libtclkit*.dll.a; do
+		if [ ! -f "${file}" ]; then
+			continue
+		fi
+
+		newfile="$(basename "${file}" .dll.a).lib"
+		mv "${file}" "${newfile}"
+	done
+
+	## .DLL.DEF -> .DEF
+	for file in libtclkit*.dll.def; do
+		if [ ! -f "${file}" ]; then
+			continue
+		fi
+
+		newfile="$(basename "${file}" .dll.def).def"
+		mv "${file}" "${newfile}"
+	done
+
+	# Determine name of created kit
+	KITTARGET_NAME='__error__'
+	if [ "${KITTARGET}" = "kitdll" ]; then
+		## Find the library created
+		for chkkittarget in libtclkit*.*; do
+			if [ ! -f "${chkkittarget}" ]; then
+				continue
+			fi
+
+			if echo "${chkkittarget}" | egrep '\.(lib|def|a)$'; then
+				continue
+			fi
+
+			KITTARGET_NAME="${chkkittarget}"
+
+			break
+		done
+
+		## Also create an executable named "kit" so that we can run it later
+		${MAKE:-make} tclsh
+		mv tclsh kit
+	else
+		## The executable is always named "kit"
+		KITTARGET_NAME='kit'
+	fi
+	export KITTARGET_NAME
+
+	if [ "x${KITTARGET_NAME}" = 'x__error__' ]; then
+		echo "Failed to locate kit target!" >&2
+
+		exit 1
+	fi
 
 	# Intall VFS onto kit
 	## Determine if we have a Tclkit to do this work
 	TCLKIT="${TCLKIT:-tclkit}"
 	if echo 'exit 0' | "${TCLKIT}" >/dev/null 2>/dev/null; then
 		## Install using existing Tclkit
 		### Call installer
-		echo "Running: \"${TCLKIT}\" installvfs.tcl kit starpack.vfs \"${ENABLECOMPRESSION}\""
-		"${TCLKIT}" installvfs.tcl kit starpack.vfs "${ENABLECOMPRESSION}"
+		echo "Running: \"${TCLKIT}\" installvfs.tcl \"${KITTARGET_NAME}\" starpack.vfs \"${ENABLECOMPRESSION}\""
+		"${TCLKIT}" installvfs.tcl "${KITTARGET_NAME}" starpack.vfs "${ENABLECOMPRESSION}"
 	else
 		## Bootstrap (cannot cross-compile)
 		### Call installer
 		cp kit runkit
-		echo "set argv [list kit starpack.vfs {${ENABLECOMPRESSION}}]" > setup.tcl
+		echo "set argv [list {${KITTARGET_NAME}} starpack.vfs {${ENABLECOMPRESSION}}]" > setup.tcl
 		echo 'if {[catch { clock seconds }]} { proc clock args { return 0 } }' >> setup.tcl
 		echo 'source installvfs.tcl' >> setup.tcl
 
 		echo 'Running: echo | ./runkit'
-		echo | ./runkit
+		echo | ./runkit setup.tcl
 	fi
 
 	exit 0
 ) || exit 1
 
 exit 0

ADDED   kitsh/buildsrc/kitsh-0.0/Makefile.common.in
Index: kitsh/buildsrc/kitsh-0.0/Makefile.common.in
==================================================================
--- /dev/null
+++ kitsh/buildsrc/kitsh-0.0/Makefile.common.in
@@ -0,0 +1,64 @@
+CC = @CC@
+RC = @RC@
+OBJCOPY = @OBJCOPY@
+CFLAGS = @CFLAGS@ @SHOBJFLAGS@
+CPPFLAGS = @CPPFLAGS@ @DEFS@
+WISH_CFLAGS = @WISH_CFLAGS@
+LDFLAGS = @LDFLAGS@
+SHOBJLDFLAGS = @SHOBJLDFLAGS@
+LIBS = @LIBS@
+ARCHS = @ARCHS@
+STRIPLIBS = @STRIPLIBS@ @EXTRA_OBJS@
+EXTRA_OBJS = @EXTRA_OBJS@
+LDRUNPATH = @LDRUNPATH@
+EXTRA_KIT_DEPS = @EXTRA_KIT_DEPS@
+EXTRA_VFS_OBJS = @EXTRA_VFS_OBJS@
+TCLSH_NATIVE = tclsh
+
+# Build targets
+## VFS Build
+vfs_kitdll_data_tcl.o: vfs_kitdll_data_tcl.c
+vfs_kitdll_data_tcl.c: dir2c.tcl starpack.vfs vfs_kitdll_data.c
+	"$(TCLSH_NATIVE)" dir2c.tcl tcl starpack.vfs > vfs_kitdll_data_tcl.c
+
+## Tcl scripts that need to be converted to C headers
+vfs_kitdll.tcl.h: vfs_kitdll.tcl
+	"$(TCLSH_NATIVE)" ./stringify.tcl vfs_kitdll.tcl > vfs_kitdll.tcl.h
+
+boot.tcl.h: boot.tcl
+	"$(TCLSH_NATIVE)" ./stringify.tcl boot.tcl > boot.tcl.h
+
+zipvfs.tcl.h: zipvfs.tcl
+	"$(TCLSH_NATIVE)" ./stringify.tcl zipvfs.tcl > zipvfs.tcl.h
+
+## Objects
+kitInit.o: kitInit.c boot.tcl.h $(EXTRA_KIT_DEPS)
+rechan.o: rechan.c
+pwb.o: pwb.c
+zlib.o: zlib.c
+
+### Windows resources
+kit.res.o: kit.rc kit.ico
+	$(RC) -o kit.res.o $(CPPFLAGS) kit.rc
+
+# Cleanup routines
+clean:
+	rm -f kit kit.res.o
+	rm -f libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@
+	rm -f $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS)
+	rm -f vfs_kitdll_data_tcl.c
+	rm -f vfs_kitdll.tcl.h
+	rm -f tclsh.o tclsh tclsh.exe
+	rm -f wish.o wish wish.exe
+
+distclean: clean
+	rm -f Makefile Makefile.in Makefile.common
+	rm -f config.status config.log
+	rm -f *~
+	rm -rf autom4te.cache
+	rm -rf starpack.vfs
+
+mrproper: distclean
+	rm -f configure config.h boot.tcl.h zipvfs.tcl.h
+
+.PHONY: all clean distclean mrproper

DELETED kitsh/buildsrc/kitsh-0.0/Makefile.in
Index: kitsh/buildsrc/kitsh-0.0/Makefile.in
==================================================================
--- kitsh/buildsrc/kitsh-0.0/Makefile.in
+++ /dev/null
@@ -1,35 +0,0 @@
-CC = @CC@
-RC = @RC@
-CFLAGS = @CFLAGS@ @DEFS@ -DTK_LOCAL_APPINIT=TclKit_AppInit
-CPPFLAGS = @CPPFLAGS@ @DEFS@ -DTK_LOCAL_APPINIT=TclKit_AppInit
-LDFLAGS = @LDFLAGS@
-LIBS = @LIBS@
-ARCHS = @ARCHS@
-OBJS = kitInit.o main.o pwb.o rechan.o zlib.o winMain.o
-EXTRA_OBJS = @EXTRA_OBJS@
-
-all: kit
-
-kit.res.o: kit.rc kit.ico
-	$(RC) -o kit.res.o $(CPPFLAGS) kit.rc
-
-kit: $(OBJS) $(EXTRA_OBJS) $(ARCHS)
-	$(CC) $(CPPFLAGS) $(CFLAGS) -o kit $(OBJS) $(EXTRA_OBJS) $(ARCHS) $(LDFLAGS) $(LIBS)
-
-boot.tcl.h: boot.tcl
-	./stringify.tcl boot.tcl > boot.tcl.h
-
-zipvfs.tcl.h: zipvfs.tcl
-	./stringify.tcl zipvfs.tcl > zipvfs.tcl.h
-
-clean:
-	rm -f kit $(OBJS) kit.res.o
-
-distclean: clean
-	rm -f config.h Makefile config.log config.status
-	rm -rf autom4te.cache
-
-mrproper: distclean
-	rm -f configure config.h boot.tcl.h zipvfs.tcl.h
-
-.PHONY: all clean distclean

ADDED   kitsh/buildsrc/kitsh-0.0/Makefile.kitdll.in
Index: kitsh/buildsrc/kitsh-0.0/Makefile.kitdll.in
==================================================================
--- /dev/null
+++ kitsh/buildsrc/kitsh-0.0/Makefile.kitdll.in
@@ -0,0 +1,20 @@
+OBJS = kitInit.o rechan.o pwb.o zlib.o
+
+# Default target
+all: libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@
+
+-include Makefile.common
+
+## DLL Build
+libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@: $(OBJS) $(EXTRA_KIT_DEPS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS)
+	-for striplib in $(STRIPLIBS); do $(OBJCOPY) --weaken "$${striplib}"; done
+	$(CC) $(CPPFLAGS) $(CFLAGS) -o libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@ $(OBJS) $(EXTRA_OBJS) $(EXTRA_VFS_OBJS) $(LDFLAGS) $(SHOBJLDFLAGS) @WHOLEARCHIVE@ $(ARCHS) @NOWHOLEARCHIVE@ $(LIBS)
+
+# Test driver
+tclsh.o: tclsh.c
+tclsh: tclsh.o $(EXTRA_OBJS) libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@
+	$(CC) $(CPPFLAGS) $(CFLAGS) -o tclsh tclsh.o $(EXTRA_OBJS) -L. -ltclkit@KITDLL_LIB_VERSION@ $(LDRUNPATH)
+
+wish.o: wish.c
+wish: wish.o $(EXTRA_OBJS) libtclkit@KITDLL_LIB_VERSION@.@SHOBJEXT@
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(WISH_CFLAGS) -o wish wish.o $(EXTRA_OBJS) -L. -ltclkit@KITDLL_LIB_VERSION@ $(LDRUNPATH)

ADDED   kitsh/buildsrc/kitsh-0.0/Makefile.tclkit.in
Index: kitsh/buildsrc/kitsh-0.0/Makefile.tclkit.in
==================================================================
--- /dev/null
+++ kitsh/buildsrc/kitsh-0.0/Makefile.tclkit.in
@@ -0,0 +1,8 @@
+OBJS = kitInit.o main.o pwb.o rechan.o zlib.o winMain.o
+
+all: kit
+
+-include Makefile.common
+
+kit: $(OBJS) $(EXTRA_OBJS) $(EXTRA_KIT_DEPS) $(EXTRA_VFS_OBJS) $(ARCHS)
+	$(CC) $(CPPFLAGS) $(CFLAGS) -o kit $(OBJS) $(EXTRA_OBJS $(EXTRA_VFS_OBJS)) $(ARCHS) $(LDFLAGS) $(LIBS)

Index: kitsh/buildsrc/kitsh-0.0/aclocal.m4
==================================================================
--- kitsh/buildsrc/kitsh-0.0/aclocal.m4
+++ kitsh/buildsrc/kitsh-0.0/aclocal.m4
@@ -35,15 +35,18 @@
 		. "${tclconfigsh}"
 
 		CFLAGS="${CFLAGS} ${TCL_INCLUDE_SPEC} -I${TCL_SRC_DIR}/generic -I${tclconfigshdir}"
 		CPPFLAGS="${CPPFLAGS} ${TCL_INCLUDE_SPEC} -I${TCL_SRC_DIR}/generic -I${tclconfigshdir}"
 		LIBS="${LIBS} ${TCL_LIBS}"
+
+		KITDLL_LIB_VERSION=`echo "${TCL_VERSION}${TCL_PATCH_LEVEL}" | sed 's@\.@@g'`
 	fi
 
 	AC_SUBST(CFLAGS)
 	AC_SUBST(CPPFLAGS)
 	AC_SUBST(LIBS)
+	AC_SUBST(KITDLL_LIB_VERSION)
 
 	AC_MSG_RESULT([$tclconfigsh])
 ])
 
 AC_DEFUN(DC_DO_TK, [
@@ -152,27 +155,48 @@
 ])
 
 AC_DEFUN(DC_FIND_TCLKIT_LIBS, [
 	DC_SETUP_TCL_PLAT_DEFS
 
-	for proj in mk4tcl tcl tclvfs tk; do
+	dnl We will need this for the Tcl project, which we will always have
+	DC_CHECK_FOR_WHOLE_ARCHIVE
+
+	for proj in mk4tcl tcl tclvfs tk zlib; do
 		AC_MSG_CHECKING([for libraries required for ${proj}])
 
-		libdir="../../../${proj}/inst"
-		libfiles="`find "${libdir}" -name '*.a' 2>/dev/null | tr "\n" ' '`"
-		libfilesnostub="`find "${libdir}" -name '*.a' 2>/dev/null | grep -v 'stub' | tr "\n" ' '`"
-
-		ARCHS="${ARCHS} ${libfiles}"
-
-		AC_MSG_RESULT([${libfiles}])
-
-		if test "${libfilesnostub}" != ""; then
-			if test "${proj}" = "mk4tcl"; then
+		projlibdir="../../../${proj}/inst"
+		projlibfiles="`find "${projlibdir}" -name '*.a' 2>/dev/null | tr "\n" ' '`"
+		projlibfilesnostub="`find "${projlibdir}" -name '*.a' 2>/dev/null | grep -v 'stub' | tr "\n" ' '`"
+
+		AC_MSG_RESULT([${projlibfilesnostub}])
+
+		hide_symbols="1"
+
+		if test "${proj}" = "tcl"; then
+			DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $projlibfilesnostub], [
+				projlibfiles="${projlibfilesnostub}"
+			], [
+				DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $projlibfiles], [
+					projlibfiles="${projlibfiles}"
+				])
+			])
+
+			hide_symbols="0"
+		fi
+
+		if test "${proj}" = "mk4tcl"; then
+			if test -n "${projlibfiles}"; then
 				AC_DEFINE(KIT_INCLUDES_MK4TCL, [1], [Specify this if you link against mkt4tcl])
+
+				kc_cv_feature_kit_includes_mk4tcl='1'
+
 				DC_DO_STATIC_LINK_LIBCXX
 			fi
-			if test "${proj}" = "tk"; then
+		fi
+
+		if test "${proj}" = "tk"; then
+			if test "${projlibfilesnostub}" != ""; then
 				DC_DO_TK
 				AC_DEFINE(KIT_INCLUDES_TK, [1], [Specify this if we link statically to Tk])
 				if test -n "${TK_VERSION}"; then
 					AC_DEFINE_UNQUOTED(KIT_TK_VERSION, "${TK_VERSION}${TK_PATCH_LEVEL}", [Specify the version of Tk])
 				fi
@@ -179,37 +203,64 @@
 
 				if test "$host_os" = "mingw32msvc" -o "$host_os" = "mingw32"; then
 					AC_DEFINE(KITSH_NEED_WINMAIN, [1], [Define if you need WinMain (Windows)])
 					CFLAGS="${CFLAGS} -mwindows"
 				fi
+
+				DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $projlibfilesnostub], [
+					projlibfiles="${projlibfilesnostub}"
+				], [
+					DC_TEST_WHOLE_ARCHIVE_SHARED_LIB([$ARCHS $projlibfiles], [
+						projlibfiles="${projlibfiles}"
+					])
+				])
+
+				hide_symbols="0"
 			fi
 		fi
+
+		if test "${hide_symbols}" = "1"; then
+			STRIPLIBS="${STRIPLIBS} ${projlibfiles}"
+		fi
+
+		dnl Do not explicitly link to Zlib, that will happen elsewhere
+		if test "${proj}" = "zlib"; then
+			continue
+		fi
+
+		ARCHS="${ARCHS} ${projlibfiles}"
 	done
 
 	AC_SUBST(ARCHS)
+	AC_SUBST(STRIPLIBS)
 ])
 
 AC_DEFUN(DC_SETUP_TCL_PLAT_DEFS, [
+	AC_CANONICAL_BUILD
 	AC_CANONICAL_HOST
   
 	AC_MSG_CHECKING(host operating system)
 	AC_MSG_RESULT($host_os)
   
 	case $host_os in
 		mingw32*)
 			CFLAGS="${CFLAGS} -mno-cygwin -mms-bitfields"
+			WISH_CFLAGS="-mwindows"
 
 			dnl If we are building for Win32, we need to define "BUILD_tcl" so that
 			dnl TCL_STORAGE_CLASS gets defined as DLLEXPORT, to make static linking
 			dnl work
 			AC_DEFINE(BUILD_tcl, [1], [Define if you need to pretend to be building Tcl (Windows)])
 			AC_DEFINE(BUILD_tk, [1], [Define if you need to pretend to be building Tk (Windows)])
 			;;
 		cygwin*)
 			CFLAGS="${CFLAGS} -mms-bitfields"
+			WISH_CFLAGS="-mwindows"
 			;;
 	esac
+
+	AC_SUBST(WISH_CFLAGS)
 ])
 
 AC_DEFUN(DC_STATIC_LIBGCC, [
 	AC_MSG_CHECKING([how to link statically against libgcc])
 
@@ -258,5 +309,166 @@
 		], [
 			AC_MSG_RESULT([not found])
 		]
 	)
 ])
+
+dnl Usage:
+dnl    DC_TEST_SHOBJFLAGS(shobjflags, shobjldflags, action-if-not-found)
+dnl
+AC_DEFUN(DC_TEST_SHOBJFLAGS, [
+  AC_SUBST(SHOBJFLAGS)
+  AC_SUBST(SHOBJLDFLAGS)
+
+  OLD_LDFLAGS="$LDFLAGS"
+  SHOBJFLAGS=""
+
+  LDFLAGS="$OLD_LDFLAGS $1 $2"
+
+  AC_TRY_LINK([#include <stdio.h>
+int unrestst(void);], [ printf("okay\n"); unrestst(); return(0); ], [ SHOBJFLAGS="$1"; SHOBJLDFLAGS="$2" ], [
+  LDFLAGS="$OLD_LDFLAGS"
+  $3
+])
+
+  LDFLAGS="$OLD_LDFLAGS"
+])
+
+AC_DEFUN(DC_GET_SHOBJFLAGS, [
+  AC_SUBST(SHOBJFLAGS)
+  AC_SUBST(SHOBJLDFLAGS)
+
+  AC_MSG_CHECKING(how to create shared objects)
+
+  if test -z "$SHOBJFLAGS" -a -z "$SHOBJLDFLAGS"; then
+    DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic], [
+      DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared], [
+        DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -mimpure-text], [
+          DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -mimpure-text], [
+            DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -rdynamic -Wl,-G,-z,textoff], [
+              DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -Wl,-G,-z,textoff], [
+                DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-shared -dynamiclib -flat_namespace -undefined suppress -bind_at_load], [
+                  DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress -bind_at_load], [
+                    DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-Wl,-dynamiclib -Wl,-flat_namespace -Wl,-undefined,suppress -Wl,-bind_at_load], [
+                      DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib -flat_namespace -undefined suppress], [
+                        DC_TEST_SHOBJFLAGS([-fPIC -DPIC], [-dynamiclib], [
+                          AC_MSG_RESULT(cant)
+                          AC_MSG_ERROR([We are unable to make shared objects.])
+                        ])
+                      ])
+                    ])
+                  ])
+                ])
+              ])
+            ])
+          ])
+        ])
+      ])
+    ])
+  fi
+
+  AC_MSG_RESULT($SHOBJLDFLAGS $SHOBJFLAGS)
+])
+
+AC_DEFUN(DC_CHK_OS_INFO, [
+	AC_CANONICAL_BUILD
+	AC_CANONICAL_HOST
+
+	AC_SUBST(SHOBJEXT)
+	AC_SUBST(AREXT)
+        AC_SUBST(SHOBJFLAGS)
+        AC_SUBST(SHOBJLDFLAGS)
+
+        AC_MSG_CHECKING(host operating system)
+        AC_MSG_RESULT($host_os)
+
+	SHOBJEXT="so"
+	AREXT="a"
+
+        case $host_os in
+                darwin*)
+			SHOBJEXT="dylib"
+                        ;;
+		hpux*)
+			SHOBJEXT="sl"
+			;;
+		mingw*)
+			SHOBJEXT="dll"
+			SHOBJFLAGS="-mno-cygwin -mms-bitfields -DPIC"
+			SHOBJLDFLAGS='-shared -Wl,--dll -Wl,--enable-auto-image-base -Wl,--output-def,$[@].def,--out-implib,$[@].a -Wl,--export-all-symbols -Wl,--add-stdcall-alias'
+			;;
+	esac
+])
+
+AC_DEFUN(DC_TEST_WHOLE_ARCHIVE_SHARED_LIB, [
+
+	SAVE_LIBS="${LIBS}"
+
+	LIBS="${WHOLEARCHIVE} $1 ${NOWHOLEARCHIVE} ${SAVE_LIBS}"
+	AC_LINK_IFELSE(
+		AC_LANG_PROGRAM([[
+			]], [[
+			]]
+		),
+		[
+			LIBS="${SAVE_LIBS}"
+
+			$2
+		], [
+			LIBS="${SAVE_LIBS}"
+
+			$3
+		]
+	)
+])
+
+AC_DEFUN(DC_CHECK_FOR_WHOLE_ARCHIVE, [
+	AC_MSG_CHECKING([for how to link whole archive])
+
+	SAVE_CFLAGS="${CFLAGS}"
+
+	wholearchive=""
+
+	for check in "-Wl,--whole-archive -Wl,--no-whole-archive" "-Wl,-z,allextract -Wl,-z,defaultextract"; do
+		CFLAGS="${SAVE_CFLAGS} ${check}"
+
+		AC_LINK_IFELSE(AC_LANG_PROGRAM([], []),
+			[
+				wholearchive="${check}"
+
+				break
+			]
+		)
+
+	done
+
+	CFLAGS="${SAVE_CFLAGS}"
+
+	if test -z "${wholearchive}"; then
+		AC_MSG_RESULT([not found])
+	else
+		AC_MSG_RESULT([${wholearchive}])
+
+		WHOLEARCHIVE=`echo "${wholearchive}" | cut -f 1 -d ' '`
+		NOWHOLEARCHIVE=`echo "${wholearchive}" | cut -f 2 -d ' '`
+	fi
+
+	AC_SUBST(WHOLEARCHIVE)
+	AC_SUBST(NOWHOLEARCHIVE)
+])
+
+AC_DEFUN(DC_SETLDRUNPATH, [
+	OLD_LDFLAGS="${LDFLAGS}"
+
+	for testldflags in "-Wl,-rpath -Wl,$1" "-Wl,-R -Wl,$1"; do
+		LDFLAGS="${OLD_LDFLAGS} ${testldflags}"
+		AC_TRY_LINK([#include <stdio.h>], [ return(0); ], [
+			LDRUNPATH="$LDRUNPATH $testldflags"
+
+			break
+		])
+	done
+
+	LDFLAGS="${OLD_LDFLAGS}"
+
+	AC_SUBST(LDRUNPATH)
+])

Index: kitsh/buildsrc/kitsh-0.0/boot.tcl
==================================================================
--- kitsh/buildsrc/kitsh-0.0/boot.tcl
+++ kitsh/buildsrc/kitsh-0.0/boot.tcl
@@ -2,28 +2,27 @@
 	rename tclInit {}
 
 	global auto_path tcl_library tcl_libPath
 	global tcl_version tcl_rcFileName
   
-	set noe [info nameofexecutable]
+	set mountpoint [subst "$::TCLKIT_MOUNTPOINT_VAR"]
 
 	# Resolve symlinks
-	set noe [file dirname [file normalize [file join $noe __dummy__]]]
+	set mountpoint [file dirname [file normalize [file join $mountpoint __dummy__]]]
 
-	set tcl_library [file join $noe lib tcl$tcl_version]
-	set tcl_libPath [list $tcl_library [file join $noe lib]]
-
-	# get rid of a build residue
-	unset -nocomplain ::tclDefaultLibrary
+	set tcl_library [file join $mountpoint lib tcl$tcl_version]
+	set tcl_libPath [list $tcl_library [file join $mountpoint lib]]
 
 	# the following code only gets executed once on startup
-	if {[info exists tcl_rcFileName]} {
+	if {[info exists ::TCLKIT_INITVFS]} {
+		catch {
+			load {} vfs
+		}
+
 		# lookup and emulate "source" of lib/vfs/{vfs*.tcl,mk4vfs.tcl}
 		switch -- $::tclKitStorage {
 			"mk4" {
-				load {} vfs
-
 				# must use raw MetaKit calls because VFS is not yet in place
 				set d [mk::select exe.dirs parent 0 name lib]
 				set d [mk::select exe.dirs parent $d name vfs]
     
 				foreach x {vfsUtils vfslib mk4vfs} {
@@ -72,14 +71,17 @@
 
 				seek $::tclKitStorage_fd 0
 				set vfsHandler [list ::vfs::zip::handler $::tclKitStorage_fd]
 				unset ::tclKitStorage_fd
 			}
+			"cvfs" {
+				set vfsHandler [list ::vfs::kitdll::vfshandler tcl]
+			}
 		}
 
 		# mount the executable, i.e. make all runtime files available
-		vfs::filesystem mount $noe $vfsHandler
+		vfs::filesystem mount $mountpoint $vfsHandler
 
 		# alter path to find encodings
 		if {[info tclversion] eq "8.4"} {
 			load {} pwb
 			librarypath [info library]
@@ -92,11 +94,10 @@
 			if {[info exists ::tclkit_system_encoding] && $::tclkit_system_encoding != ""} {
 				catch {
 					encoding system $::tclkit_system_encoding
 				}
 			}
-			unset -nocomplain ::tclkit_system_encoding
 		}
 
 		# If we've still not been able to set the encoding, revert to Tclkit defaults
 		if {[encoding system] eq "identity"} {
 			catch {
@@ -105,29 +106,31 @@
 					macintosh	{ encoding system macRoman }
 				        default		{ encoding system iso8859-1 }
 				}
 			}
 		}
+
+		# Re-evaluate mountpoint with correct encoding set
+		set mountpoint [subst "$::TCLKIT_MOUNTPOINT_VAR"]
 
 		# now remount the executable with the correct encoding
 		vfs::filesystem unmount [lindex [::vfs::filesystem info] 0]
 
-		set noe [info nameofexecutable]
-
 		# Resolve symlinks
-		set noe [file dirname [file normalize [file join $noe __dummy__]]]
+		set mountpoint [file dirname [file normalize [file join $mountpoint __dummy__]]]
 
-		set tcl_library [file join $noe lib tcl$tcl_version]
-		set tcl_libPath [list $tcl_library [file join $noe lib]]
+		set tcl_library [file join $mountpoint lib tcl$tcl_version]
+		set tcl_libPath [list $tcl_library [file join $mountpoint lib]]
 
-		vfs::filesystem mount $noe $vfsHandler
+		vfs::filesystem mount $mountpoint $vfsHandler
 	}
   
 	# load config settings file if present
 	namespace eval ::vfs { variable tclkit_version 1 }
-	catch { uplevel #0 [list source [file join $noe config.tcl]] }
+	catch { uplevel #0 [list source [file join $mountpoint config.tcl]] }
 
+	# Perform expected initialization
 	uplevel #0 [list source [file join $tcl_library init.tcl]]
   
 	# reset auto_path, so that init.tcl's search outside of tclkit is cancelled
 	set auto_path $tcl_libPath
 
@@ -134,9 +137,41 @@
 	# This loads everything needed for "clock scan" to work
 	# "clock scan" is used within "vfs::zip", which may be
 	# loaded before this is run causing the root VFS to break
 	catch { clock scan }
 
-	# Cleanup
-	unset ::tclKitStorage
-	unset -nocomplain ::tclKitStorage_fd
+	if {$::TCLKIT_TYPE == "kitdll"} {
+		# Set a maximum seek to avoid reading the entire file looking for a
+		# zip header
+		catch { 
+			package require vfs::zip
+			set ::zip::max_header_seek 8192
+		}
+
+		# Now that the initialization is complete, mount the user VFS if needed
+		## Mount the VFS from the Shared Object
+		if {[info exists ::TCLKIT_INITVFS] && [info exists ::tclKitFilename]} {
+			catch {
+				vfs::zip::Mount $::tclKitFilename "/.KITDLL_USER"
+
+				lappend auto_path [file normalize "/.KITDLL_USER/lib"]
+			}
+		}
+
+		## Mount the VFS from executable
+		if {[info exists ::TCLKIT_INITVFS]} {
+			catch {
+				vfs::zip::Mount [info nameofexecutable] "/.KITDLL_APP"
+
+				lappend auto_path [file normalize "/.KITDLL_APP/lib"]
+			}
+		}
+
+	}
+
+	# Clean up
+	unset -nocomplain ::zip::max_header_seek
+	unset -nocomplain ::TCLKIT_TYPE ::TCLKIT_INITVFS
+	unset -nocomplain ::TCLKIT_MOUNTPOINT ::TCLKIT_VFSSOURCE ::TCLKIT_MOUNTPOINT_VAR ::TCLKIT_VFSSOURCE_VAR
+	unset -nocomplain ::tclKitStorage ::tclKitStorage_fd ::tclKitFilename
+	unset -nocomplain ::tclkit_system_encoding
 }

Index: kitsh/buildsrc/kitsh-0.0/configure.ac
==================================================================
--- kitsh/buildsrc/kitsh-0.0/configure.ac
+++ kitsh/buildsrc/kitsh-0.0/configure.ac
@@ -5,43 +5,90 @@
 AC_PROG_CC
 AC_PROG_MAKE_SET
 AC_PROG_INSTALL
 AC_AIX
 AC_GNU_SOURCE
+
+dnl Find out if we should build a DLL or an Executable
+TARGET="tclkit"
+EXTRA_KIT_DEPS=""
+AC_MSG_CHECKING([what target to build])
+AC_ARG_ENABLE(kitdll, AC_HELP_STRING([--enable-kitdll], [Enable building KitDLL instead of Tclkit (default: no)]), [
+	AS_CASE([$enableval],
+		[yes|kitdll], [
+			TARGET="kitdll"
+		],
+		no, [
+			true
+		], [
+			AC_MSG_RESULT([unknown])
+
+			AC_MSG_ERROR([Invalid option: $enableval])
+		]
+	)
+])
+AC_MSG_RESULT([$TARGET])
 
 dnl Find the appropriate libraries to link to
 AC_SEARCH_LIBS(acos, m,, [ AC_MSG_WARN([Couldn't find acos (normally in libm)!]) ])
 AC_SEARCH_LIBS(dlsym, dl,, [ AC_MSG_WARN([Couldn't find dlsym (normally in libdl)!]) ])
 
-dnl Figure out how to statically link to libgcc, if needed
-DC_STATIC_LIBGCC
+AS_IF([test "$TARGET" = "tclkit"], [
+	dnl We have Tclkit
+
+	dnl Figure out how to statically link to libgcc, if needed
+	DC_STATIC_LIBGCC
+
+	dnl Specify local Appinit function
+	AC_DEFINE(TK_LOCAL_APPINIT, [TclKit_AppInit], [Tclkit appinit function])
+], [
+	dnl We have KitDLL
+
+	dnl Determine system information
+	DC_CHK_OS_INFO
+
+	dnl Determine how to create a shared object
+	DC_GET_SHOBJFLAGS
+
+	dnl Determine if we have "objcopy" available to weaken non-Tcl/Tk symbols
+	AC_CHECK_TOOL(OBJCOPY, objcopy, [:])
+
+	dnl Define KitDLL usage
+	AC_DEFINE([TCLKIT_DLL], [1], [Define if you are using a KitDLL rather than a Tclkit])
+])
+
+dnl Set linker rpath for tclsh/wish
+DC_SETLDRUNPATH([.])
 
 dnl Find the appropriate Tcl headers and libraries
 DC_DO_TCL
 
 dnl Find archives we need to link to
 DC_FIND_TCLKIT_LIBS
 
 dnl Find extra objects we need to link as a part of "kit"
 AC_SUBST(EXTRA_OBJS)
+AC_SUBST(EXTRA_VFS_OBJS)
 
 dnl Check for Windows Resource Compiler
 AC_CHECK_TOOL([RC], [windres], [false])
 
 dnl If we found the resource compiler, add "kit.res.o" to our list of objects to build
 dnl (as long as the source for such an object exists)
-if ! test "$RC" = "false"; then
-	if test -f kit.rc; then
+AS_IF([test "$RC" != "false"], [
+	AS_IF([test -f kit.rc], [
 		EXTRA_OBJS="$EXTRA_OBJS kit.res.o"
-	fi
-fi
+	])
+])
 
 dnl Check for Tcl features
 SAVE_LIBS="${LIBS}"
 LIBS="${ARCHS} ${LIBS}"
+
 dnl Determine if we have "Tcl_SetStartupScript" (8.6.x) or "TclSetStartupScriptPath" (8.4.x)
 AC_CHECK_FUNCS(Tcl_SetStartupScript TclSetStartupScriptPath)
+
 dnl Check for the ability to get the current system encoding
 AC_CHECK_FUNCS(Tcl_GetEncodingNameFromEnvironment Tcl_SetSystemEncoding)
 LIBS="${SAVE_LIBS}"
 
 dnl Check for optional headers
@@ -58,10 +105,12 @@
 AC_ARG_WITH(zlib, AC_HELP_STRING([--with-zlib], [directory containing zlib]), [
 	CPPFLAGS="${CPPFLAGS} -I${with_zlib}/include -I${with_zlib}"
 	CFLAGS="${CFLAGS} -I${with_zlib}/include -I${with_zlib}"
 	LDFLAGS="${LDFLAGS} -L${with_zlib}/lib -L${with_zlib}"
 ])
+
+dnl Only needed for Tclkit
 DC_DO_STATIC_LINK_LIB(zlib, -lz,, [
 	DC_DO_STATIC_LINK_LIB(zlib, -lzlib,, [
 		AC_SEARCH_LIBS(inflate, z zlib,, [
 			AC_MSG_WARN([Couldn't find inflate (normally in zlib)!])
 		])
@@ -68,39 +117,85 @@
 	])
 ])
 
 dnl Determine which storage mechanism to use
 AC_MSG_CHECKING([which Tclkit Storage mechanism to use])
-AC_ARG_ENABLE(kit-storage, AC_HELP_STRING([--enable-kit-storage={zip|mk4}], [Use mk4 for storage (default: auto)]), [
-	case "$enableval" in
-		mk4)
-			AC_MSG_RESULT([mk4])
-			AC_DEFINE([KIT_STORAGE_MK4], [1], [Define if you are going to use Metakit4 for kit storage])
-			;;
-		zip)
-			AC_MSG_RESULT([zip])
-			AC_DEFINE([KIT_STORAGE_ZIP], [1], [Define if you are going to use ZIP for kit storage])
-			;;
-		yes)
+
+storage_mech="auto"
+AC_ARG_ENABLE(kit-storage, AC_HELP_STRING([--enable-kit-storage={zip|mk4|cvfs}], [Specify storage mechanism to use for built-in VFS (default: auto)]), [
+	AS_CASE(["$enableval"],
+		mk4, [
+			storage_mech="mk4"
+		],
+		zip, [
+			storage_mech="zip"
+		],
+		cvfs, [
+			storage_mech="cvfs"
+		],
+		yes, [
 			# If they just want to enable kit storage, but nothing specifically, do nothing
-			AC_MSG_RESULT([auto])
-			;;
-		auto)
+			storage_mech="auto"
+		],
+		auto, [
 			# Auto is how it works by default
-			AC_MSG_RESULT([auto])
-			;;
-		no)
+			storage_mech="auto"
+		],
+		no, [
 			# You can't disable kit storage
 			AC_MSG_RESULT([fail])
 			AC_MSG_ERROR([Kit Storage cannot be disabled])
-			;;
-		*)
+		],
+		[
 			AC_MSG_RESULT([fail])
 			AC_MSG_ERROR([Unknown kit storage type: $enableval])
-			;;
-	esac
-], [
-	AC_MSG_RESULT([auto])
+		]
+	)
+])
+
+dnl Explicitly define the storage mechanism
+AS_IF([test "$storage_mech" = "auto"], [
+	AS_IF([test "$TARGET" = 'tclkit'], [
+		AS_IF([test "x$kc_cv_feature_kit_includes_mk4tcl" = 'x1'], [
+			storage_mech="mk4"
+		], [
+			storage_mech="zip"
+		])
+	], [
+		storage_mech="cvfs"
+	])
 ])
 
+dnl Note result
+AC_MSG_RESULT([$storage_mech])
+
+dnl Define appropriate macros for the storage mechanism
+AS_CASE([$storage_mech],
+	mk4, [
+		AC_DEFINE([KIT_STORAGE_MK4], [1], [Define if you are going to use Metakit4 for kit storage])
+	],
+	zip, [
+		AC_DEFINE([KIT_STORAGE_ZIP], [1], [Define if you are going to use ZIP for kit storage])
+
+		dnl Add appropriate dependencies
+		EXTRA_KIT_DEPS="zipvfs.tcl.h"
+	],
+	cvfs, [
+		AC_DEFINE([KIT_STORAGE_CVFS], [1], [Define if you are going to use C-VFS for kit storage])
+
+		dnl Define that C-VFS should be make [load]-able
+		AC_DEFINE([KITDLL_MAKE_LOADABLE], [1], [Specify that the C-VFS should be able to be loaded])
+
+		dnl Add appropriate dependencies
+		EXTRA_KIT_DEPS="vfs_kitdll.tcl.h"
+		EXTRA_VFS_OBJS="${EXTRA_VFS_OBJS} vfs_kitdll_data_tcl.o"
+	]
+)
+
+AC_SUBST(EXTRA_KIT_DEPS)
+
+dnl Put correct Makefile template in place
+rm -f Makefile.in
+cp Makefile.${TARGET}.in Makefile.in
+
 dnl Produce output
-AC_OUTPUT(Makefile)
+AC_OUTPUT(Makefile Makefile.common)

ADDED   kitsh/buildsrc/kitsh-0.0/dir2c.tcl
Index: kitsh/buildsrc/kitsh-0.0/dir2c.tcl
==================================================================
--- /dev/null
+++ kitsh/buildsrc/kitsh-0.0/dir2c.tcl
@@ -0,0 +1,395 @@
+#! /usr/bin/env tclsh
+
+if {[llength $argv] != 2} {
+	puts stderr "Usage: kitdll <hashkey> <startdir>"
+
+	exit 1
+}
+
+set hashkey [lindex $argv 0]
+set startdir [lindex $argv 1]
+
+proc shorten_file {dir file} {
+	set dirNameLen [string length $dir]
+
+	if {[string range $file 0 [expr {$dirNameLen - 1}]] == $dir} {
+		set file [string range $file $dirNameLen end]
+	}
+
+	if {[string index $file 0] == "/"} {
+		set file [string range $file 1 end]
+	}
+	return $file
+}
+
+proc recursive_glob {dir} {
+	set children [glob -nocomplain -directory $dir *]
+
+	set ret [list $dir]
+	foreach child $children {
+		unset -nocomplain childinfo
+		catch {
+			file stat $child childinfo
+		}
+
+		if {![info exists childinfo(type)]} {
+			continue
+		}
+
+		if {$childinfo(type) == "directory"} {
+			foreach add [recursive_glob $child] {
+				lappend ret $add
+			}
+
+			continue
+		}
+
+		if {$childinfo(type) != "file"} {
+			continue
+		}
+
+		lappend ret $child
+	}
+
+	return $ret
+}
+
+# Convert a string into a C-style binary string
+## XXX: This function needs to be optimized
+proc stringify {data} {
+	set ret "\""
+	for {set idx 0} {$idx < [string length $data]} {incr idx} {
+		binary scan [string index $data $idx] H* char
+
+		append ret "\\x${char}"
+
+		if {($idx % 20) == 0 && $idx != 0} {
+			append ret "\"\n\""
+		}
+	}
+
+	set ret [string trim $ret "\n\""]
+
+	set ret "\"$ret\""
+
+	return $ret
+}
+
+# This function must be kept in-sync with the generated C function below
+proc kitdll_hash {path} {
+	set h 0
+	set g 0
+
+	for {set idx 0} {$idx < [string length $path]} {incr idx} {
+		binary scan [string index $path $idx] H* char
+		set char "0x$char"
+
+		set h [expr {($h << 4) + $char}]
+		set g [expr {$h & 0xf0000000}]
+		if {$g != 0} {
+			set h [expr {($h & 0xffffffff) ^ ($g >> 24)}]
+		}
+
+		set h [expr {$h & ((~$g) & 0xffffffff)}]
+	}
+
+	return $h
+}
+
+# Generate list of files to include in output
+set files [recursive_glob $startdir]
+
+# Insert dummy entry cooresponding to C dummy entry
+set files [linsert $files 0 "__DUMMY__"]
+
+# Produce C89 compatible header
+set cpp_tag "KITDLL_[string toupper $hashkey]"
+set code_tag "kitdll_[string tolower $hashkey]"
+set hashkey [string tolower $hashkey]
+
+puts "#ifndef $cpp_tag"
+puts "#  define $cpp_tag 1"
+puts {
+#  ifdef HAVE_STDC
+#    ifndef HAVE_UNISTD_H
+#      define HAVE_UNISTD_H 1
+#    endif
+#    ifndef HAVE_STRING_H
+#      define HAVE_STRING_H 1
+#    endif
+#  endif
+#  ifdef HAVE_UNISTD_H
+#    include <unistd.h>
+#  endif
+#  ifdef HAVE_STRING_H
+#    include <string.h>
+#  endif
+
+#  ifndef LOADED_KITDLL_COMMON
+#    define LOADED_KITDLL_COMMON 1
+
+typedef enum {
+	KITDLL_FILETYPE_FILE,
+	KITDLL_FILETYPE_DIR
+} kitdll_filetype_t;
+
+struct kitdll_data {
+	const char *             name;
+	unsigned long            index;
+	unsigned long            size;
+	kitdll_filetype_t        type;
+	const unsigned char *    data;
+};
+
+static unsigned long kitdll_hash(const unsigned char *path) {
+	unsigned long i, h = 0, g = 0;
+
+	for (i = 0; path[i]; i++) {
+		h = (h << 4) + path[i];
+		g = h & 0xf0000000;
+		if (g) {
+			h ^= (g >> 24);
+		}
+		h &= ((~g) & 0xffffffffLU);
+	}
+        
+        return(h);
+}
+
+#  endif /* !LOADED_KITDLL_COMMON */}
+puts ""
+
+puts "static struct kitdll_data ${code_tag}_data\[\] = {"
+puts "\t{"
+puts "\t\t.name  = NULL,"
+puts "\t\t.index = 0,"
+puts "\t\t.type  = 0,"
+puts "\t\t.size  = 0,"
+puts "\t\t.data  = NULL,"
+puts "\t},"
+for {set idx 1} {$idx < [llength $files]} {incr idx} {
+	set file [lindex $files $idx]
+	set shortfile [shorten_file $startdir $file]
+
+	unset -nocomplain finfo type
+	file stat $file finfo
+
+	switch -- $finfo(type) {
+		"file" {
+			set type "KITDLL_FILETYPE_FILE"
+			set size $finfo(size)
+
+			set fd [open $file]
+			fconfigure $fd -translation binary
+			set data [read $fd]
+			close $fd
+
+			set data "(unsigned char *) [stringify $data]"
+		}
+		"directory" {
+			set type "KITDLL_FILETYPE_DIR"
+			set data "NULL"
+			set size 0
+		}
+	}
+
+	puts "\t{"
+	puts "\t\t.name  = \"$shortfile\","
+	puts "\t\t.index = $idx,"
+	puts "\t\t.type  = $type,"
+	puts "\t\t.size  = $size,"
+	puts "\t\t.data  = $data,"
+	puts "\t},"
+}
+puts "};"
+puts ""
+
+puts "static unsigned long ${code_tag}_lookup_index(const char *path) {"
+puts "\tswitch (kitdll_hash((unsigned char *) path)) {"
+
+for {set idx 1} {$idx < [llength $files]} {incr idx} {
+	set file [lindex $files $idx]
+	set shortfile [shorten_file $startdir $file]
+	set hash [kitdll_hash $shortfile]
+
+	lappend indexes_per_hash($hash) [list $shortfile $idx]
+}
+
+foreach {hash idx_list} [array get indexes_per_hash] {
+	puts "\t\tcase $hash:"
+
+	if {[llength $idx_list] == 1} {
+		set idx [lindex $idx_list 0 1]
+
+		puts "\t\t\treturn($idx);"
+	} else {
+		foreach idx_ent $idx_list {
+			set shortfile [lindex $idx_ent 0]
+			set idx [lindex $idx_ent 1]
+
+			puts "\t\t\tif (strcmp(path, \"$shortfile\") == 0) return($idx);"
+		}
+		puts "\t\t\tbreak;"
+	}
+}
+
+puts "\t}"
+puts "\treturn(0);"
+puts "}"
+puts ""
+
+puts "static struct kitdll_data *${code_tag}_getData(const char *path, unsigned long index) {"
+puts "\tif (path != NULL) {"
+puts "\t\tindex = ${code_tag}_lookup_index(path);"
+puts "\t}"
+puts ""
+puts "\tif (index == 0) {"
+puts "\t\treturn(NULL);"
+puts "\t}"
+puts ""
+puts "\tif (path != NULL) {"
+puts "\t\tif (strcmp(path, ${code_tag}_data\[index\].name) != 0) {"
+puts "\t\t\treturn(NULL);"
+puts "\t\t}"
+puts "\t}"
+puts ""
+puts "\treturn(&${code_tag}_data\[index\]);"
+puts "}"
+puts ""
+
+puts "static unsigned long ${code_tag}_getChildren(const char *path, unsigned long *outbuf, unsigned long outbuf_count) {"
+puts "\tunsigned long index;"
+puts "\tunsigned long num_children = 0;"
+puts ""
+puts "\tindex = ${code_tag}_lookup_index(path);"
+puts "\tif (index == 0) {"
+puts "\t\treturn(0);"
+puts "\t}"
+puts ""
+puts "\tif (${code_tag}_data\[index\].type != KITDLL_FILETYPE_DIR) {"
+puts "\t\treturn(0);"
+puts "\t}"
+puts ""
+puts "\tif (strcmp(path, ${code_tag}_data\[index\].name) != 0) {"
+puts "\t\treturn(0);"
+puts "\t}"
+puts ""
+puts "\tswitch (index) {"
+
+unset -nocomplain children
+array set children [list]
+for {set idx 1} {$idx < [llength $files]} {incr idx} {
+	set file [lindex $files $idx]
+	set shortfile [shorten_file $startdir $file]
+
+	unset -nocomplain finfo type
+	file stat $file finfo
+
+	if {$finfo(type) != "directory"} {
+		continue;
+	}
+
+	# Determine which children are under this directory
+	## Convert the current pathname to a regular expression that matches exactly
+	set file_regexp [string map [list "\\" "\\\\" "." "\\." "\{" "\\\{" "\}" "\\\}" "*" "\\*"] $file]
+
+	## Search for pathnames which start with exactly our name, followed by a slash
+	## followed by no more slashes (direct descendants)
+	set child_idx_list [lsearch -regexp -all $files "^${file_regexp}/\[^/\]*$"]
+
+	set children($idx) $child_idx_list
+
+	puts "\t\tcase $idx:"
+	puts "\t\t\tnum_children = [llength $child_idx_list];"
+	puts "\t\t\tbreak;"
+	
+}
+
+puts "\t}"
+puts ""
+puts "\tif (outbuf == NULL) {"
+puts "\t\treturn(num_children);"
+puts "\t}"
+puts ""
+puts "\tif (num_children > outbuf_count) {"
+puts "\t\tnum_children = outbuf_count;"
+puts "\t}"
+puts ""
+puts "\tif (num_children == 0) {"
+puts "\t\treturn(num_children);"
+puts "\t}"
+puts ""
+puts "\tif (outbuf_count > num_children) {"
+puts "\t\toutbuf_count = num_children;"
+puts "\t}"
+puts ""
+puts "\tswitch (index) {"
+
+foreach {idx child_idx_list} [array get children] {
+	if {[llength $child_idx_list] == 0} {
+		continue
+	}
+
+	puts "\t\tcase $idx:"
+	puts "\t\t\tswitch(outbuf_count) {"
+
+	for {set child_idx_idx [expr {[llength $child_idx_list] - 1}]} {$child_idx_idx >= 0} {incr child_idx_idx -1} {
+		set child_idx [lindex $child_idx_list $child_idx_idx]
+
+		puts "\t\t\t\tcase [expr {$child_idx_idx + 1}]:"
+		puts "\t\t\t\t\toutbuf\[$child_idx_idx\] = $child_idx;"
+	}
+
+	puts "\t\t\t}"
+
+	puts "\t\t\tbreak;"
+}
+
+puts "\t}"
+puts ""
+puts "\treturn(num_children);"
+puts "}"
+puts ""
+
+puts "#  ifdef KITDLL_MAKE_LOADABLE"
+
+set fd [open "vfs_kitdll_data.c"]
+puts [read $fd]
+close $fd
+
+
+puts "static cmd_getData_t *getCmdData(const char *hashkey) {"
+puts "\treturn(${code_tag}_getData);"
+puts "}"
+puts ""
+puts "static cmd_getChildren_t *getCmdChildren(const char *hashkey) {"
+puts "\treturn(${code_tag}_getChildren);"
+puts "}"
+puts ""
+
+puts "int Vfs_kitdll_data_${hashkey}_Init(Tcl_Interp *interp) {"
+puts "\tTcl_Command tclCreatComm_ret;"
+puts "\tint tclPkgProv_ret;"
+puts ""
+puts "\ttclCreatComm_ret = Tcl_CreateObjCommand(interp, \"::vfs::kitdll::data::${hashkey}::getMetadata\", getMetadata, NULL, NULL);"
+puts "\tif (!tclCreatComm_ret) {"
+puts "\t\treturn(TCL_ERROR);"
+puts "\t}"
+puts ""
+puts "\ttclCreatComm_ret = Tcl_CreateObjCommand(interp, \"::vfs::kitdll::data::${hashkey}::getData\", getData, NULL, NULL);"
+puts "\tif (!tclCreatComm_ret) {"
+puts "\t\treturn(TCL_ERROR);"
+puts "\t}"
+puts ""
+puts "\ttclCreatComm_ret = Tcl_CreateObjCommand(interp, \"::vfs::kitdll::data::${hashkey}::getChildren\", getChildren, NULL, NULL);"
+puts "\tif (!tclCreatComm_ret) {"
+puts "\t\treturn(TCL_ERROR);"
+puts "\t}"
+puts ""
+puts "\ttclPkgProv_ret = Tcl_PkgProvide(interp, \"vfs::kitdll::data::${hashkey}\", \"1.0\");"
+puts ""
+puts "\treturn(tclPkgProv_ret);"
+puts "\t}"
+puts "#  endif /* KITDLL_MAKE_LOADABLE */"
+
+puts "#endif /* !$cpp_tag */"

Index: kitsh/buildsrc/kitsh-0.0/installvfs.tcl
==================================================================
--- kitsh/buildsrc/kitsh-0.0/installvfs.tcl
+++ kitsh/buildsrc/kitsh-0.0/installvfs.tcl
@@ -13,28 +13,22 @@
 if {[lindex $argv 2] != ""} {
 	set opt_compression [lindex $argv 2]
 }
 
 # Determine what storage mechanism is being used
-## This logic must be duplicated from "kitInit.c"
-set fd [open Makefile r]
+set fd [open Makefile.common r]
 set data [read $fd]
 close $fd
 
 if {[string match "*KIT_STORAGE_ZIP*" $data]} {
 	set tclKitStorage zip
 }
 if {[string match "*KIT_STORAGE_MK4*" $data]} {
 	set tclKitStorage mk4
 }
-
-if {![info exists tclKitStorage]} {
-	if {[string match "*KIT_INCLUDES_MK4TCL*" $data]} {
-		set tclKitStorage mk4
-	} else {
-		set tclKitStorage zip
-	}
+if {[string match "*KIT_STORAGE_CVFS*" $data]} {
+	set tclKitStorage cvfs
 }
 
 # Define procedures
 proc copy_file {srcfile destfile} {
 	switch -glob -- $srcfile {
@@ -115,7 +109,10 @@
 		} err]} {
 			puts stderr "Error while updating executable: $err"
 
 			exit 1
 		}
+	}
+	"cvfs" {
+		# No-op
 	}
 }

Index: kitsh/buildsrc/kitsh-0.0/kitInit.c
==================================================================
--- kitsh/buildsrc/kitsh-0.0/kitInit.c
+++ kitsh/buildsrc/kitsh-0.0/kitInit.c
@@ -15,13 +15,12 @@
  * RCS: @(#) $Id$
  */
 
 #ifdef KIT_INCLUDES_TK
 #  include <tk.h>
-#else
-#  include <tcl.h>
 #endif /* KIT_INCLUDES_TK */
+#include <tcl.h>
 
 #ifdef _WIN32
 #  define WIN32_LEAN_AND_MEAN
 #  include <windows.h>
 #  undef WIN32_LEAN_AND_MEAN
@@ -73,41 +72,55 @@
 Tcl_AppInitProc	Pwb_Init;
 #endif
 #ifdef KIT_INCLUDES_ZLIB
 Tcl_AppInitProc Zlib_Init;
 #endif
+#ifdef KIT_STORAGE_CVFS
+Tcl_AppInitProc Vfs_kitdll_data_tcl_Init;
+#endif
 #ifdef TCL_THREADS
 Tcl_AppInitProc	Thread_Init;
 #endif
 #ifdef _WIN32
 Tcl_AppInitProc	Dde_Init, Registry_Init;
 #endif
 
-/* Determine which type of storage to use -- MK4 or ZIP */
-#if defined(KIT_STORAGE_MK4) && defined(KIT_STORAGE_ZIP)
-#  undef KIT_STORAGE_ZIP
-#endif
-#if !defined(KIT_STORAGE_MK4) && !defined(KIT_STORAGE_ZIP)
-#  ifdef KIT_INCLUDES_MK4TCL
-#    define KIT_STORAGE_MK4 1
-#  else
-#    define KIT_STORAGE_ZIP 1
-#  endif
-#endif
+#ifdef TCLKIT_DLL
+#  define TCLKIT_MOUNTPOINT "/.KITDLL_TCL"
+#  define TCLKIT_VFSSOURCE "$::tclKitFilename"
+#else
+#  define TCLKIT_MOUNTPOINT "[info nameofexecutable]"
+#  define TCLKIT_VFSSOURCE "[info nameofexecutable]"
+#endif /* TCLKIT_DLL */
+
+#ifdef HAVE_ACCEPTABLE_DLADDR
+#  ifdef KITSH_NEED_WINMAIN
+#    ifdef _WIN32_WCE
+int wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow);
+#    else
+int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow);
+#    endif /* _WIN32_WCE */
+#  endif /* KITSH_NEED_WINMAIN */
+int main(int argc, char **argv);
+#endif /* HAVE_ACCEPTABLE_DLADDR */
 
 #ifdef TCLKIT_REQUIRE_TCLEXECUTABLENAME
 char *tclExecutableName;
 #endif
 
-    /*
-     *  Attempt to load a "boot.tcl" entry from the embedded MetaKit file.
-     *  If there isn't one, try to open a regular "setup.tcl" file instead.
-     *  If that fails, this code will throw an error, using a message box.
-     */
-
+/*
+ *  Attempt to load a "boot.tcl" entry from the embedded MetaKit file.
+ *  If there isn't one, try to open a regular "setup.tcl" file instead.
+ *  If that fails, this code will throw an error, using a message box.
+ */
+/*
+ * This Tcl code is invoked whenever Tcl_Init() is called on an
+ * interpreter.  It should mount up the VFS and make everything ready for
+ * that interpreter to do its job.
+ */
 static char *preInitCmd = 
-#ifdef _WIN32_WCE
+#if defined(_WIN32_WCE) && !defined(TCLKIT_DLL)
 /* silly hack to get wince port to launch, some sort of std{in,out,err} problem */
 "open /kitout.txt a; open /kitout.txt a; open /kitout.txt a\n"
 /* this too seems to be needed on wince - it appears to be related to the above */
 "catch {rename source ::tcl::source}\n"
 "proc source file {\n"
@@ -119,57 +132,88 @@
 	"set code [catch {uplevel 1 $data} res]\n"
 	"info script $old\n"
 	"if {$code == 2} { set code 0 }\n"
 	"return -code $code $res\n"
 "}\n"
-#endif /* _WIN32_WCE */
+#endif /* _WIN32_WCE && !TCLKIT_DLL */
 "proc tclKitInit {} {\n"
 	"rename tclKitInit {}\n"
+#ifdef KIT_INCLUDES_ZLIB
+	"catch { load {} zlib }\n"
+#endif
 #ifdef KIT_INCLUDES_MK4TCL
 	"catch { load {} Mk4tcl }\n"
 #endif
+#ifdef TCLKIT_DLL
+	"load {} tclkit::init\n"
+	"::tclkit::init::initInterp\n"
+	"rename ::tclkit::init::initInterp {}\n"
+#endif /* TCLKIT_DLL */
+	"set bootfile [file join " TCLKIT_MOUNTPOINT " boot.tcl]\n"
+	"if {[file exists $bootfile]} {\n"
+		"catch {\n"
+			"set f [open $bootfile]\n"
+			"set s [read $f]\n"
+			"close $f\n"
+		"}\n"
+	"}\n"
 #ifdef KIT_STORAGE_MK4
 	"set ::tclKitStorage \"mk4\"\n"
-	"mk::file open exe [info nameofexecutable] -readonly\n"
-	"set n [mk::select exe.dirs!0.files name boot.tcl]\n"
-	"if {$n != \"\"} {\n"
-		"set s [mk::get exe.dirs!0.files!$n contents]\n"
-		"if {![string length $s]} { error \"empty boot.tcl\" }\n"
-		"catch {load {} zlib}\n"
-		"if {[mk::get exe.dirs!0.files!$n size] != [string length $s]} {\n"
-			"set s [zlib decompress $s]\n"
+	"if {![info exists s]} {\n"
+		"mk::file open exe " TCLKIT_VFSSOURCE " -readonly\n"
+		"set n [mk::select exe.dirs!0.files name boot.tcl]\n"
+		"if {$n != \"\"} {\n"
+			"set s [mk::get exe.dirs!0.files!$n contents]\n"
+			"if {![string length $s]} { error \"empty boot.tcl\" }\n"
+			"catch {load {} zlib}\n"
+			"if {[mk::get exe.dirs!0.files!$n size] != [string length $s]} {\n"
+				"set s [zlib decompress $s]\n"
+			"}\n"
 		"}\n"
 	"}\n"
 #endif /* KIT_STORAGE_MK4 */
 #ifdef KIT_STORAGE_ZIP
 	"set ::tclKitStorage \"zip\"\n"
 	"catch { load {} vfs }\n"
-	"if {![info exists s]} {\n"
-		"catch {\n"
-			"set bootfile [file join [info nameofexecutable] boot.tcl]\n"
-			"if {[file exists $bootfile]} {\n"
-				"set f [open $bootfile]\n"
-				"set s [read $f]\n"
-				"close $f\n"
-			"}\n"
-		"}\n"
-	"}\n"
 	"if {![info exists s]} {\n"
 #  include "zipvfs.tcl.h"
 		"catch {\n"
-			"set ::tclKitStorage_fd [::zip::open [info nameofexecutable]]\n"
+			"set ::tclKitStorage_fd [::zip::open " TCLKIT_VFSSOURCE "]\n"
 			"::zip::stat $::tclKitStorage_fd boot.tcl sb\n"
 			"seek $::tclKitStorage_fd $sb(ino)\n"
-			"zip::Data $::tclKitStorage_fd sb s\n"
+			"::zip::Data $::tclKitStorage_fd sb s\n"
 		"}\n"
 	"}\n"
 #endif /* KIT_STORAGE_ZIP */
+#ifdef KIT_STORAGE_CVFS
+	"set ::tclKitStorage \"cvfs\"\n"
+	"load {} rechan\n"
+	"load {} vfs\n"
+	"load {} vfs_kitdll_data_tcl\n"
+#include "vfs_kitdll.tcl.h"
+	"if {![info exists s]} {\n"
+		"catch {\n"
+			"set s [::vfs::kitdll::data::getData tcl boot.tcl]\n"
+		"}\n"
+	"}\n"
+#endif /* KIT_STORAGE_CVFS */
+#ifndef TCLKIT_DLL
 	"if {![info exists s]} {\n"
 		"set f [open setup.tcl]\n"
 		"set s [read $f]\n"
 		"close $f\n"
 	"}\n"
+#endif /* !TCLKIT_DLL */
+#ifdef TCLKIT_DLL
+	"set ::TCLKIT_TYPE \"kitdll\"\n"
+#else
+	"set ::TCLKIT_TYPE \"tclkit\"\n"
+#endif /* TCLKIT_DLL */
+	"set ::TCLKIT_MOUNTPOINT " TCLKIT_MOUNTPOINT "\n"
+	"set ::TCLKIT_VFSSOURCE " TCLKIT_VFSSOURCE "\n"
+	"set ::TCLKIT_MOUNTPOINT_VAR {" TCLKIT_MOUNTPOINT "}\n"
+	"set ::TCLKIT_VFSSOURCE_VAR {" TCLKIT_VFSSOURCE "}\n"
 	"uplevel #0 $s\n"
 #if defined(KIT_INCLUDES_TK) && defined(KIT_TK_VERSION)
 	"package ifneeded Tk " KIT_TK_VERSION " {\n"
 		"load {} Tk\n"
 	"}\n"
@@ -244,14 +288,43 @@
 		}
 	}
 #endif /* HAVE_READLINK */
 
 #ifdef HAVE_ACCEPTABLE_DLADDR
+#  ifndef TCLKIT_DLL
 	if (Tcl_GetNameOfExecutable() == NULL) {
 		dladdr_ret = dladdr(&SetExecName, &syminfo);
 		if (dladdr_ret != 0) {
 			SetExecName(interp, syminfo.dli_fname);
+
+			return;
+		}
+	}
+#  endif /* !TCLKIT_DLL */
+
+#  ifdef KITSH_NEED_WINMAIN
+	if (Tcl_GetNameOfExecutable() == NULL) {
+#    ifdef _WIN32_WCE
+		dladdr_ret = dladdr(&WinMain, &syminfo);
+#    else
+		dladdr_ret = dladdr(&wWinMain, &syminfo);
+#    endif /* _WIN32_WCE */
+
+		if (dladdr_ret != 0) {
+			SetExecName(interp, syminfo.dli_fname);
+
+			return;
+		}
+	}
+#  endif /* KITSH_NEED_WINMAIN */
+
+	if (Tcl_GetNameOfExecutable() == NULL) {
+		dladdr_ret = dladdr(&main, &syminfo);
+		if (dladdr_ret != 0) {
+			SetExecName(interp, syminfo.dli_fname);
+
+			return;
 		}
 	}
 #endif /* HAVE_ACCEPTABLE_DLADDR */
 
 	if (Tcl_GetNameOfExecutable() == NULL) {
@@ -264,22 +337,11 @@
 	}
 
 	return;
 }
 
-int TclKit_AppInit(Tcl_Interp *interp) {
-#ifdef KIT_INCLUDES_TK
-#  ifdef _WIN32
-#    ifndef _WIN32_WCE
-	char msgBuf[2049];
-#    endif /* !_WIN32_WCE */
-#  endif /* _WIN32 */
-#endif /* KIT_INCLUDES_TK */
-#ifdef TCLKIT_CAN_SET_ENCODING
-	Tcl_DString encodingName;
-#endif /* TCLKIT_CAN_SET_ENCODING */
-
+static void _Tclkit_Generic_Init(void) {
 #ifdef KIT_INCLUDES_ITCL
 	Tcl_StaticPackage(0, "Itcl", Itcl_Init, NULL);
 #endif 
 #ifdef KIT_INCLUDES_MK4TCL
 	Tcl_StaticPackage(0, "Mk4tcl", Mk4tcl_Init, NULL);
@@ -290,10 +352,13 @@
 	Tcl_StaticPackage(0, "rechan", Rechan_Init, NULL);
 	Tcl_StaticPackage(0, "vfs", Vfs_Init, NULL);
 #ifdef KIT_INCLUDES_ZLIB
 	Tcl_StaticPackage(0, "zlib", Zlib_Init, NULL);
 #endif
+#ifdef KIT_STORAGE_CVFS
+	Tcl_StaticPackage(0, "vfs_kitdll_data_tcl", Vfs_kitdll_data_tcl_Init, NULL);
+#endif
 #ifdef TCL_THREADS
 	Tcl_StaticPackage(0, "Thread", Thread_Init, NULL);
 #endif
 #ifdef _WIN32
 	Tcl_StaticPackage(0, "dde", Dde_Init, NULL);
@@ -301,31 +366,61 @@
 #endif
 #ifdef KIT_INCLUDES_TK
 	Tcl_StaticPackage(0, "Tk", Tk_Init, Tk_SafeInit);
 #endif
 
+	TclSetPreInitScript(preInitCmd);
+
+	return;
+}
+
+static void _Tclkit_Interp_Init(Tcl_Interp *interp) {
+#ifdef TCLKIT_CAN_SET_ENCODING
+	Tcl_DString encodingName;
+#endif /* TCLKIT_CAN_SET_ENCODING */
+
+#ifndef TCLKIT_DLL
 	/* the tcl_rcFileName variable only exists in the initial interpreter */
-#ifdef _WIN32
+#  ifdef _WIN32
 	Tcl_SetVar(interp, "tcl_rcFileName", "~/tclkitrc.tcl", TCL_GLOBAL_ONLY);
-#else
+#  else
 	Tcl_SetVar(interp, "tcl_rcFileName", "~/.tclkitrc", TCL_GLOBAL_ONLY);
-#endif
+#  endif /* _WIN32 */
+#endif /* !TCLKIT_DLL */
+	Tcl_SetVar(interp, "TCLKIT_INITVFS", "1", TCL_GLOBAL_ONLY);
 
 #ifdef TCLKIT_CAN_SET_ENCODING
 	/* Set the encoding from the Environment */
 	Tcl_GetEncodingNameFromEnvironment(&encodingName);
 	Tcl_SetSystemEncoding(NULL, Tcl_DStringValue(&encodingName));
 	Tcl_SetVar(interp, "tclkit_system_encoding", Tcl_DStringValue(&encodingName), 0);
 	Tcl_DStringFree(&encodingName);
-#endif
+#endif /* TCLKIT_CAN_SET_ENCODING */
 
 	/* Hack to get around Tcl bug 1224888.  This must be run here and
 	 * in LibraryPathObjCmd because this information is needed both
 	 * before and after that command is run. */
 	FindAndSetExecName(interp);
 
-	TclSetPreInitScript(preInitCmd);
+	return;
+}
+
+#ifndef TCLKIT_DLL
+int TclKit_AppInit(Tcl_Interp *interp) {
+#ifdef KIT_INCLUDES_TK
+#  ifdef _WIN32
+#    ifndef _WIN32_WCE
+	char msgBuf[2049];
+#    endif /* !_WIN32_WCE */
+#  endif /* _WIN32 */
+#endif /* KIT_INCLUDES_TK */
+
+	/* Perform common initialization */
+	_Tclkit_Generic_Init();
+
+	_Tclkit_Interp_Init(interp);
+
 	if (Tcl_Init(interp) == TCL_ERROR) {
 		goto error;
 	}
 
 #ifdef KIT_INCLUDES_TK
@@ -378,5 +473,101 @@
 #  endif /* _WIN32 */
 #endif /* KIT_INCLUDES_TK */
 
 	return TCL_ERROR;
 }
+#endif /* !TCLKIT_DLL */
+
+
+#ifdef TCLKIT_DLL
+#  ifdef HAVE_ACCEPTABLE_DLADDR
+/* Symbol to resolve against dladdr() */
+static void _tclkit_dummy_func(void) {
+	return;
+}
+#  endif /* HAVE_ACCEPTABLE_DLADDR */
+
+/*
+ * This function will return a pathname we can open() to treat as a VFS,
+ * hopefully
+ */
+static char *find_tclkit_dll_path(void) {
+#ifdef HAVE_ACCEPTABLE_DLADDR
+	Dl_info syminfo;
+	int dladdr_ret;
+#endif /* HAVE_ACCEPTABLE_DLADDR */
+#ifdef _WIN32
+	TCHAR modulename[8192];
+	DWORD gmfn_ret;
+#endif /* _WIN32 */
+
+#ifdef HAVE_ACCEPTABLE_DLADDR
+	dladdr_ret = dladdr(&_tclkit_dummy_func, &syminfo);
+	if (dladdr_ret != 0) {
+		if (syminfo.dli_fname && syminfo.dli_fname[0] != '\0') {
+			return(strdup(syminfo.dli_fname));
+		}
+	}
+#endif /* HAVE_ACCEPTABLE_DLADDR */
+
+#ifdef _WIN32
+	gmfn_ret = GetModuleFileName(TclWinGetTclInstance(), modulename, sizeof(modulename) / sizeof(modulename[0]) - 1);
+
+	if (gmfn_ret != 0) {
+		return(strdup(modulename));
+	}
+#endif /* _WIN32 */
+
+	return(NULL);
+}
+
+/*
+ * This function exists to allow C code to initialize a particular
+ * interpreter.
+ */
+static int tclkit_init_initinterp(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
+	char *kitdll_path;
+
+	kitdll_path = find_tclkit_dll_path();
+	if (kitdll_path != NULL) {
+		Tcl_SetVar(interp, "tclKitFilename", kitdll_path, TCL_GLOBAL_ONLY);
+
+		free(kitdll_path);
+	}
+
+	_Tclkit_Interp_Init(interp);
+
+	return(TCL_OK);
+}
+
+/*
+ * Create a package for initializing a particular interpreter.  This is
+ * our hook to have Tcl invoke C commands when creating an interpreter.
+ * The preInitCmd will load the package in the new interpreter and invoke
+ * this function.
+ */
+int Tclkit_init_Init(Tcl_Interp *interp) {
+	Tcl_Command tclCreatComm_ret;
+	int tclPkgProv_ret;
+
+	tclCreatComm_ret = Tcl_CreateObjCommand(interp, "::tclkit::init::initInterp", tclkit_init_initinterp, NULL, NULL);
+	if (!tclCreatComm_ret) {
+		return(TCL_ERROR);
+	}
+
+	tclPkgProv_ret = Tcl_PkgProvide(interp, "tclkit::init", "1.0");
+
+	return(tclPkgProv_ret);
+}
+
+/*
+ * Initialize the Tcl system when we are loaded, that way Tcl functions
+ * are ready to be used when invoked.
+ */
+void __attribute__((constructor)) _Tclkit_Init(void) {
+	Tcl_StaticPackage(0, "tclkit::init", Tclkit_init_Init, NULL);
+
+	_Tclkit_Generic_Init();
+
+	return;
+}
+#endif

ADDED   kitsh/buildsrc/kitsh-0.0/tclsh.c
Index: kitsh/buildsrc/kitsh-0.0/tclsh.c
==================================================================
--- /dev/null
+++ kitsh/buildsrc/kitsh-0.0/tclsh.c
@@ -0,0 +1,11 @@
+#include <tcl.h>
+
+int Tcl_AppInit(Tcl_Interp *interp) {
+	return(Tcl_Init(interp));
+}
+
+int main(int argc, char **argv) {
+	Tcl_Main(argc, argv, Tcl_AppInit);
+
+	return(1);
+}

ADDED   kitsh/buildsrc/kitsh-0.0/vfs_kitdll.tcl
Index: kitsh/buildsrc/kitsh-0.0/vfs_kitdll.tcl
==================================================================
--- /dev/null
+++ kitsh/buildsrc/kitsh-0.0/vfs_kitdll.tcl
@@ -0,0 +1,335 @@
+#! /usr/bin/env tcl
+
+package require vfs
+
+namespace eval ::vfs::kitdll {}
+
+# Convience functions
+proc ::vfs::kitdll::Mount {hashkey local} {
+	vfs::filesystem mount $local [list ::vfs::kitdll::vfshandler $hashkey]
+	catch {
+		vfs::RegisterMount $local [list ::vfs::kitdll::Unmount]
+	}
+}
+
+proc ::vfs::kitdll::Unmount {local} {
+	vfs::filesystem unmount $local
+}
+
+# Implementation
+## I/O Handlers (pass to appropriate hashkey)
+namespace eval ::vfs::kitdll::data {}
+proc ::vfs::kitdll::data::getChildren args {
+	set hashkey [lindex $args 0]
+
+	set cmd "::vfs::kitdll::data::${hashkey}::getChildren"
+	set cmd [linsert $args 0 $cmd]
+
+	eval $cmd
+}
+
+proc ::vfs::kitdll::data::getMetadata args {
+	set hashkey [lindex $args 0]
+
+	set cmd "::vfs::kitdll::data::${hashkey}::getMetadata"
+	set cmd [linsert $args 0 $cmd]
+
+	eval $cmd
+}
+
+proc ::vfs::kitdll::data::getData args {
+	set hashkey [lindex $args 0]
+
+	set cmd "::vfs::kitdll::data::${hashkey}::getData"
+	set cmd [linsert $args 0 $cmd]
+
+	eval $cmd
+}
+
+## VFS and Chan I/O
+### Dispatchers
+proc ::vfs::kitdll::vfshandler {hashkey subcmd args} {
+	set cmd $args
+	set cmd [linsert $cmd 0 "::vfs::kitdll::vfsop_${subcmd}" $hashkey]
+
+	return [eval $cmd]
+}
+
+proc ::vfs::kitdll::chanhandler {hashkey subcmd args} {
+	set cmd $args
+	set cmd [linsert $cmd 0 "::vfs::kitdll::chanop_${subcmd}" $hashkey]
+
+	return [eval $cmd]
+}
+
+### Actual handlers
+#### Channel operation handlers
+proc ::vfs::kitdll::chanop_initialize {hashkey chanId mode} {
+	return [list initialize finalize watch read seek]
+}
+
+proc ::vfs::kitdll::chanop_finalize {hashkey chanId} {
+	unset -nocomplain ::vfs::kitdll::chandata([list $hashkey $chanId])
+
+	return
+}
+
+proc ::vfs::kitdll::chanop_watch {hashkey chanId eventSpec} {
+	array set chaninfo $::vfs::kitdll::chandata([list $hashkey $chanId])
+
+	set chaninfo(watching) $eventSpec
+
+	set ::vfs::kitdll::chandata([list $hashkey $chanId]) [array get chaninfo]
+
+	if {[lsearch -exact $chaninfo(watching) "read"] != -1} {
+		after 0 [list catch "chan postevent $chanId [list {read}]"]
+	}
+
+	return
+}
+
+proc ::vfs::kitdll::chanop_read {hashkey chanId bytes} {
+	array set chaninfo $::vfs::kitdll::chandata([list $hashkey $chanId])
+
+	set pos $chaninfo(pos)
+	set len $chaninfo(len)
+
+	if {[lsearch -exact $chaninfo(watching) "read"] != -1} {
+		after 0 [list catch "chan postevent $chanId [list {read}]"]
+	}
+
+	if {$pos == $len} {
+		return ""
+	}
+
+	set end [expr {$pos + $bytes}]
+	if {$end > $len} {
+		set end $len
+	}
+
+	set data [::vfs::kitdll::data::getData $hashkey $chaninfo(file) $pos $end]
+
+	set dataLen [string length $data]
+	incr pos $dataLen
+
+	set chaninfo(pos) $pos
+
+	set ::vfs::kitdll::chandata([list $hashkey $chanId]) [array get chaninfo]
+
+	return $data
+}
+
+proc ::vfs::kitdll::chanop_seek {hashkey chanId offset origin} {
+	array set chaninfo $::vfs::kitdll::chandata([list $hashkey $chanId])
+
+	set pos $chaninfo(pos)
+	set len $chaninfo(len)
+
+	switch -- $origin {
+		"start" - "0" {
+			set pos $offset
+		}
+		"current" - "1" {
+			set pos [expr {$pos + $offset}]
+		}
+		"end" - "2" {
+			set pos [expr {$len + $offset}]
+		}
+	}
+
+	if {$pos < 0} {
+		set pos 0
+	}
+
+	if {$pos > $len} {
+		set pos $len
+	}
+
+	set chaninfo(pos) $pos
+	set ::vfs::kitdll::chandata([list $hashkey $chanId]) [array get chaninfo]
+
+	return $pos
+}
+
+#### VFS operation handlers
+proc ::vfs::kitdll::vfsop_stat {hashkey root relative actualpath} {
+	catch {
+		set ret [::vfs::kitdll::data::getMetadata $hashkey $relative]
+	}
+
+	if {![info exists ret]} {
+		vfs::filesystem posixerror $::vfs::posix(ENOENT)
+	}
+
+	return $ret
+}
+
+proc ::vfs::kitdll::vfsop_access {hashkey root relative actualpath mode} {
+	set ret [::vfs::kitdll::data::getMetadata $hashkey $relative]
+
+	if {$mode & 0x2} {
+		vfs::filesystem posixerror $::vfs::posix(EROFS)
+	}
+
+	return 1
+}
+
+proc ::vfs::kitdll::vfsop_matchindirectory {hashkey root relative actualpath pattern types} {
+	set ret [list]
+
+	catch {
+		array set metadata [::vfs::kitdll::data::getMetadata $hashkey $relative]
+	}
+
+	if {![info exists metadata]} {
+		return [list]
+	}
+
+	if {$pattern == ""} {
+		set children [list $relative]
+	} else {
+		set children [::vfs::kitdll::data::getChildren $hashkey $relative]
+	}
+
+	foreach child $children {
+		if {$pattern != ""} {
+			if {![string match $pattern $child]} {
+				continue
+			}
+		}
+
+		unset -nocomplain metadata
+		catch {
+			array set metadata [::vfs::kitdll::data::getMetadata $hashkey $child]
+		}
+
+		if {[string index $root end] == "/"} {
+			set child "${root}${child}"
+		} else {
+			set child "${root}/${child}"
+		}
+		if {[string index $child end] == "/"} {
+			set child [string range $child 0 end-1]
+		}
+
+		if {![info exists metadata(type)]} {
+			continue
+		}
+
+		set filetype 0
+		switch -- $metadata(type) {
+			"directory" {
+				set filetype [expr {$filetype | 0x04}]
+			}
+			"file" {
+				set filetype [expr {$filetype | 0x10}]
+			}
+			"link" {
+				set filetype [expr {$filetype | 0x20}]
+			}
+			default {
+				continue
+			}
+		}
+
+		if {($filetype & $types) != $types} {
+			continue
+		}
+
+		lappend ret $child
+	}
+
+	return $ret
+}
+
+proc ::vfs::kitdll::vfsop_fileattributes {hashkey root relative actualpath {index -1} {value ""}} {
+	set attrs [list -owner -group -permissions]
+
+	if {$value != ""} {
+		vfs::filesystem posixerror $::vfs::posix(EROFS)
+	}
+
+	if {$index == -1} {
+		return $attrs
+	}
+
+	array set metadata [::vfs::kitdll::data::getMetadata $hashkey $relative]
+
+	set attr [lindex $attrs $index]
+
+	switch -- $attr {
+		"-owner" {
+			return $metadata(uid)
+		}
+		"-group" {
+			return $metadata(gid)
+		}
+		"-permissions" {
+			if {$metadata(type) == "directory"} {
+				set metadata(mode) [expr {$metadata(mode) | 040000}]
+			}
+
+			return [format {0%o} $metadata(mode)]
+		}
+	}
+
+	return -code error "Invalid index"
+}
+
+proc ::vfs::kitdll::vfsop_open {hashkey root relative actualpath mode permissions} {
+	if {$mode != "" && $mode != "r"} {
+		vfs::filesystem posixerror $::vfs::posix(EROFS)
+	}
+
+	catch {
+		array set metadata [::vfs::kitdll::data::getMetadata $hashkey $relative]
+	}
+
+	if {![info exists metadata]} {
+		vfs::filesystem posixerror $::vfs::posix(ENOENT)
+	}
+
+	if {$metadata(type) == "directory"} {
+		vfs::filesystem posixerror $::vfs::posix(EISDIR)
+	}
+
+	if {[info command chan] != ""} {
+		set chan [chan create [list "read"] [list ::vfs::kitdll::chanhandler $hashkey]]
+
+		set ::vfs::kitdll::chandata([list $hashkey $chan]) [list file $relative pos 0 len $metadata(size) watching ""]
+
+		return [list $chan]
+	}
+
+	if {[info command rechan] == ""} {
+		catch {
+			package require rechan
+		}
+	}
+
+	if {[info command rechan] != ""} {
+		set chan [rechan [list ::vfs::kitdll::chanhandler $hashkey] 2]
+
+		set ::vfs::kitdll::chandata([list $hashkey $chan]) [list file $relative pos 0 len $metadata(size) watching ""]
+
+		return [list $chan]
+	}
+
+	return -code error "No way to generate a channel, need either Tcl 8.5+, \"rechan\""
+}
+
+##### No-Ops since we are a readonly filesystem
+proc ::vfs::kitdll::vfsop_createdirectory {args} {
+	vfs::filesystem posixerror $::vfs::posix(EROFS)
+}
+proc ::vfs::kitdll::vfsop_deletefile {args} {
+	vfs::filesystem posixerror $::vfs::posix(EROFS)
+}
+proc ::vfs::kitdll::vfsop_removedirectory {args} {
+	vfs::filesystem posixerror $::vfs::posix(EROFS)
+}
+proc ::vfs::kitdll::vfsop_utime {} {
+	vfs::filesystem posixerror $::vfs::posix(EROFS)
+}
+
+package provide vfs::kitdll 1.0

ADDED   kitsh/buildsrc/kitsh-0.0/vfs_kitdll_data.c
Index: kitsh/buildsrc/kitsh-0.0/vfs_kitdll_data.c
==================================================================
--- /dev/null
+++ kitsh/buildsrc/kitsh-0.0/vfs_kitdll_data.c
@@ -0,0 +1,270 @@
+#include <tcl.h>
+
+#ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+#endif
+
+typedef struct kitdll_data *(cmd_getData_t)(const char *, unsigned long);
+typedef unsigned long (cmd_getChildren_t)(const char *, unsigned long *, unsigned long);
+
+/* Your implementation must provide these */
+static cmd_getData_t *getCmdData(const char *hashkey);
+static cmd_getChildren_t *getCmdChildren(const char *hashkey);
+
+/* Tcl Commands */
+static int getMetadata(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
+	cmd_getData_t *cmd_getData;
+	cmd_getChildren_t *cmd_getChildren;
+	struct kitdll_data *finfo = NULL;
+	Tcl_Obj *ret_list, *ret_list_items[20];
+	unsigned long num_children;
+	const char *hashkey;
+	const char *file;
+
+	if (objc != 3) {
+		Tcl_SetResult(interp, "wrong # args: should be \"getMetadata hashKey fileName\"", TCL_STATIC);
+
+		return(TCL_ERROR);
+	}
+
+	hashkey = Tcl_GetString(objv[1]);
+	file = Tcl_GetString(objv[2]);
+
+	cmd_getData = getCmdData(hashkey);
+	cmd_getChildren = getCmdChildren(hashkey);
+
+	if (cmd_getData == NULL || cmd_getChildren == NULL) {
+		Tcl_SetResult(interp, "No such hashkey", TCL_STATIC);
+
+		return(TCL_ERROR);
+	}
+
+	finfo = cmd_getData(file, 0);
+
+	if (finfo == NULL) {
+		Tcl_SetResult(interp, "No such file or directory", TCL_STATIC);
+
+		return(TCL_ERROR);
+	}
+
+	/* Values that can be derived from "finfo" */
+	ret_list_items[0] = Tcl_NewStringObj("type", 4);
+	ret_list_items[2] = Tcl_NewStringObj("mode", 4);
+	ret_list_items[4] = Tcl_NewStringObj("nlink", 5);
+
+	if (finfo->type == KITDLL_FILETYPE_DIR) {
+		num_children = cmd_getChildren(file, NULL, 0);
+
+		ret_list_items[1] = Tcl_NewStringObj("directory", 9);
+		ret_list_items[3] = Tcl_NewLongObj(040555);
+		ret_list_items[5] = Tcl_NewLongObj(num_children);
+	} else {
+		ret_list_items[1] = Tcl_NewStringObj("file", 4);
+		ret_list_items[3] = Tcl_NewLongObj(0444);
+		ret_list_items[5] = Tcl_NewLongObj(1);
+	}
+
+	ret_list_items[6] = Tcl_NewStringObj("ino", 3);
+	ret_list_items[7] = Tcl_NewLongObj(finfo->index);
+
+	ret_list_items[8] = Tcl_NewStringObj("size", 4);
+	ret_list_items[9] = Tcl_NewLongObj(finfo->size);
+
+	/* Dummy values */
+	ret_list_items[10] = Tcl_NewStringObj("uid", 3);
+	ret_list_items[11] = Tcl_NewStringObj("0", 1);
+
+	ret_list_items[12] = Tcl_NewStringObj("gid", 3);
+	ret_list_items[13] = Tcl_NewStringObj("0", 1);
+
+	ret_list_items[14] = Tcl_NewStringObj("atime", 5);
+	ret_list_items[15] = Tcl_NewStringObj("0", 1);
+
+	ret_list_items[16] = Tcl_NewStringObj("mtime", 5);
+	ret_list_items[17] = Tcl_NewStringObj("0", 1);
+
+	ret_list_items[18] = Tcl_NewStringObj("ctime", 5);
+	ret_list_items[19] = Tcl_NewStringObj("0", 1);
+
+	ret_list = Tcl_NewListObj(sizeof(ret_list_items) / sizeof(ret_list_items[0]), ret_list_items);
+
+	Tcl_SetObjResult(interp, ret_list);
+
+	return(TCL_OK);
+}
+
+static int getData(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
+	struct kitdll_data *finfo = NULL;
+	cmd_getData_t *cmd_getData;
+	const char *hashkey;
+	const char *file;
+	const char *end_str;
+	Tcl_Obj *ret_str;
+	long start = 0;
+	long end = -1;
+	int tclGetLFO_ret;
+
+	if (objc < 3 || objc > 5) {
+		Tcl_SetResult(interp, "wrong # args: should be \"getData hashKey fileName ?start? ?end?\"", TCL_STATIC);
+
+		return(TCL_ERROR);
+	}
+
+	hashkey = Tcl_GetString(objv[1]);
+	file = Tcl_GetString(objv[2]);
+
+	if (objc > 3) {
+		tclGetLFO_ret = Tcl_GetLongFromObj(interp, objv[3], &start);
+
+		if (tclGetLFO_ret != TCL_OK) {
+			return(tclGetLFO_ret);
+		}
+	}
+
+	if (objc > 4) {
+		end_str = Tcl_GetString(objv[4]);
+		if (strcmp(end_str, "end") == 0) {
+			end = -1;
+		} else {
+			tclGetLFO_ret = Tcl_GetLongFromObj(interp, objv[4], &end);
+
+			if (tclGetLFO_ret != TCL_OK) {
+				return(tclGetLFO_ret);
+			}
+		}
+	}
+
+	cmd_getData = getCmdData(hashkey);
+
+	if (cmd_getData == NULL) {
+		Tcl_SetResult(interp, "No such hashkey", TCL_STATIC);
+
+		return(TCL_ERROR);
+	}
+
+	finfo = cmd_getData(file, 0);
+
+	if (finfo == NULL) {
+		Tcl_SetResult(interp, "No such file or directory", TCL_STATIC);
+
+		return(TCL_ERROR);
+	}
+
+	if (finfo->type != KITDLL_FILETYPE_FILE) {
+		Tcl_SetResult(interp, "Not a file", TCL_STATIC);
+
+		return(TCL_ERROR);
+	}
+
+	if (end == -1) {
+		end = finfo->size;
+	}
+
+	if (end > finfo->size) {
+		end = finfo->size;
+	}
+
+	if (start < 0) {
+		start = 0;
+	}
+
+	if (end < 0) {
+		end = 0;
+	}
+
+	if (end < start) {
+		Tcl_SetResult(interp, "Invalid arguments, start must be less than end", TCL_STATIC);
+
+		return(TCL_ERROR);
+	}
+
+	ret_str = Tcl_NewByteArrayObj(finfo->data + start, (end - start));
+
+	Tcl_SetObjResult(interp, ret_str);
+
+	return(TCL_OK);
+}
+
+static int getChildren(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
+	struct kitdll_data *finfo = NULL;
+	cmd_getChildren_t *cmd_getChildren;
+	cmd_getData_t *cmd_getData;
+	unsigned long num_children, idx;
+	unsigned long *children;
+	const char *hashkey;
+	const char *file;
+	const char *child;
+	Tcl_Obj *ret_list, *ret_curr_obj;
+
+	if (objc != 3) {
+		Tcl_SetResult(interp, "wrong # args: should be \"getChildren hashKey fileName\"", TCL_STATIC);
+
+		return(TCL_ERROR);
+	}
+
+	hashkey = Tcl_GetString(objv[1]);
+	file = Tcl_GetString(objv[2]);
+
+	cmd_getData = getCmdData(hashkey);
+	cmd_getChildren = getCmdChildren(hashkey);
+
+	if (cmd_getData == NULL || cmd_getChildren == NULL) {
+		Tcl_SetResult(interp, "No such hashkey", TCL_STATIC);
+
+		return(TCL_ERROR);
+	}
+
+	finfo = cmd_getData(file, 0);
+
+	if (finfo == NULL) {
+		Tcl_SetResult(interp, "No such file or directory", TCL_STATIC);
+
+		return(TCL_ERROR);
+	}
+
+	if (finfo->type != KITDLL_FILETYPE_DIR) {
+		Tcl_SetResult(interp, "Not a directory", TCL_STATIC);
+
+		return(TCL_ERROR);
+	}
+
+	num_children = cmd_getChildren(file, NULL, 0);
+
+	if (num_children == 0) {
+		/* Return immediately if there are no children */
+		Tcl_SetResult(interp, "", TCL_STATIC);
+
+		return(TCL_OK);
+	}
+
+	ret_list = Tcl_NewObj();
+	if (ret_list == NULL) {
+		Tcl_SetResult(interp, "Failed to allocate new object", TCL_STATIC);
+
+		return(TCL_ERROR);
+	}
+
+	children = malloc(sizeof(*children) * num_children);
+
+	num_children = cmd_getChildren(file, children, num_children);
+
+	for (idx = 0; idx < num_children; idx++) {
+		finfo = cmd_getData(NULL, children[idx]);
+
+		if (finfo == NULL || finfo->name == NULL) {
+			continue;
+		}
+
+		child = finfo->name;
+
+		ret_curr_obj = Tcl_NewStringObj(child, strlen(child));
+
+		Tcl_ListObjAppendList(interp, ret_list, ret_curr_obj);
+	}
+
+	free(children);
+
+	Tcl_SetObjResult(interp, ret_list);
+
+	return(TCL_OK);
+}

ADDED   kitsh/buildsrc/kitsh-0.0/wish.c
Index: kitsh/buildsrc/kitsh-0.0/wish.c
==================================================================
--- /dev/null
+++ kitsh/buildsrc/kitsh-0.0/wish.c
@@ -0,0 +1,30 @@
+#include <tk.h>
+
+int Tcl_AppInit(Tcl_Interp *interp) {
+	int tcl_ret;
+
+	tcl_ret = Tcl_Init(interp);
+	if (tcl_ret == TCL_ERROR) {
+		return(tcl_ret);
+	}
+
+	tcl_ret = Tk_Init(interp);
+	if (tcl_ret == TCL_ERROR) {
+		return(tcl_ret);
+	}
+
+#ifdef _WIN32
+	tcl_ret = Tk_CreateConsoleWindow(interp);
+	if (tcl_ret == TCL_ERROR) {
+		return(tcl_ret);
+	}
+#endif
+
+	return(TCL_OK);
+}
+
+int main(int argc, char **argv) {
+	Tk_Main(argc, argv, Tcl_AppInit);
+
+	return(1);
+}