Difference between revisions of "AMBuild"

From AlliedModders Wiki
Jump to: navigation, search
m
m
Line 1: Line 1:
 
=Introduction=
 
=Introduction=
  
AMBuild is a tool for software projects to their build source code and create packages for release. It is targeted at C++ projects, though it can be used for anything. It has been tailored to solve three major problems that most build tools do not address:
+
AMBuild is a tool for building software projects and creating packages for release. It is targeted at C++ projects, though it can be used for anything. It has been tailored to solve three major problems that most build tools do not address:
 
*'''Accuracy'''. AMBuild guarantees that you never need to "clean" a build. Clean rebuilds are unnecessary and a waste of developer time. Builds are always computed accurately, and any failure to do so is considered a bug in AMBuild.
 
*'''Accuracy'''. AMBuild guarantees that you never need to "clean" a build. Clean rebuilds are unnecessary and a waste of developer time. Builds are always computed accurately, and any failure to do so is considered a bug in AMBuild.
 
*'''Speed'''. Most build systems discover changes by recursively searching downward through all build steps and their dependencies. This is very slow. AMBuild instead computes the set of ''files'' that have changed, and propagates those changes ''upward'', to each build step that cares. An empty-build takes no time, whereas a large project with other build systems can have 30-second empty builds.
 
*'''Speed'''. Most build systems discover changes by recursively searching downward through all build steps and their dependencies. This is very slow. AMBuild instead computes the set of ''files'' that have changed, and propagates those changes ''upward'', to each build step that cares. An empty-build takes no time, whereas a large project with other build systems can have 30-second empty builds.

Revision as of 16:44, 14 October 2013

Introduction

AMBuild is a tool for building software projects and creating packages for release. It is targeted at C++ projects, though it can be used for anything. It has been tailored to solve three major problems that most build tools do not address:

  • Accuracy. AMBuild guarantees that you never need to "clean" a build. Clean rebuilds are unnecessary and a waste of developer time. Builds are always computed accurately, and any failure to do so is considered a bug in AMBuild.
  • Speed. Most build systems discover changes by recursively searching downward through all build steps and their dependencies. This is very slow. AMBuild instead computes the set of files that have changed, and propagates those changes upward, to each build step that cares. An empty-build takes no time, whereas a large project with other build systems can have 30-second empty builds.
  • Flexibility. Distributing C++ software is hard. AMBuild provides full tuning of the C++ compiler and offers abstraction and introspection of system properties, to avoid boilerplate often seen with Make or Autoconf. Build scripts are written in Python, offering a great deal of programmatic control.

Keep in mind, AMBuild is neither widely used nor has it been used on a wide variety of systems. AlliedModders has used it successfully for small to medium-sized C++ projects on Linux, Mac, and Windows. We're happy to receive feedback (see the bottom of this page).

Overview