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 main 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.
