README file for guavac, version 1.0

Guavac is a compiler for the Java language, written by Effective Edge
Technologies and distributed under the Gnu Public License.  You should feel
free to use, copy and modify it, based on the terms in the COPYING file
included in this distribution.
We are distributing guavac free of charge in the hopes that other people will
find it useful and possibly enhance its utility in turn.

Guavac should produce correct bytecode for valid Java input, but you may
encounter some difficulties in compiling guavac itself, due inadequate
tools on some platforms.

Guavac is written in C++, so it requires a decent C++ compiler and a class
library that implements the C++ libraries defined in the current C++
standard.  To be more specific, guavac uses a few STL collection classes
(like map and deque) as well as the standard string class which is used
for Java's 16-bit (Unicode) strings.  This has only been tested using gcc
(version 2.7.2) and libg++ (version 2.7.1), which seem to work out
of the box on Linux, OSF, Irix and Solaris.
     *********>>>>> Older versions of gcc will NOT work. <<<<<*********

The C++ code used should be reasonably portable to an alternate C++ compiler
that also supports the standard templates.  The only blatantly non-portable
code that may require changing is in dynamic_cast.h.  Read the comments there
for more information.


============================= Installing guavac: =============================

To install guavac, you can follow the standard Gnu compilation steps:

   cd guavac-1.0
   ./configure
   make

At this point, the binaries will be compiled in the source directory, and you
can use them directly from there.  As an alternative, you can install the
binaries into a central location using:

   make install

This will, by default, copy guavac and its associated files into directories
off of /usr/local.  To install somewhere else, use the --prefix option with
configure.  For example:

   ./configure --prefix=/usr/gnu

If you can't make compilation work, you could contact the guavac mailing
list for assistance.  (see the RELEASE file for more information.)

By default, this compiles with debugging on and optimization off.  If you want
to try it the other way around, modify the CFLAGS in the top-level Makefile
before you compile.  The current version of gcc has a bug that makes this
fail in different ways on some platforms, so we can't currently promise that
any set of flags other than '-g' will work.


================================ Running guavac: ==============================

Guavac looks for standard Java libraries in one of three places.  If you
have installed the binaries using 'make install', then guavac will look for
java interfaces in your current directory and in its own data directory.

If you specify the CLASSPATH environment variable, it will search the
colon-separated entries for the pre-compiled classes that it uses.  Each
entry can be either a directory or a zip file of classes.
If you have netscape or Sun's JDK on your machine, you can compile against
their class archives like this (under csh):
   setenv CLASSPATH .:/usr/local/netscape/java/classes/moz3_0.zip

Once you have installed guavac, or have the CLASSPATH set, you can just invoke
guavac with a Java file name:
   guavac foo.java

Alternately, you can use the -classpath compiler flag:
   guavac -classpath .:/usr/local/netscape/java/classes/moz3_0.zip foo.java


================================= Running guavad: ============================

I've included a simple disassembler that is similar to Sun's 'javap -c', only
offering an even lower-level view of the compiled class.  You can try this out
by giving it a compiled .class file as an argument:
   guavad Foo.class

The output of the disassembler probably won't make any sense unless you have
Sun's VM spec right next to you.  (Available somewhere at http://java.sun.com)


Feel free to contact us with feedback of any sort.
  Effective Edge
  info@eecs.com

$Id: README,v 1.19 1997/11/10 00:46:52 geppetto Exp $
