Retrieving the Necessary Files
The distribution is available by anonymous ftp from:
The files that you need depend on your choice of installation method,
- Binary, statically-linked executables:
- This requires the least work, with the trade-off of larger
executables. You only need the
- Binary, dynamically-linked executables:
- This requires that you
move the dynamic loaded libraries to an appropriate directories. Both
these libraries and the executables are contained in the package
- Compile nevot:
- This assumes that you have working versions (either static or
dynamically loadable) of the Tcl, Tk, Tcl-DP, BLT, DES and GSM
libraries on your system. You only need the
nevot-V.tar.gz file containing the NeVoT
- Compile NeVoT, use precompiled static libraries:
- In addition to nevot-version.tar.gz, you
need the static libraries (tcl, tk, tcl-DP, BLT, gsm, tksolo,
des) contained in lib-arch.tar.gz.
- Compile NeVoT, use precompiled loadable libraries:
- In addition to the nevot sources in
nevot-version.tar.gz, you need the static libraries in
lib-arch.tar.gz and the loadable libraries contained in
nevot-version-arch.tar.gz. The linker will
automatically prefer the loadable (dynamic) versions of a library,
The binaries are standalone, that is, they do not require that any
other packages are installed.
- Retrieve binaries. All files are stored as gzip'ed tar files.
For some systems, both statically and dynamically linked versions may
be obtained. The dynamically linked archives contain the necessary
shared libraries. Not all the versions listed below may be available
at any given time. For porting, any of the libraries may be used
either as static or dynamic libraries; the listing simply indicates
current usage for the platforms supported.
The HP version was compiled with gcc or c89;
c89 does not support 64-bit integers and has length
limitations on string constants and thus should be avoided if at all
- Unpack the tar files into a directory of yours containing
gunzip -c nevot-*.tar.gz | tar xvf -
- nevot (or their static equivalents, nevot.static, etc.) should be
in the shell's path. Check this with which nevot, etc.
- Install the shareable libraries so that the dynamic loader can
find them. The following table lists the file name patterns and the tool
you can use to check which library will be used at runtime.
For SGI Irix, the run-time loader rld and its debugging
version, /usr/lib/rld.debug allow tracing of dynamic loading
actions by setting the environment variables _RLD_PATH and
The sources are available from the same places by anonymous ftp as a
gzip'ed tar file. The following additional libraries are needed and
included as object libraries in the library distribution tar file,
lib-arch.tar.gz. Each item indicates the
version used; later versions should in general work. The links at
each item retrieve the archive file. The Tcl-related files are
available for anonymous ftp from ftp.aud.alcatel.com
If you don't want to build your own libraries, the needed static
libraries are contained in
The shareable (dynamic) libraries are contained in the binary
distribution for the same platform. These libraries need to be
installed so that they can be found during linking; you may have to
modify the compile script to work for your directory structure.
By default, the libraries are expected in sun4/lib
hp/lib, etc., under your home directory. This location is set
by the PREFIX_ARCH variable in compile.
1.8 or greater
- Probably any number of DES routines will work; currently the set
(said to be ``one of the fastest around'') by Eric Young is used:
version 4.0 Linked statically. A SPARC 20/50 needs 8.7 microseconds
per byte for DES CBC, a Silicon Graphics IP22 22.9 microseconds per
byte. See also this listing for
alternate DES implementations.
version 1.0 patchlevel 7 or the original.
A different Makefile is used.
7.5a2. Used as a shared library. Since the number of
arguments has changed in the Tcl_Eval function, pre-7.0 versions will
4.1a2 Used as a shared library.
version 2.2 This library allows the creation of stand-alone
versions, i.e., executables that do not require that Tcl, Tk, Tcl-DP,
etc. are installed on the target system.
version 3.3b1. You also need to create the dplite
library from this distribution if you want to compile
nevotd. Always linked statically.
- shared library extensions:
- For saving disk space and load time, it is desirable to link the
executables dynamically against the Tcl, Tk and Tix libraries. There
is a plus patch for Tcl, Tk and Tix that generates both
static and dynamic libraries.
In order to use the UDP multicast facilities, you have to install the
appropriate multicast kernel modifications for systems without native
multicast support. Currently, Solaris and SGI have built-in multicast
NeVoT can either use the compiled-in Tcl files or use local
versions. When starting up, the applications check whether the Tcl
files can be located. If not, the compiled-in versions are used. If
you want to use the Tcl files, either the ones contained in the source
distribution or your own, modified versions, you have to set a number
of environment variables. The environment variable
NEVOT_LIBRARY is used by NeVoT and should be defined as
the directory where nevot.tcl resides.
By default, NeVoT always uses compiled-in versions of the Tcl and Tk
standard libraries, linked in through the tksolo library.
This can be changed by appropriate modification of the sources files
*_init.c. If local versions are to be used, then the
environment variable TK_LIBRARY should point to the
directory containing tk.tcl and other files from the Tk
library. The environment variable TCL_LIBRARY should point to
the directory containing init.tcl and other files. In csh, for
example, use something like
setenv TCL_LIBRARY /usr/local/lib/tcl
setenv TK_LIBRARY /usr/local/lib/tk
setenv DP_LIBRARY /usr/local/lib/dp
setenv NEVOT_LIBRARY /usr/foo/nevot/tk
setenv NEVOTD_LIBRARY /usr/foo/nevot/tcl
Finally, modify the beginning of the shell script compile. By
default, tk, tcl, etc. libraries are expected either in
/usr/local/lib or in $HOME/ARCH/lib. Binaries are
created in $HOME/ARCH/bin.
The following shell variables can be set in the script:
Hardware and compiler specific options are in the file
compile.ARCH, e.g., compile.sun4. You should define the
environment variable CC to name your favorite compiler.
- Prefix for architecture specific directories. By default, local
libraries (e.g., tcl or tk) are expected in PREFIX_ARCH/lib, binaries
are deposited in PREFIX_ARCH/bin. These defaults can be changed by
the variables below.
- Include files for Tcl and Tk; by default a list of "standard"
directories is searched.
- Include files for X11; by default a list of directories is
- Binaries are deposited here; created if necessary.
- Object files are created in this directory; created
- An additional local include directory, looked at
first. This may be needed, for example, if the system include file
netinet/in.h has not been updated for IP multicast.
- Compiler optimization flag; typically -g for debugging
and -O for production use.
- List of directories to be searched for libraries.
- List of directories to be searched for
libraries when linking statically.
You can define the environment variable CC to determine the
compiler to be used. If you just want to compile parts of the system,
you can use one of:
By default, only a dynamically-linked version version of each
executable will be created in $HOME/$ARCH/bin. If you want
the static version as well, add all as the first argument,
e.g., compile all. Similarly, the argument dyn
and static create only the respective versions. The static
version has the suffix .static.
Porting to Other Platforms
Normally, you should only have to change/create the following files
when porting NeVoT to a new system. arch denotes the
system designation, e.g., sun4 or hp:
Generally, #ifdef should be avoided where possible.
|audio hardware interface
|emulation of system library calls
|word-length dependent data types
SunOS Audio Buffers
It is strongly recommended to reduce the SunOS audio buffer size to
the packetization interval. A high number of audio output errors
indicate that the buffer size is probably too large.
SunOS 4.1.1, 4.1.2
To set the buffer size in SunOS 4.1.1 and 4.1.2, you have to become
super-user and execute the following Bourne shell script:
adb -k -w /vmunix /dev/mem <<EOD
8-bit audio, SunOS 4.1.3
For SunOS 4.1.3 on systems with only 8-bit audio (SPARCstation II,
IPX, IPC, etc.), the symbol names have changed, so that the proper
adb -k -w /vmunix /dev/mem <<EOD
For SPARCstation 10s, use
adb -k -w /vmunix /dev/mem <<EOD
SPARCstation 5, SunOS 4.1.3 and 4.1.4
For SPARCstation 5 running SunOS 4.1.3 or 4.1.4, use a different audio
adb -k -w /vmunix /dev/mem <<EOD
SPARCstation 5 have severe audio quality problems. The patches
101508-07 and 102161-01 must be installed. (Note: this information
is current as of 11/02/94 and is subject to change.) For SunOS 4.1.4,
install the SPARC 5 audio jumbo patch 102387-02.
Generic Patching Tool
The program tools/kernel.c displays and patches the necessary
variables, assuming you have read/write access to kernel memory.
For SunOS 5.1 and later, the input buffer size is set within the
NeVoT audio driver and thus no kernel modifications are needed.
To query the variable, omit the ``W''.
SPARC 5 Audio
As shipped, SPARC 5 audio is basically unusable with both SunOS or
Solaris. You can find the patches below in in the UK or Columbia or at Sun. You can check
which patches have been installed with the command showrev
For SunOS 4.1.3, install patches 101508-07 and 102161-02.
For SunOS 4.1.4, apply patch 102387-02.
For Solaris 2.3, install patch 101836-02 (``SunOS 5.3: SS5 audio jumbo
patch for Solaris Ed II''). If you have previously applied the ms2
patch you will find it will not install (Sun got the version numbering
wrong), so you need to do it manually by copying the audiocs driver
file in the patch into the /kernel/drv directory. There are also
patches 102182-02 and 102183-01.
For Solaris 2.4, install patch 102037-01 (``SunOS 5.4: Extra clicks
during audio mode changes'') and 102125-02 (which may not be available