Building the "langtools" workspace.

The "langtools" workspace can be built from the command line with Ant.
The build file is make/build.xml, in conjunction with make/build.properties.
Some additional user-specific properties files are also read, to allow
you to customize selected properties as needed.

Individual tools within the workspace can also be built and worked on
with NetBeans, using the projects in the make/netbeans directory.

The "langtools" workspace can also be built from the command line with
GNU Make, although the Makefile is simply a wrapper around the Ant
build file. This is provided for systems (such as the full OpenJDK build)
that expect to be able to build this workspace with GNU Make.

System Requirements:
  Ant:      version 1.6.5 or later
  NetBeans: version 6.0 or later (optional)
  JDK:      currently version 1.5.0, although 1.6.0 is recommended
  OS:       any system supporting the above tools

For more information:
  Ant:      http://ant.apache.org/
  GNU Make: http://www.gnu.org/software/make/
  NetBeans: http://www.netbeans.org/


Testing the "langtools" workspace.

The primary set of tests for the compiler is the compiler TCK. This
tests that the compiler performs according to the specifications in
JLS and JVMS.

In addition, there is a substantial collection of regression and unit
tests for all the tools in the maain langtools test/ directory.

Finally, there is a small set of tests to do basic validation of a build
of the langtools workspace for use by JDK. These tests check the contents
of the dist/ directory generated by the build, and verify that the various
tools can do basic "Hello World"-style processing. These tests should be
run by jtreg, with the -jdk option set a version of JDK capable of running
the default output of the javac compiler in this workspace. Currently, 
this means JDK 6 or better.
