TENDRA 5.0.0 RELEASE INFORMATION
================================
REVISION INFORMATION
--------------------
$Id$
COPYRIGHT INFORMATION
---------------------
Please read the file COPYRIGHT for the copyright notice.
ORGANISATION OF RELEASE
-----------------------
The src subdirectory, which contains the source code, is organised into
the following top-level directories:
build which contains various information used during
installation;
installers which contains the compiler back-ends, which
translate the compiler intermediate form, TDF,
to the appropriate machine instructions;
lib which contains everything not included in the
other directories;
producers which contains the compiler front-ends, which
translate C and C++ to the compiler intermediate
form, TDF;
tools which contains various tools for manipulating,
viewing and generating TDF;
utilities which contains various compiler generator
utilities used in the development of the TenDRA
software.
The installers directory is split into a common section, containing code
which is used by all the back ends, plus a directory for each of the
target CPUs:
680x0 Motorola 68020, 68030 and 68040,
80x86 Intel i386, i486 and Pentium,
alpha DEC Alpha,
amd64 AMD64,
hppa HP Precision Architecture,
mips SGI/DEC MIPS,
power POWER,
ppc601 POWER PC,
sparc SPARC.
Each CPU directory is also divided into a common section, plus a directory
for each of the target operating systems:
680x0/sunos 680x0 on SunOS 4,
80x86/cygwin32 Intel on Cygwin32,
80x86/dragonfly Intel on DragonFly,
80x86/freebsd Intel on FreeBSD,
80x86/linux Intel on Linux,
80x86/minix Intel on Minix,
80x86/netbsd Intel on NetBSD,
80x86/openbsd Intel on OpenBSD,
80x86/sco Intel on SCO,
80x86/solaris Intel on Solaris 2,
80x86/svr4.2 Intel on Unixware,
alpha/osf1 Alpha on OSF/1,
amd64/dragonfly AMD64 on DragonFly,
amd64/freebsd AMD64 on FreeBSD,
amd64/linux AMD64 on Linux,
amd64/netbsd AMD64 on NetBSD,
amd64/openbsd AMD64 on OpenBSD,
hppa/hpux HP-PA on HP-UX,
mips/irix MIPS on Irix,
mips/ultrix MIPS on Ultrix,
power/aix POWER on AIX,
ppc601/aix POWER PC on AIX,
sparc/solaris SPARC on Solaris 2,
sparc/sunos SPARC on SunOS 4.
The common installer directory is also subdivided, for convenience, into
a number of different subdirectories:
construct which contains the main routines for transforming
and optimising the internal representation;
diag which contains routines for reading and processing
diagnostic information contained within the TDF;
dwarf which contains routines for writing out diagnostic
information as DWARF directives;
dwarf2 which contains routines for writing out diagnostic
information as DWARF 2 directives;
linkinfo which contains routines for reading linkage
information contained within the TDF;
reader which contains the main routine for reading the
input TDF and building up the internal representation;
templ which contains template files used to generate
the TDF reading routines.
The producers subdirectory is divided into a common directory, containing
code shared by both the C and C++ producers, plus directories c and cpp,
containing the language specific components. The differences between
the languages are driven from the parser, which is found in the syntax
subdirectory of c and cpp. C merely uses a subset of the routines
available for the C++ producer, with a number of run-time or compile-time
flags to control the differences between the languages.
The common producer directory is divided, for convenience into a number
of subdirectories:
construct which contains the main routines for building up
and checking the internal representation;
obj_c which contains macros describing the internal
representation;
obj_templ which contains various template files used in
automatic code generation;
obj_tok which contains TenDRA tokens describing the
internal representation;
output which contains the routines of writing the
internal representation to disk as TDF;
parse which contains routines for lexical analysis
and preprocessing;
utility which contains routines for error reporting,
memory allocation etc.
The tools directory contains the source for a number of different tools:
disp translates TDF into a human readable form;
tcc is the front-end to the TenDRA compiler;
tld links a number of TDF capsules into one;
tnc is an unstructured TDF assember and disassembler;
tpl is a structured TDF assembler;
tspec is a specification tool used in the TenDRA API
descriptions.
The utilities directory contains the source for a number of different
compiler generator tools:
calculus is used to manage the complex type system used
in the producers;
lexi is a simple lexical analyser generator (lex is
not used);
make_err is used to manage the producer error catalogue;
make_tdf is used to generate TDF encoding and decoding
routines from the TDF specification;
shared contains code common to a number of tools;
sid is a parser generator (yacc is not used);
The lib directory is divided into a number of subdirectories:
apis containing the TenDRA API descriptions used in
its API checking facilities;
cpp containing the C++ support library (note that this
is only a minimal language support subset of the
complete C++ standard library);
env containing the compiler front-end configuration
files;
libtdf containing a support library certain aspects of
TDF (such as 64 bits integers);
machines containing machine specific tools, libraries and
configuration files;
startup containing the C and C++ producer configuration
files;
tdf containing a description of the TDF specification
used by make_tdf to generate TDF encoders and
decoders.
ORGANISATION OF INSTALLED RELEASE
---------------------------------
The installation script creates three shell scripts in the public
binaries directory (/usr/local/bin in the default set-up). These are
the compiler, tcc, the stand-alone static checker, tchk, and the
API specification tool, tspec. The manual pages for these tools and
those which they invoke are installed in the manual page directory
(/usr/local/man in the default set-up). The remaining files are
installed into the TenDRA configuration directory (/usr/local/lib/TenDRA
in the default set-up). The remainder of this section describes the
files installed into this directory.
For each target machine, a directory:
machines/<os>/<os_vers>/<cpu>
is created to hold the machine dependent files, where <os> denotes the
operating system name, <os_vers> denotes the operating system version
and <cpu> denotes the CPU type (as above). This machine directory
has five subdirectories:
bin containing the compiled executables for this
machine; advanced users may wish to put this
directory on their PATH, but the executables
in the public binaries directory should suffice
for most users;
env containing the tcc configuration files for this
machine (see above);
include containing the modified system headers for this
machine; these are copied directly from the
src/lib/machines directory in the release;
lib containing the API token libraries describing the
implementation of the various standard APIs on
this machine; the generation of these libraries
from the API descriptions and the system headers
is the most complex part of the installation;
startup containing the compiler configuration files
describing how to navigate through the system
headers on this machine; these are copied directly
from the src/lib/machines directory in the
release.
The remainder of the directories created by the installation are common
to all machines. These are:
building containing files automatically generated by tspec
from the API descriptions which are used to build
the API token libraries; these files are only used
during installation and may be deleted if space is
short;
include containing the include files automatically generated
by tspec from the API descriptions;
startup containing the C and C++ producer configuration
files copied directly from the src/lib/startup
directory in the release.