This is the base directory of the AsmL source tree. 

- Makefile                 : make file to build and test (instructions below)
- Runtime\                 : contains the runtime library
- Tools\                   : contains the compiler and other AsmL tools
- Tools\Framework\         : contains the abstract syntax, compiler service abstractions,
                             etc.
- Tools\Compiler\          : contains the AsmL compiler (parser, checker, coder)
- Tools\Env\               : contains the project system (building, runtime management)
- Tools\BatchCompilerDriver: contains a little driver for a compiler/interpreter
                             based on the project system

The Makefile and also the Makefiles in the subdirectories use the
following environment variables:

- ASMLDEVDIR               : the base of the AsmL development tree. Should be usually
                             one up in the hiearchy from the directory where this README
                             is contained. This is mandantory to be set as an 
                             environment variable.

The following variables configure the building mode and will be passed down 
to recursive builds in subdirectorues:

- Config                    : the configuration to build, like Debug, etc. Can be set
                              from the command line to nmake. If not set, will be Debug.
- TargetDir                 : the target directory for all intermediate output. If
                              not set, it will point to $(ASMLDEVDIR)\bin\$(Config)
- ASMLC                     : the AsmL compiler to compile the system. If not set,
                              will be the asmlc.boot.exe in the current directory.
- CSC                       : the C# compiler to use. defaults to csc.


The following targets are supported by the top-level Makefile:

- all (or nothing)          : recurse through directory hierarchy and build everything
- doc                       : recurse through directory hierarchy and build documentation.
- install                   : recurse through directory hierarchy and install everything
- clean                     : recurse through directory hierarchy and clean everything
- rebuild                   : clean and then build everything
- bootcompiler              : build a new compiler which can compile itself, and
                              place it in the current directory under asmlc.boot.exe.
                              The compiler which can build itself is a different one
                              than the one which is placed in the $(TargetDir) and
                              eventually in a distribution -- it does not base on
                              any DLLs and thus can compile AsmL DLLs safely without
                              corrupting it's own function. A bootcompiler should only
                              be built if selftests are passed successfully.
- selftest                  : runs a 2-step selftest procedure
- cleanselftest             : cleans selftest intermediate files, such that the
                              next selftest will start over from the beginning

The following targets are supported by the sub-level Makefiles:

- all (or nothing)          : build everything in this node
- doc                       : build documentation for this node
- install                   : install assemblies of this node 
- clean                     : clean everything in this node
- rebuild                   : clean and then build everything


Requirements
============

In the path environment variable, the C# 2.0 compiler csc.exe must be available.
You must set the ASMLDEVDIR environment variable (see above).
To achieve this, a practical solution is to start the "Visual Studio 2005 Command Prompt"
that can be found in the start menu under "Visual Studio 2005", "Visual Studio Tools".

Under Windows Vista, you must perform all build/installation actions

   *** FROM AN ELEVATED CONSOLE WINDOW ***

(I.e. open the console window by right-clicking it in the start menu, and select "Run as Administrator".)


Typical usages
==============

To build the compiler and install the runtime: nmake build && nmake install
To build a new bootcompiler:                   nmake bootcompiler
