         TCLX_PATCHES

These patches to TclX8.1.1 form the beginning of Stubs-support
for TclX. Implemented are:
- Some fixes in the use of Tcl_InitStubs().
- libtclx8.1.1.so is now compiled with -DUSE_TCL_STUBS
  and linked with the stub library.
- A few other fixes, such as header-file ordering in tclXfilescan.c
  and a (char *) cast. Those two fixes are necessary only in
  combination with the 8.1.1 plus-patch, and have no
  other side-effects.

Still missing:
- TclX should export its own stub-table, and provide its
  own stub-library (libtclxstub8.1.1.a) to be picked up by
  libtkx8.1.1.so
- libtkx8.1.1.so should be linked with libtclstub8.1.a,
  libtclxstub8.1.1.a and libtkstub8.1.a

This partial implementation is sufficient for me at this
moment. Later it will be implemented further.

                     Jan Nijtmans     Jan.Nijtmans@wxs.nl

==========================================================
*** unix/Common.mk.in.orig	Sat Jun 26 06:40:12 1999
--- unix/Common.mk.in	Sun Jun 27 10:35:06 1999
***************
*** 91,97 ****
  TCL_DEFS             = @TCL_DEFS@
  TCL_LIBS             = @TCL_LIBS@
  TCL_EXEC_PREFIX      = @TCL_EXEC_PREFIX@
! TCL_SHLIB_CFLAGS     = @TCL_SHLIB_CFLAGS@
  TCL_LD_FLAGS         = @TCL_LD_FLAGS@
  TCL_DL_LIBS          = @TCL_DL_LIBS@
  TCL_SHLIB_LD         = @TCL_SHLIB_LD@
--- 91,97 ----
  TCL_DEFS             = @TCL_DEFS@
  TCL_LIBS             = @TCL_LIBS@
  TCL_EXEC_PREFIX      = @TCL_EXEC_PREFIX@
! TCL_SHLIB_CFLAGS     = @TCL_SHLIB_CFLAGS@ -DUSE_TCL_STUBS
  TCL_LD_FLAGS         = @TCL_LD_FLAGS@
  TCL_DL_LIBS          = @TCL_DL_LIBS@
  TCL_SHLIB_LD         = @TCL_SHLIB_LD@
*** unix/configure.orig	Sun Jun 27 12:13:56 1999
--- unix/configure	Sun Jun 27 12:17:40 1999
***************
*** 4796,4801 ****
--- 4796,4803 ----
  s%@TCL_EXTRA_CFLAGS@%$TCL_EXTRA_CFLAGS%g
  s%@TCL_BUILD_LIB_SPEC@%$TCL_BUILD_LIB_SPEC%g
  s%@TCL_LIB_SPEC@%$TCL_LIB_SPEC%g
+ s%@TCL_BUILD_STUB_LIB_SPEC@%$TCL_BUILD_STUB_LIB_SPEC%g
+ s%@TCL_STUB_LIB_SPEC@%$TCL_STUB_LIB_SPEC%g
  s%@TK_VERSION@%$TK_VERSION%g
  s%@TK_DEFS@%$TK_DEFS%g
  s%@TK_LIBS@%$TK_LIBS%g
***************
*** 4806,4811 ****
--- 4808,4815 ----
  s%@TKX_DBGX@%$TKX_DBGX%g
  s%@TK_BUILD_LIB_SPEC@%$TK_BUILD_LIB_SPEC%g
  s%@TK_LIB_SPEC@%$TK_LIB_SPEC%g
+ s%@TK_BUILD_STUB_LIB_SPEC@%$TK_BUILD_STUB_LIB_SPEC%g
+ s%@TK_STUB_LIB_SPEC@%$TK_STUB_LIB_SPEC%g
  s%@CC@%$CC%g
  s%@SYSCFLAGS@%$SYSCFLAGS%g
  s%@RANLIB@%$RANLIB%g
*** unix/configure.in.orig	Sun Jun 27 12:02:08 1999
--- unix/configure.in	Sun Jun 27 12:05:19 1999
***************
*** 203,208 ****
--- 203,210 ----
  AC_SUBST(TCL_EXTRA_CFLAGS)
  AC_SUBST(TCL_BUILD_LIB_SPEC)
  AC_SUBST(TCL_LIB_SPEC)
+ AC_SUBST(TCL_BUILD_STUB_LIB_SPEC)
+ AC_SUBST(TCL_STUB_LIB_SPEC)
  
  AC_SUBST(TK_VERSION)
  AC_SUBST(TK_DEFS)
***************
*** 214,219 ****
--- 216,223 ----
  AC_SUBST(TKX_DBGX)
  AC_SUBST(TK_BUILD_LIB_SPEC)
  AC_SUBST(TK_LIB_SPEC)
+ AC_SUBST(TK_BUILD_STUB_LIB_SPEC)
+ AC_SUBST(TK_STUB_LIB_SPEC)
  
  #------------------------------------------------------------------------------
  # Check for various programs used during the build.  If the CC environment
***************
*** 471,520 ****
      fi
  done
  AC_SUBST(SHARED_LIBS)
- 
- #------------------------------------------------------------------------------
- # Check for Plus patch being installed. Does libtcl.a contains a definition of
- # Tcl_InitStandAlone() and does Tk contain Tk_InitStandAlone.
- #------------------------------------------------------------------------------
- AC_MSG_CHECKING([standalone support of Tcl (Plus patch)])
- if test -f "${TCL_BUILD}/unix/${TCL_STLIB_NAME}"; then
-     x=`nm -p "${TCL_BUILD}/unix/${TCL_STLIB_NAME}" |grep 'Tcl_InitStandAlone'`
-     if test "x$x" != "x"; then
-         # Build variables already set
- 	AC_MSG_RESULT([yes])
-         AC_DEFINE(HAVE_TCL_STANDALONE)
-     else
- 	AC_MSG_RESULT([no])
- 	TCLX_BUILD_STANDALONE=""
- 	TCLX_BUILD_DUMMY_STANDALONE=""
-     fi
- else
-     AC_MSG_RESULT([no])
-     TCLX_BUILD_STANDALONE=""
-     TCLX_BUILD_DUMMY_STANDALONE=""
- fi
- AC_SUBST(TCLX_BUILD_STANDALONE)
- AC_SUBST(TCLX_BUILD_DUMMY_STANDALONE)
- 
- AC_MSG_CHECKING([standalone support of Tk (Plus patch)])
- if test "${TKX_BUILD}" = "YES" -a -f "${TK_BUILD}/unix/${TK_STLIB_NAME}"; then
-     x=`nm -p "${TK_BUILD}/unix/${TK_STLIB_NAME}" |grep 'Tk_InitStandAlone'`
-     if test "x$x" != "x"; then
-         # Build variables already set
- 	AC_MSG_RESULT([yes])
-         AC_DEFINE(HAVE_TK_STANDALONE)
-     else
- 	AC_MSG_RESULT([no])
- 	TKX_BUILD_STANDALONE=""
- 	TKX_BUILD_DUMMY_STANDALONE=""
-     fi
- else
-     AC_MSG_RESULT([no])
-     TKX_BUILD_STANDALONE=""
-     TKX_BUILD_DUMMY_STANDALONE=""
- fi
- AC_SUBST(TKX_BUILD_STANDALONE)
- AC_SUBST(TKX_BUILD_DUMMY_STANDALONE)
  
  #------------------------------------------------------------------------------
  # Determine the search path argument for the installed TclX libraries. 
--- 475,480 ----
*** tcl/generic/tclExtend.h.orig	Sun Jun 27 11:00:21 1999
--- tcl/generic/tclExtend.h	Sun Jun 27 11:01:06 1999
***************
*** 128,136 ****
  			       int         exact));
  
  EXTERN int
- Tclx_InitStandAlone _ANSI_ARGS_((Tcl_Interp *interp));
- 
- EXTERN int
  Tclxcmd_Init _ANSI_ARGS_((Tcl_Interp *interp));
  
  EXTERN int
--- 128,133 ----
***************
*** 305,313 ****
  
  EXTERN int
  Tkx_Init _ANSI_ARGS_((Tcl_Interp  *interp));
- 
- EXTERN int
- Tkx_InitStandAlone _ANSI_ARGS_((Tcl_Interp *interp));
  
  EXTERN int
  Tkx_SafeInit _ANSI_ARGS_((Tcl_Interp *interp));
--- 302,307 ----
*** tcl/generic/tclXfilescan.c.orig	Sat Jun 26 06:39:55 1999
--- tcl/generic/tclXfilescan.c	Sun Jun 27 10:35:07 1999
***************
*** 17,24 ****
   *-----------------------------------------------------------------------------
   */
  
! #include "tclExtdInt.h"
  #include "tclRegexp.h"
  
  /*
   * A scan context describes a collection of match patterns and commands,
--- 17,25 ----
   *-----------------------------------------------------------------------------
   */
  
! #include "tcl.h"
  #include "tclRegexp.h"
+ #include "tclExtdInt.h"
  
  /*
   * A scan context describes a collection of match patterns and commands,
*** tcl/generic/tclXinit.c.orig	Sat Jun 26 06:39:55 1999
--- tcl/generic/tclXinit.c	Sun Jun 27 10:40:38 1999
***************
*** 354,361 ****
  Tclx_Init (interp)
      Tcl_Interp *interp;
  {
!     if (Tcl_InitStubs(interp, "8.0", 0) == NULL) {
! 	abort();
      }
  
      if (InitSetup (interp) == TCL_ERROR)
--- 354,361 ----
  Tclx_Init (interp)
      Tcl_Interp *interp;
  {
!     if (Tcl_InitStubs(interp, "8.1", 0) == NULL) {
! 	return TCL_ERROR;
      }
  
      if (InitSetup (interp) == TCL_ERROR)
*** tcl/generic/tclXlib.c.orig	Sat Jun 26 06:39:55 1999
--- tcl/generic/tclXlib.c	Sun Jun 27 10:35:07 1999
***************
*** 207,213 ****
          goto posixError;
      channel = NULL;
  
!     oldScriptFile = iPtr->scriptFile;
      iPtr->scriptFile = fileName;
      result = Tcl_GlobalEval (interp, cmdBuf.string);
      iPtr->scriptFile = oldScriptFile;
--- 207,213 ----
          goto posixError;
      channel = NULL;
  
!     oldScriptFile = (char *) iPtr->scriptFile;
      iPtr->scriptFile = fileName;
      result = Tcl_GlobalEval (interp, cmdBuf.string);
      iPtr->scriptFile = oldScriptFile;
*** tcl/unix/Makefile.in.orig	Sun Jun 27 12:21:20 1999
--- tcl/unix/Makefile.in	Sun Jun 27 12:22:04 1999
***************
*** 34,40 ****
  
  LD_SWITCHES = ${LDFLAGS} ${TCL_LD_FLAGS} ${XLDFLAGS} ${XCFLAGS} ${CFLAGS}
  
! LIBS = ${TCLX_LD_SEARCH_FLAGS} @SHARED_LIBS@
  
  ALL_LIBS = ${TCLX_BUILD_LIB_SPEC} ${TCL_LIB} ${TCLX_LIBS} ${TCL_LIBS} \
  	   ${XLDLIBS} ${TCLX_CC_SEARCH_FLAGS}
--- 34,40 ----
  
  LD_SWITCHES = ${LDFLAGS} ${TCL_LD_FLAGS} ${XLDFLAGS} ${XCFLAGS} ${CFLAGS}
  
! LIBS = ${TCLX_LD_SEARCH_FLAGS} ${TCL_BUILD_STUB_LIB_SPEC} @SHARED_LIBS@
  
  ALL_LIBS = ${TCLX_BUILD_LIB_SPEC} ${TCL_LIB} ${TCLX_LIBS} ${TCL_LIBS} \
  	   ${XLDLIBS} ${TCLX_CC_SEARCH_FLAGS}
*** tk/generic/tkXinit.c.orig	Sat Jun 26 06:40:07 1999
--- tk/generic/tkXinit.c	Sun Jun 27 10:47:52 1999
***************
*** 36,42 ****
  InitSetup (interp)
      Tcl_Interp  *interp;
  {
!     if (Tcl_PkgRequire (interp, "Tk", TK_VERSION, 1) == NULL) {
   	return TCL_ERROR;
      }
      if (Tcl_PkgRequire (interp, "Tclx", TCLX_VERSION, 1) == NULL) {
--- 36,45 ----
  InitSetup (interp)
      Tcl_Interp  *interp;
  {
!     if (Tcl_InitStubs (interp, TCL_VERSION, 0) == NULL) {
!       return TCL_ERROR;
!     }
!     if (Tk_InitStubs (interp, TK_VERSION, 0) == NULL) {
   	return TCL_ERROR;
      }
      if (Tcl_PkgRequire (interp, "Tclx", TCLX_VERSION, 1) == NULL) {
***************
*** 60,76 ****
  int Tkx_Init (interp)
      Tcl_Interp *interp;
  {
-     /* 
-      * Initialize the stubs before making any calls to Tcl or Tk APIs.
-      */
- 
-     if (Tcl_InitStubs(interp, "8.0", 0) == NULL) {
- 	abort();
-     }
-     if (Tk_InitStubs(interp, "8.0", 0) == NULL) {
- 	abort();
-     }
- 
      if (InitSetup(interp) != TCL_OK) {
  	goto errorExit;
      }
--- 63,68 ----
