
INSTALLATION:

We have not changed the native Itcl2.2 installation, simply extended it,
and integrated other packages.  To build, type:

	configure --enable-shared --enable-gcc --prefix=/usr/neotcl7.6
then type
	make
then type
	make install

If you run into trouble, checkout the suggestions at the end of this
section.

See the README about potential DB file incompatability.

We encourage the use of the following options:

	--prefix=<your path here>
	--enable-shared
	--enable-gcc (if you want are using gcc)

Neo7.6.0 contains several additonal options which are:

	--without-db		disable db command
	--with-db[=dir-of-libdb.a]  enable db (default) via neoXdb.c
	--without-encryption    disable NeoSoft Encryption commands
	--without-cute          do not include CUTE

If you `--enable-shared', neo7.6.0 will also build db.1.85 as a shared
library.  If the db library linked against is not a shared library.
"package require Neo" won't work.

If you don't care about the `db' command, build using `--without-db'.
libraries.  If your o/s comes with a shared library version already
(eg. some Linux systems I know of) you may use `--with-db=system' to
indicate to use the system db libraries.  Future releases will generate
a shared library automatically.

It is safe to use these options in the toplevel configure script
and let it call the other packages with them.  CUTE is a utility
to talk to a tty device.  It was written before Expect existed
and is not as full-featured, but is included for backwards compatability
with some of our software.

We discourage the use of --with-arch (a TclX option), and we don't
guarantee that --exec-prefix will work for all packages.

The 7.6 integration implements the following --with options.  Use them
if we have a package you don't care about or don't need that's giving
you trouble:

  --without-tk     do not build the Tk toolkit
  --without-itcl   do not build Itcl
  --without-itk    do not build Itk
  --without-iwidgets   do not build Iwidgets
  --without-tclx   do not build Extended Tcl (TclX)
  --without-neo    do not build the NeoSoft (Neo) package
  --without-expect do not build Expect
  --without-dp     do not build Dp
  --without-gd     do not build Gd
  --without-x	do not build Tk nor packages that use Tk
  --with-nws	build only the minimum required by NeoWebScript*

* NeoWebScript is a module extension to the Apache webserver that
allows for server-side includes that execute Tcl code without
spawning a separate process.  See http://www.neowebscript.com.


We have seen the following build problems which are easily resolved:

- If you get a syntax error in a configure script, you are probably
  running an old Bourne shell with half a brain.  The native /bin/sh
  on BSDI1.1 and FreeBSD are like this.  Use "bash" instead by setting
  the environment variable "CONFIG_SHELL" to the path of your bash.
  If you don't want to bother with bash, try ksh if your system has it.
  VERY IMPORTANT: Make sure that CONFIG_SHELL and SHELL contain
  absolute pathnames, eg. `/bin/bash' not just `bash'.

- We have seen configure produce strange results due to bad versions of
  sed (ie. that come with early FreeBSD).  In particular, configure did
  not parse command line options correctly (saying they weren't valid).
  If you have this problem, try GNU sed.

- If you get syntax errors from "make", then try using GNU make.

- Especially if you have other versions of Tcl on your system already,
  for this build it is probably best to not have it in your PATH
  or to have anything in LD_LIBRARY_PATH (or equivalent) that points
  to the other Tcl stuff.

- Configure loops forever: you are missing a subdirectory that configure
  expects to be there.  Install the directory or modify configure.in
  and run autoconf.

* Bash and GNU make may be obtained from prep.ai.mit.edu or a mirror
  of same.

RUNTIME:

Okay, you now have a zillion commands in your $prefix/bin directory.
On some systems that support shared libraries, you may have to set
LD_LIBRARY_PATH (or your equivalent) to point to the directory
containing the shared libraries.

We have modified the install scripts to install an entry into
pkgIndex.tcl for each shared library in the system.  Once you have
set LD_LIBRARY_PATH (if needed), you should be able to run any of
the basic interpreters, such as "ish", and type "package require Neo"
for example.

Here is a list of all of the package names that can be given to
"package require" as built within this distribution:

	Dp Itcl Itk Iwidgets Expect Neo Gd Tkx Tk Tclx Tcl

For scripts, there are several approaches to take to get an interpreter
with suitable capabilities:

1. Choose the nearest binary:
    dpwish expect expectk ish itclsh itkwish neotcl tcl wishx
   and point your script's #! line to it.  Then do "package require"
   commands for the rest of the features you need.

2. Choose a single binary to use and "package require" everything you
   need.  More and more you will probably see packages that do not
   install their own binary, but just a shared library.

3. We note that some DES encryption libraries are not distributed as 
   a shared library.  Nor at this time do we build a shared DB library
   (the changes to do this will appear in a future release).
   If you need these, you may best start with "neotcl" binary, and
   "package require" from there.

4. It is possible to modify the main init.tcl script to detect the
   executable's name ([info nameofexecutable]) and perform various
   package require commands based on this.  Thus, wishx should be
   replaced with a symbolic link to neotcl, and then init.tcl could
   make it appear the same by doing 
	if [cequal [info nameofexecutable] wishx] {package require Tkx}

Randy Kunkee
NeoSoft, Inc.
Houston, TX USA
