Project makefile generation.
Generate a Makefile from a project description. The optional build environment is used to set default values of variables. These default values can then be easily overwriten in the generated Makefile.