Installing GNU Classpath - Last updated: September 7, 2005

First, this is a development release only! Unless you are interested in
active development and debugging, or just like running random alpha code,
this release is probably not for you. Please see the README file for a
list of VMs that work with GNU Classpath.

Note that if you are building from a non-released (CVS) version of GNU
classpath, installation instructions are found in the doc/hacking.texi
file. Or at http://www.gnu.org/software/classpath/docs/hacking.html

------------------------------------------------------------------
Suggested Software
------------------------------------------------------------------
	GNU make ("gmake") is required for building Classpath.

	For any build environment involving native libraries, these 
	new versions of autoconf, automake, and libtool are required
        if changes are made that require rebuilding configure, Makefile.in,
        aclocal.m4, or config.h.in.

        - GNU autoconf 2.59+
        - GNU automake 1.9+
        - GNU libtool 1.5+

	When working from CVS you can run the above tools by executing
	./autogen.sh in the source directory.

	For building the Java bytecode (.class files), one of these
	compilers are required.  You can select which compiler using
	--with-jikes, --with-gcj, --with-ecj or --with-kjc as argument to
	configure; the present default is gcj.

        - GCJ 4.0+ (part of the GNU GCC package).
        - IBM jikes 1.19+.  
        - Eclipse Compiler for Java 3.1+
        - The kjc compiler is supported with configure but we have
          been unable to successfully compile with it.

	IMPORTANT: Versions of GCJ which are earlier than 4.0 contain
	bugs which make it impossible to compile the class library and
	are *not* supported any more. If you are stuck on a system where
	GCC 3.x is the system compiler we recommend using Jikes.

	For building the gtk+ AWT peer JNI native libraries, the following
	are required unless --disable-gtk-peer is used as an argument to
	configure.

        - GTK+ 2.8.x (or higher)
        - gdk-pixbuf

	- XTest Extension (libXtst) for GdkRobot support in java.awt.

	For building gcjwebplugin you'll need the Mozilla plugin
	support headers and libraries.

	For building the Qt AWT peer JNI native libraries you have to
	specify --enable-qt-peer and need the following library:

        - Qt 4.0.1

	For building the X AWT peers see information below
	(Building and running with the X AWT peers). You will need
	the Escher 0.2.3 library:
	http://escher.sourceforge.net

	Please note that at the moment most operating systems do not
    ship Qt4 by default. We recommend using GNU Classpath' Qt4
    support only for its developers and bug reporters. See
    http://developer.classpath.org/mediation/ClasspathShowcase
    for details on how to get it to work.

	For building the xmlj JAXP implementation (disabled by default, use
	configure --enable-xmlj) you need the following installed:
	- The XML C library for Gnome (libxml2)
	  http://www.xmlsoft.org/
	  Minimum version of libxml2 required: 2.6.8

	- The XSLT C library for Gnome (libxslt)
	  http://www.xmlsoft.org/XSLT/
	  Minimum version of libxslt required: 1.1.11

	For building the documentation you will need

	- texinfo 4.2 or higher.

	For building the ALSA midi provider code you will need
	ALSA.  http://www.alsa-project.org. 

	For building the DSSI midi synthesizer provider code you will
	need DSSI from http://dssi.sourceforge.net.  This, in turn, 
	introduces many dependencies, including:

	  - liblo: the Lightweight OSC implementation
	    http://plugin.org.uk/liblo/

	  - LADSPA: Linux Audio Developer's Simple Plugin API
	    http://www.ladspa.org

	  - the JACK Audio Connection Kit: A low latency audio server
	    http://jackit.sourceforge.net

	  - libsndfile: an audio file I/O library
	    http://www.mega-nerd.com/libsndfile/

	  - fluidsynth: a real-time SoundFont 2 based soft-synth
	    http://www.fluidsynth.org/


This package was designed to use the GNU standard for configuration
and makefiles.  To build and install do the following:

1).  Run the "configure" script to configure the package.  There are
various options you might want to pass to configure to control how the
package is built.  Consider the following options, "configure --help"
gives a complete list.  

  --enable-java           compile Java source default=yes
  --enable-jni            compile JNI source default=yes
  --enable-gtk-peer       compile GTK native peers default=yes
  --enable-qt-peer        compile Qt4 native peers default=no
  --enable-default-toolkit
                          fully qualified class name of default AWT toolkit
                          default=no
  --enable-xmlj           compile native libxml/xslt library default=no
  --enable-load-library   enable to use JNI native methods default=yes
  --enable-local-sockets  enable build of local Unix sockets
  --with-jikes            to compile the class library using jikes
                          the default is to use gcj
  --with-glibj            define what to install (zip|flat|both|none)
                          default=zip
  --with-escher=/path/to/escher
                          enable build of the X/Escher peers, with
                          the escher library at /path/to/escher, either
                          in the form of a JAR file, or a directory
                          containing the .class files of Escher.
  --enable-Werror         whether to compile C code with -Werror which turns
                          any compiler warning into a compilation failure
                          default=no
  --with-gjdoc            generate documentation using gjdoc default=no
  --with-jay              Regenerate the parsers with jay must be given the
                          path to the jay executable
  --with-glibj-zip=ABS.PATH
                          use prebuilt glibj.zip class library

For more flags run configure --help.

2).  Type "gmake" to build the package.  There is no longer a
dependency problem and we aim to keep it that way.

3).  Type "gmake install" to install everything.  This may require
being the superuser. The default install path is /usr/local/classpath
you may change it by giving configure the --prefix=<path> option.

Report bugs to classpath@gnu.org or much better via Savannah at this
URL: http://savannah.gnu.org/support/?func=addsupport&group=classpath

Happy Hacking!

Once installed, GNU Classpath is ready to be used by any VM that supports
using the official version of GNU Classpath.  Simply ensure that
/usr/local/classpath/share/classpath is in your $CLASSPATH environment
variable.  You'll also have to set your LD_LIBRARY_PATH
variable (or similar system configuration) to include the Classpath
native libraries in /usr/local/classpath/lib/classpath.  

*NOTE* All example paths assume the default prefix is used with configure.
If you don't know what this means then the examples are correct.

LD_LIBRARY_PATH=/usr/local/classpath/lib/classpath
CLASSPATH=/usr/local/classpath/share/classpath/glibj.zip:.
export LD_LIBRARY_PATH CLASSPATH

More information about the VMs that use GNU Classpath can be found in the
README file.

------------------------------------------------------------------
Building and running with the X AWT peers
------------------------------------------------------------------

In order build the X peers you need the Escher library version 0.2.3
from http://escher.sourceforge.net . Unpack (and optionally build) the
Escher library following the instructions in the downloaded
package. Enable the build of the X peers by passing
--with-escher=/path/to/escher to ./configure where /path/to/escher
either points to a directory structure or JAR file containing the
Escher classes. For Unix systems it is preferable to also build local
socket support by passing --enable-local-sockets, which accelerates
the network communication to the X server significantly.

In this release you have to enable the X peers at runtime by
setting the system property awt.toolkit=gnu.java.awt.peer.x.XToolkit
by passing -Dawt.toolkit=gnu.java.awt.peer.x.XToolkit to the java
command when running an application.

------------------------------------------------------------------
Misc. Notes
------------------------------------------------------------------
Compilation is accomplished using a compiler's @file syntax.  For our
part, we avoid placing make style dependencies as rules upon the
compilation of a particular class file and leave this up to the Java
compiler instead.

The --enable-maintainer-mode option to configure currently does very 
little and shouldn't be used by ordinary developers or users anyway.

On Windows machines, the native libraries do not currently build, but
the Java bytecode library will.  Gcj trunk is beginning to work under
Cygwin.  The mingw32 version of jikes cannot follow symbolic links, you 
must use a cygwin build of jikes to access this limited functionality.
