anchor.diff:  hello, world
   -------------------------------------------------------------------------------
   
  +== The +tundra.lua+ file ==
  +
  +The file +tundra.lua+ is read by Tundra when you invoke it. This is a regular
  +Lua source file. Its purpose is to call the global +Build+ function with a
  +declarative input describing the build session to Tundra. The following
  +sections are a reference of what you can place in the +Build+ block.
  +Declarations within the block can appear in any order.
  +
  +=== Units (required) ===
  +
  +The build block must contain a reference to a secondary file containing unit
  +declarations. This file is separate because it uses a custom, extensible syntax
  +set which is suitable to define build system input. The +Units+ option must be
  +a string designating the filename to read. A common name is +"units.lua"+, but
  +any valid filename is OK.
  +
  +=== Configs (required) ===
  +
  +The +Configs+ key should be set to an array of configurations this build
  +supports. Each configuration is in turn a table with the following syntax:
  +
  +-------------------------------------------------------------------------------
  +    {
  +        Name = "myplatform-mytoolset",
  +        Tools = { ... },
  +        DefaultOnHost = "..." ,
  +        Inherit = ...,
  +        Env = { ... },
  +    }
  +-------------------------------------------------------------------------------
  +
  +==== Per-config +Name+ property (required) ====
  +
  +The name of this configuration. Configuration names must be formatted in a
  +dashed `platform-toolset` format. These two tokens form the first two in the
  +quad `platform-toolset-variant-subvariant` system Tundra uses to id builds.
  +
  +==== Per-config +Tools+ property (required) ====
  +
  +A list of tools this configuration uses. A tool specification is either a
  +string, indicating that the defaults for that tool are to be used, or a table
  +`{ "toolname"; Foo=1, Bar=".." }` passing arbitrary options to the tool to
  +configure it. Tools are loaded from the tool directory list.
  +
  +Projects can add their own tool scripts via a +ToolsetDirs+ array property in
  +the +Build+ block.
  +
  +==== Per-config +DefaultOnHost+ property (optional) ====
  +
  +If present, this config will be built by default when the host platform matches
  +the string. This is convenient to have the host's native configuration build
  +in the default variant when you just type `tundra` in the shell.
  +
  +==== Per-config +Inherit+ property (optional) ====
  +
  +If present, must be set to a table. This table will be scanned for values if
  +they are not present in the Config table itself. This is useful to group common
  +settings between configs in external tables:
  +
  +-----------------------------------------------------------------------------
  +local foo_common = { Env = { CPPDEFS = { "Bar", "Baz" } } }
  +
  +Build {
  +  Configs = {
  +    { Name = "foo-bar", Inherit = foo_common, ... },
  +    { Name = "foo-baz", Inherit = foo_common, ... },
  +    ...
  +  },
  +}
  +-----------------------------------------------------------------------------
  +
  +==== Per-config +Env+ property (optional) ====
  +
  +If present, must be set to a table. This table contains key-value bindings to
  +apply to the environment for this configuration. This typically includes things
  +such as include paths (`CPPPATH`), C preprocessor defines (`CPPDEFS`) and C
  +compiler options (`CCOPTS`).
  +
  +-----------------------------------------------------------------------------
  +Build {
  +  Configs = {
  +    { Name = "foo-bar", Env = { CPPDEFS = { "FOO", "BAR=BAZ", ... } }, },
  +    ...
  +  },
  +}
  +-----------------------------------------------------------------------------
  +
  +=== Passes (optional) ===
  +
  +The build block can contain an array of passes which can be used to place
  +barriers between groups of build jobs. This is required if files are generated
  +that can be discovered only as implicit dependencies.
  +
  +Here's an example of how +Passes+ can be used within the +Build+ block:
  +-------------------------------------------------------------------------------
  +    Passes = {
  +        Foo = { Name="User friendly name", BuildOrder = 1 },
  +        Bar = { Name="Some other name", BuildOrder = 2 },
  +        -- ...
  +    },
  +-------------------------------------------------------------------------------
  +
   == The Environment ==
   
   Tundra uses a hierarchical key-value environment to store information used to
  
positive.code: 
  -------------------------------------------------------------------------------
  Program {
  	Name = "HelloWorld",
  	Sources = { "hello.c" },
  }
  Default "HelloWorld"
  -------------------------------------------------------------------------------
  
negative.code: // vim: ts=4 expandtab
  
  Tundra, a build system
  ======================
  