This is the README for Tesla.
$Id: README,v 1.12 2000/09/17 18:44:50 tiggr Exp $
This is the README for Tesla, the TOM compiler.
Get the latest info from http://gerbil.org/tom/tesla.
The current release of Tesla is a beta release, though it can be
very useful. Currently, Tesla compiles TOM files in a way very
similar to what tomc does. However, Tesla is designed to be a
whole-program compiler, into which it will evolve, in due time.
The monolithic approach is already visible in Tesla's operation:
one run of Tesla suffices to compile all the source files of a
unit.
The file `version' lists the current version of Tesla; the file
`NEWS' lists changes in the current version with respect to the
previous version. (The version number is not mentioned anywhere
else, to make a release as easy as editing the version and NEWS
files.) If the current version is more than a week old, you might
want to use a stable snapshot or check for a new version. Visit
http://gerbil.org/tom/tesla/ for this.
USAGE
To use Tesla as a replacement for tomc, e.g., to compile the TOM
files of a unit named `hello' (in the current directory), do
tesla -1 -u hello \
-I ${tom_prefix}/lib/tom \
-I ${prefix}/lib/tom
adding other -I directives as needed. (Tesla currently does not
have a builtin search-path other than `.', hence the -I options.)
Note that one run of Tesla is enough to compile all .t files to .c
files, as far as it is needed (e.g., because the .c file is out of
date or because it does not yet exist).
STABILITY
Supported machines are listed in the file MACHINES. The
configuration is defined in the directory tesla-config. Adjust
configure.in when adding a new configuration. It should take less
than half an hour for most 32-bit machines, and less than an hour on
the first 64-bit machine.
DEPENDENCIES
Tesla is zjust zis compiler, you know. For useful operation, you
definitely need the `tom' package which provides, a.o., the TOM
run-time library. Tesla itself (the program) also depends on GP
(which Generates Parsers) and MU (the TOM Meta Unit) for its
parsing of TOM code. You can get these from
http://gerbil.org/tom/resources/packages.shtml.
EXAMPLES
See them in the examples subdirectory.
INSTALLATION
Read http://gerbil.org/tom/tesla for installation instructions.
OVERVIEW
core
The following are relevant source directories:
tesla
the compiler.
tug
the unit generator.
tig
the interface generator.
test
compiler tests that can be compiled with -a.
test2
compiler tests that can not be compiled with -a.
tset
negative compiler tests that can be compiled with -a.
(A negative test is one that must fail.)
bootstrap
A `make bootstrap' will run:
make boottesla (make tesla/tesla after a clean)
make bootself (make self/alset including a clean)
make bootself2 (make self2/alset including a clean)
make bootself3 (make self2/alset including a clean)
make diff23 (show differences between .[ch] files
in the self2 and self3 directories)
self
directory in which to build tesla with tesla/tesla.
self2
directory in which to build tesla with self/alset.
self3
directory in which to build tesla with self2/alset.
The `self*' directories are used to bootstrap tesla. The name of the
executable built is `alset'. Tesla can build itself using tesla-built
library units (see below); the target and executable in this case is
`alself'.
units
The makefiles for library units depend on the tom, mu, and gp packages
to be available as ../tom, &c, when seen from the file you're reading
now (i.e., this file resides in the directory tesla in a directory
containing tesla, mu, tom, and gp). These packages should at least be
configured and compiled (to have the .u unit file available); they are
used in situ.
unit/*
directories in which to build existing library units.
BUGS
Mail your bug reports to tiggr@gerbil.org.
MAILING LIST
Join the TOM discussion by sending a mail containing
the word `subscribe' to tom-request@gerbil.org.
COPYRIGHT
Tesla is Copyright (C) 1998-2000 Pieter J. Schoenmakers
Tesla was written by Pieter J. Schoenmakers <tiggr@gerbil.org>
Tesla is distributed under the GNU General Public License.
See the file COPYING for more information.
