Index: kitdll/build.sh ================================================================== --- kitdll/build.sh +++ kitdll/build.sh @@ -64,13 +64,11 @@ # Create VFS directory mkdir "starpack.vfs" mkdir "starpack.vfs/lib" ## Copy in required built directories - cp -r "${OTHERPKGSDIR}"/tcl/out/* 'starpack.vfs/' - cp -r "${OTHERPKGSDIR}"/tclvfs/out/* 'starpack.vfs/' - cp -r "${OTHERPKGSDIR}"/thread/out/* 'starpack.vfs/' + 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" @@ -82,11 +80,11 @@ echo "Running: ${MAKE:-make}" ${MAKE:-make} TCLSH_NATIVE="${TCLSH_NATIVE}" || exit 1 # Strip the KitDLL of debugging symbols, if possible - "${STRIP:-strip}" -g libtcl.* >/dev/null 2>/dev/null + "${STRIP:-strip}" -g libtclkit.* >/dev/null 2>/dev/null exit 0 ) || exit 1 exit 0 Index: kitdll/buildsrc/kitdll-0.0/Makefile.in ================================================================== --- kitdll/buildsrc/kitdll-0.0/Makefile.in +++ kitdll/buildsrc/kitdll-0.0/Makefile.in @@ -1,8 +1,9 @@ CC = @CC@ CFLAGS = @CFLAGS@ @SHOBJFLAGS@ -Wall CPPFLAGS = @CPPFLAGS@ @DEFS@ -DKITDLL_MAKE_LOADABLE=1 +WISH_CFLAGS = @WISH_CFLAGS@ LDFLAGS = @LDFLAGS@ SHOBJLDFLAGS = @SHOBJLDFLAGS@ LIBS = @LIBS@ STATICLIBS = @ARCHS@ OBJS = vfs_kitdll_data_tcl.o kitInit.o rechan.o pwb.o @@ -33,10 +34,14 @@ # Test driver tclsh.o: tclsh.c tclsh: tclsh.o libtclkit.@SHOBJEXT@ $(CC) $(CPPFLAGS) $(CFLAGS) -o tclsh tclsh.o -L. -ltclkit -Wl,-R,`pwd` +wish.o: wish.c +wish: wish.o libtclkit.@SHOBJEXT@ + $(CC) $(CPPFLAGS) $(CFLAGS) $(WISH_CFLAGS) -o wish wish.o -L. -ltclkit -Wl,-R,`pwd` + # Cleanup routeines clean: rm -f libtclkit.@SHOBJEXT@ rm -f $(OBJS) rm -f vfs_kitdll_data_tcl.c Index: kitdll/buildsrc/kitdll-0.0/aclocal.m4 ================================================================== --- kitdll/buildsrc/kitdll-0.0/aclocal.m4 +++ kitdll/buildsrc/kitdll-0.0/aclocal.m4 @@ -217,23 +217,42 @@ ]) AC_DEFUN(DC_FIND_TCLKIT_LIBS, [ DC_SETUP_TCL_PLAT_DEFS - for proj in tcl tclvfs; do + WISH_CFLAGS="" + + for proj in tcl tclvfs tk; 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" ' '`" if test "$proj" = "tcl"; then libfiles="${libfilesnostub}" fi + + if test "$proj" = "tk"; then + libfiles="${libfilesnostub}" + if test -n "$libfiles"; 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 + + if test "$host_os" = "mingw32msvc" -o "$host_os" = "mingw32"; then + WISH_CFLAGS="-mwindows" + fi + fi + fi ARCHS="${ARCHS} ${libfiles}" AC_MSG_RESULT([${libfiles}]) done + AC_SUBST(WISH_CFLAGS) AC_SUBST(ARCHS) ]) Index: kitdll/buildsrc/kitdll-0.0/kitInit.c ================================================================== --- kitdll/buildsrc/kitdll-0.0/kitInit.c +++ kitdll/buildsrc/kitdll-0.0/kitInit.c @@ -1,6 +1,17 @@ -#include +#ifdef KIT_INCLUDES_TK +# include +#else +# include +#endif /* KIT_INCLUDES_TK */ + +#ifdef _WIN32 +# define WIN32_LEAN_AND_MEAN +# include +# undef WIN32_LEAN_AND_MEAN +#endif /* _WIN32 */ + #include "tclInt.h" #if defined(HAVE_TCL_GETENCODINGNAMEFROMENVIRONMENT) && defined(HAVE_TCL_SETSYSTEMENCODING) # define TCLKIT_CAN_SET_ENCODING 1 #endif @@ -33,10 +44,15 @@ "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" @@ -87,10 +103,13 @@ #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; } Index: kitdll/buildsrc/kitdll-0.0/tclsh.c ================================================================== --- kitdll/buildsrc/kitdll-0.0/tclsh.c +++ kitdll/buildsrc/kitdll-0.0/tclsh.c @@ -1,9 +1,5 @@ -#ifdef HAVE_STDIO_H -# include -#endif - #include int Tcl_AppInit(Tcl_Interp *interp) { return(Tcl_Init(interp)); } ADDED kitdll/buildsrc/kitdll-0.0/wish.c Index: kitdll/buildsrc/kitdll-0.0/wish.c ================================================================== --- kitdll/buildsrc/kitdll-0.0/wish.c +++ kitdll/buildsrc/kitdll-0.0/wish.c @@ -0,0 +1,30 @@ +#include + +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); +}