BOOTSTRAP FOLDER README
---------------------------------------------------------------------

The utilities provided here are used by the developers of Ant to 
bootstrap builds of Ant and will be used by the nightly build process
to build Ant from a zero state.

That said, there is no reason for most folks -- even hard core Ant
developers -- to use the files here on a regular basis. You should
really have the latest stable version of Ant installed somewhere so
that you can easily build Ant using itself. Check out the 
installation guidelines in the documentation for suggestions on how
Ant can be installed as a full time program of your system. 

HOW TO USE

So, you really want to use the bootstrap facilities instead of just
downloading a build from somewhere? Ok. Here's how it works:

  * Make sure that sun.tools.javac.Main is on your classpath. 
    Sometimes it is, sometimes it isn't -- it depends on the JDK
    installed on your machine. You can do a quick check using
    the 'javap sun.tools.javac.Main' command to see if it is.

  * Make sure that you have xml-crimson checked out next to
    the jakarta-ant workspace so that the Bootstrap can find
    this necessary code.

  * Compile Bootstrap.java. You should end up with Bootstrap.class
    and maybe a few other classes (depending).
    
  * Execute the Bootstrap class.
  
How this will work in practice is:

  % javac Bootstrap.java
  % java Bootstrap

The Bootstrap class will grind out a preliminary build in the directory
'temp/' which will be placed in this directory, then use that build to
build a real copy of Ant into '../Build' using Ant's own makefile. After
doing this, the Boostrap class will remove the intermediate build in
the 'temp/' directory.

HISTORICAL NOTE

The Bootstrap class is somewhat the same rough hack as the first sketch
of Ant itself -- a proof of concept that a Java based build system
could work out halfway decently. Of course, Ant has expanded much past
the capabilities of this, but this little start serves as a useful
tool to bootstrap builds.