Parallel and Incremental Builds - Integrated Dependency Discovery
fab is a software build utility for Linux/Unix systems featuring integrated dependency discovery.
fab is a free and open source project released under the GNU GPLv3 license.
The goal of fab is to provide reliable builds, optimally organized for parallel and incremental execution, with a minimal set of dependencies provided by the programmer. It is implemented in C and designed for performance.
To download fab, see the Get fab page.
Also see the FAQ
- parallel builds
- (build targets concurrently up to a specified limit)
- incremental builds
- (reuse existing build targets whose sources have not changed)
- dependency discovery
- (extract inter-module dependencies from the source code)
- modular project organization (through invocations)
- (build entire project from the root, partial build from subdirectories)
- variable maps / inheritance
- ability to generate relative paths or absolute paths
- sophisticated list processing facility
- (accumulated list of gcc switches -> sort/unique, add to compile command)
- (list subdirectories, prepend "-I" to each, add to compile command)
- (recursively list dependencies of this target, select ".o"'s, add to compile command)
- nofile nodes (tasks, target grouping)
- avoid namespace pollution (file named clean, task named @clean)
- baked builds (generated build scripts)
- node selectors
- (ex: rebuild targets matching this regex)
- (ex: invalidate primary nodes containing this string)
- builtin modules for compiling and dependency discovery for c, l, and y files
- sophisticated cycle handling
- weak dependencies
- bridge dependencies
- flexible logging - enable/disable logging by category with cmdline filters