Sybtcl

INSTALLATION

For installation on win and mac platforms, see the ./win and ./mac directories.

Sybtcl can be added to standard Tcl's tclsh and wish, or to Extended Tcl's
tcl and wishx.  

Sybtcl supports building a shared library by default that can be
loaded using Tcl's 'package require' or 'load' commands.
Static libraries and executables can be built by configuring
with --disable-shared.

First, I would recommend that you start from a working Tcl/TclX/Tk base.
Compile all the code, run the 'test' targets, try out the tcl and wishx
interpreters.  Install tcl and wish into public directories (e.g.
/usr/local/bin) and the Tcl, TclX, and Tk library code (e.g., /usr/local/lib)
Also try out the widget demos from the Tk package.  Everything works? Good,
now you can start on Sybtcl.

Un-tar the Sybtcl distribution in a sibling directory to tcl7.6, tk4.2,
and tclX7.6.0, or tcl8.0, tk8.0, tclX8.0.0 (or the most current versions of 
each distribution.)

Still using Tcl 7.4?  see ./unix/conf-tcl-74

Linux users:  read this file *and* ctcompat/README.ctcompat.  You must build
with --enable-ctlib, and be careful about linking.


Sybtcl uses GNU Autoconf to build a Makefile.  Run "./configure" in the
'unix' directory.  Configure recognizes the following options:


  --prefix=DIR         where to install man, bin, and lib
  --exec-prefix=DIR    where to install bin and lib, if different than --prefix
		       the paths you specify should be the same as the paths
		       you specified when you configured Tcl and Tk.  Sybtcl's
		       configure script uses the tclConfig.sh file that
		       was installed by Tcl in these locations.


  package options:     --with-tk --with-tclx --disable-shared  --enable-ctlib

  --with-tk            build static executable with Tk.
                       use "--without-tk" if you don't have Tk installed,
                       default is "--with-tk". This is only recognized if
		       you also have specified "--disable-shared"

  --with-tclx          build static executable with Extended Tcl (TclX).
                       use "--without-tclx" if you don't have TclX installed,
                       default is "--without-tclx". This is only recognized if
		       you also have specified "--disable-shared"
 
  --disable-shared     disable building shared library,  build static libraries
		       and executables instead.
		       The default is to build a shared library.

                       If you use "--enable-shared", configure sets
                       "--without-tk" and "--without-tclx", since the shared
                       library can be loaded into tclsh, tcl, wish, and/or
                       wishx as needed.

                     * NOTE: --enable-shared can only be specified if your
                       Sybase distribution includes a shared library object,
                       e.g $SYBASE/lib/libsybdb.so (architecture appropriate
                       shared library extension).

                     * NOTE 2: It is highly recommended that you have 
		       configured Tcl with '--enable-shared'.  The configure
		       and Makefile for Sybtcl uses information in tclConfig.sh
		       for searching for dynamic libraries at run time.  This
		       information is only included in tclConfig.sh if Tcl
		       was configured with --enabled-shared.  Otherwise, it
		       may be necessary that you include the path to your
		       Sybase libraries in the environment variable used for
		       searching for dynamic libraries, typically
		       LD_LIBRARY_PATH or LPATH, depending on your cpu/os.
		       See the man pages for ld(1), ldd(1), or dlopen(3) for 
		       details and the correct flag for your cpu/os.  

  --enable-ctlib       build Sybtcl using Sybase's CT-Lib.  This option
                       is normally NOT RECOMMENDED.  Sybtcl is written to
                       use Sybase's DB-Lib.  --enable-ctlib is designed for
		       systems that do not have DB-Lib available, such
		       as Linux.  See the ./ctcompat directory for more
		       information.


  the following maybe specified, but configure tries to find the
  paths on its own if not specified:

  --with-sybase-directory=DIR   where to find the Sybase home directory,
				 include/sybdb.h  lib/libsybdb.a  



You should specify the same "--prefix=DIR" and "--exec-prefix=DIR" as when you
built Tcl, Tk, and TclX.

The configure script tries to find Tcl, Tk, and TclX installation files in the
same directory path as specified with --prefix= (default /usr/local).  Configure
expects to find $prefix/lib/tclConfig.sh, tkConfig.sh, and tclxConfig.sh;
$prefix/include/ for tcl/tk/tclx include files; $prefix/lib/ for
tcl/tk/tclx libraries.
 
The environment variable SYBASE is used to find the Sybase libraries, or
specify the Sybase home using --with-sybase-directory=.
 
If configure cannot find the paths to Tcl, Tk, TclX, or Sybase, configure
will halt with a message.

Manual editing of the Makefile may be necessary if configure reports a warning.
Also check the value of the 'OTHER_LD_SEARCH_FLAGS' if you are building
the dynamic library version of Sybtcl.

After configure runs, examine 'Makefile', or just 'make' and see what happens.

If you specified '--enable-shared' (the default) while running configure, a 
shared library will be built.  Otherwise, if you specified '--disable-shared',
a static library will be built and executables created.  If a static library 
is built, the Makefile gathers up the Sybase library and bundles the objects 
into libSybtcl.a along with sybtcl.o.  

The default executables are `tclsh' and `wish', or `tcl' and `wishx' if
--with-tclx is specified.  If different executable names are desired,
you should edit the Makefile.

"make install" will copy the resulting executables, library and man page into 
the specified directories.  If you specified '--enable-shared', a 
pkgIndex.tcl file is built or modified.

Note on pkgIndex.tcl:  The Makefile builds a pkgIndex.tcl file, and installs
it into a versioned Sybtcl directory.  This scheme works for Tcl 7.6 and 
later.  If you are using Tcl 7.5, you will have to manually install this
file into you Tcl library directory (e.g. /usr/local/lib/tcl7.5)

Optionally, you can "make install-wisqlite" to copy the wisqlite program to
a directory, and change the #! interpreter line to reflect the Makefile
values.  Wisql requires TclX features.

To install the full-blown UCO Wisql, see the source tree ./samples/uco

"make clean" will delete the .o files, executables, formatted man page,
and configure cache files.

You can add Sybtcl to other Tcl/Tk interpreters.  Add a call to
"Sybtcl_Init(interp)" to your tclAppInit.c or tkAppInit.c module, and link
with libSybtcl.a.  If you are linking several extensions you may consider
using Tcl-my-fancy, a small package I wrote to aid this task.  See
ftp://ftp.neosoft.com/pub/tcl/NEW/tcl-my-fancy-2.0.tar.gz

Try out the sample Sybtcl scripts.  It's also fun to start the tcl
interpreter, and just type in code on the fly.  Try benign SQL commands
at first, say:
	$ tcl
	tcl> sybconnect userid passwd   ** use a valid userid and passwd **
	tcl> sybsql sybtcl0 sp_who
	tcl> sybnext sybtcl0
	tcl> sybnext sybtcl0
	tcl> sybcols sybtcl0
	tcl> parray sybmsg

Sybtcl seems to fit in to the rest of Tcl/Extended Tcl/Tk without
name conflicts.

The man page was written using -man macros.  Use your favorite nroff/troff
formatter, e.g. 
	nroff -man sybtcl.man > sybtcl.nr
	troff -Talw -man sybtcl.man | alw > sybtcl.ps
	psroff -Tdtps -t -man sybtcl.man > sybtcl.ps
	whatever




Tom Poindexter
tpoindex@nyx.net
