Dependencies
------------

To build the compiler core and the Java and XML bindings and Java-based examples:

 * Java JDK 1.5_011 or later
 * Apache Ant 1.7+
 * JavaCC 4.0
 * Junit 4.3.1
 * Velocity 1.5

To compile the C# bindings and examples:

 * Apache Ant DotNet 1.0
 * Mono 1.9
   - or -
 * .NET Framework 2.0 (Visual Studio 2005)
 * NUnit 2.4.7
 
To compile NSIS installers:

 * NSIS 2.23

Setup development environment
-----------------------------

1. Install JDK. Make certain that you set your JAVA_HOME environment variable to point to the correct location.

--OPTIONAL for HTTP-Json Transport in C# --

2. Download the JsonFx.Json.dll (http://jsonfx.net/BuildTools/) and place on your dev machine hard drive.  
   Be sure to update the build.dependencies file to reflect the path of where you downloaded it to.

--OPTIONAL for Javascript Runtime --

3. Download jQuery 1.2.5 (http://docs.jquery.com/Downloading_jQuery) and place on your dev machine hard drive.
   Be sure to update the build.dependencies file to reflect the path of where you downloaded it to.

   
Ant-based development
---------------------

1. Install Apache ANT (version 1.7 or later). 

2. Put /path/to/apache-ant-1.7/bin in your PATH.

3. If you have Mono, make certain MONO_HOME is set correctly. If you have .NET framework, make certain msbuild.exe is in your PATH.

4. If building C#, make certain NUNIT_HOME is set correctly.

5. If building on Win32 and you want to build the NSIS installers, set NSIS_HOME to /path/to/nsis/2.23.

6. Update 'build.dependencies' with the correct paths to the jar's this project depends upon:

  * javacc.home=/path/to/javacc-4.0      
        ('${javacc.home}/bin/lib/javacc.jar' should exist)
        
  * junit.lib=/path/to/junit-4.3.1
        ('${junit.lib}/junit-4.3.1.jar' should exist)
        
  * velocity.lib=/path/to/velocity-1.5            
        ('${velocity.lib}/velocity-dep-1.5.jar' should exist)

  --OPTIONAL--        
  * ant-dotnet.lib=/path/to/apache-ant-dotnet-1.0 
        ('${ant-dotnet.lib}/ant-dotnet-1.0.jar' should exist)

  --OPTIONAL for Javascript languange binding--
  * jsonfx-json.lib=/path/to/JsonFx.Json-1.0.0802.2707
	('${jsonfx-json.lib}/JsonFx.Json.dll' should exist)

  --OPTIONAL for Javascript languange binding--
  * jQuery.lib=/path/to/jquery-1.2.5
        ('${jQuery.lib}/jquery.js' should exist)


Build
-----

At the shell prompt type:

 > ant release

This will build all compilers and all the bindings for which you have setup dependencies. It will also build and run all unit/functional tests and build all the examples in examples/.

Once complete, the dist tree can be found in 'target/Installers/dist'. Copy this directory manually to the desired install location.

Using Eclipse
-------------

See ECLIPSE_USERS_README.txt
