BENV is a build environment designed to simplify the build process and promote software reuse through a shared source code repository.

Download BENV

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:

Repository Structure

The repository structure is illustrated below. The BENV document Repository Evolution describes the why of the BENV repository structure.

Repository Layers

The layers presented in the illustration above are described here:

Build System

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: