A large software system can be difficult to build. The steps can be numerous and complex. Of course, there are a variety of tools to assist us (e.g., Make), but their languages emphasize the specification of low-level details (e.g., compiler names and options), rather than high-level attributes (e.g., host/target platforms and required subsystems).
This paper describes a new domain-specific language for specifying the composition and construction of a software system, where the emphasis is on high-level attributes. A specification is processed by a pipeline of fairly simple tools to produce a set of makefiles, which are then processed by Make in the usual way.