BENV is a build environment designed to simplify the build process and promote software reuse through a shared source code repository.
A build environment is a set of tools and a source code organizational scheme that used to convert the source code into executables. More generally, a build environment is used to produce derived objects (e.g. executables and libraries) from source code.
Traditionally, a build environment consists of:
Since a build environment is not the primary focus of a software
development effort, its structure is typically ad-hoc with little
thought given to its structure beyond what is required for the
project at hand. Unfortunately, a build environment is
an important piece of software development puzzle, which if
poorly designed becomes a burden that affects the quality of
the software product that it supports.
One effect that a poorly designed the build environment can have on the target software is when developers become reluctant to create a new source file because it is too difficult to integrate the source file with the build environment. Adding a new source file may mean editing a Makefile to add the new target and forever after maintaining that entry. As a result, the developer might choose to simply put the new code in an existing source file, resulting in a software organization that is inflexible (not modular) from the outset.
BENV is composed of two parts:
The repository structure is illustrated below. The BENV document Repository Evolution describes the why of the BENV repository structure.
The layers presented in the illustration above are described here:
The BENV build system is composed of a collection of scripts and makefile fragments that operate within the BENV repository structure to produce executable software.
The BENV Manual describes the design and usage of the build system.
Traditionally, a build environment consists of: