Notes
=====

Please note that we use some GNU make extensions, so make sure that 
you try to compile Websh using a GNU version of make (or gmake) when
compiling under UNIX.


Compile Websh 3.6
=================

from the top level directory,

cd src/unix
autoconf
./configure
make

You may have to pass special options to configure, such as

--with-tcl to indicate where tclConfig.sh is located.

--with-tclinclude to indicate where the Tcl header files are.

--with-httpdinclude to indicate where the Apache header files are

--enable-threads if you plan to use it with Apache 2 
  (don't forget to also compile Tcl with threads enabled).


Websh provides the following targets
====================================

websh3.6.<patch>
  standalone tclsh with websh package already loaded

libwebsh3.6.<patch>.so
  Tcl package shared object (provides package websh)

mod_websh3.6.<patch>.so
  Apache module for Apache 1.3 and Apache 2.0 respectively
