List of build automation software

Build automation involves scripting or automating the process of compiling computer source code into binary code. Below is a list of notable tools associated with automating build processes.

Make-based

  • GNU make, a widely used make implementation with a large set of extensions
  • make, a classic Unix build tool
  • mk, developed originally for Version 10 Unix and Plan 9, and ported to Unix as part of plan9port
  • MPW Make, developed for the classic Mac OS and similar to but not compatible with Unix make; the modern macOS (OS X) comes with both GNU make and BSD make; available as part of Macintosh Programmer's Workshop as a free, unsupported download from Apple
  • nmake
  • PVCS-make, basically follows the concept of make but with a noticeable set of unique syntax features[1]

Make-incompatible

  • Apache Ant, popular for Java platform development and uses an XML file format
  • Apache Buildr, open-source build system, Rake-based, gives the full power of scripting in Ruby with integral support for most abilities wanted in a build system
  • Apache Maven, a Java platform tool for dependency management and automated software build
  • ASDF LISP build system for building LISP projects
  • A-A-P, a Python-based build tool
  • Bajel, npm build system using simplified make semantics in TOML, YAML, JSON, or JavaScript syntax
  • Bazel, a portion of Blaze (Google's own build tool) written in Java, using Starlark (BUILD file syntax) to build projects in Java, C, C++, Go, Python, Objective-C…
  • Bloop, a Scala/Java build server that only supports compiling, testing, running and debugging code. it focuses on speed and good integration with other build tools.
  • BitBake, a Python-based tool with the special focus of distributions and packages for embedded Linux cross-compilation
  • Boot, a Java build and dependency management tool written in Clojure
  • boost.build For C++ projects, cross-platform, based on Perforce Jam
  • Buck, a build system developed and used by Facebook, written in Java, using Starlark (BUILD file syntax) as Bazel
  • Buildout, a Python-based build system for creating, assembling and deploying applications from multiple parts
  • Cabal, a common architecture for building applications and libraries in the programming language Haskell
  • Conan, a C/C++ package manager
  • Cargo is Rust's package manager and build system.
  • Dune is an automated-build system for OCaml.
  • FinalBuilder, for Windows software developers. FinalBuilder provides a graphical IDE to both create and run build projects in a single application. The final builder also includes the ability the execute the unit test, deploy web projects or install and test applications.
  • Flowtracer
  • Gradle, an open-source build and automation system with an Apache Groovy-based domain specific language (DSL), combining features of Apache Ant and Apache Maven with additional features like a reliable incremental build
  • Grunt, a build tool for front-end web development
  • Gulp, another build tool for front-end
  • IncrediBuild
  • Leiningen, a tool providing commonly performed tasks in Clojure projects, including build automation
  • Mage, a make/rake-like build tool using Go. You write plain-old go functions, and Mage automatically uses them as Makefile-like runnable targets.
  • Mix, the Elixir build tool
  • Mx, the build tool used in GraalVM and the related projects
  • MSBuild, the Microsoft build engine
  • NAnt, a tool similar to Ant for the .NET Framework
  • Ninja, a small build system focused on speed by using build scripts generated by higher-level build systems
  • OMake, enhanced build system designed for scalability and portability (similar to Make).
  • Pants, inspired from Google's Blaze but written in Python, also using Starlark (BUILD file syntax)
  • Perforce Jam, a build tool by Perforce, inspired by Make
  • Please, inspired from Google's Blaze but written in Go, also using Starlark (BUILD file syntax)
  • Psake, domain-specific language and build-automation tool written in PowerShell
  • Qt Build System
  • Rake, a Ruby-based build tool
  • redo, an implementation of an idea by Daniel J. Bernstein which supports safe parallel builds with transactional results
  • sbt, a build tool built on a Scala-based DSL
  • SCons, Python-based, with integrated functionality similar to autoconf/automake
  • Stack, a tool to build Haskell projects, manage their dependencies (compilers and libraries), and for testing and benchmarking.
  • Shake, a reliable, powerful, and fast to run Haskell library for writing build systems.
  • Tup, a file-based build system for Linux, OSX, and Windows
  • Tweaker, allowing task definitions to be written in any languages (or intermixed languages) while providing a consistent interface for them all
  • Visual Build, a graphical user interface software for software builds
  • Waf, a Python-based tool for configuring, compiling and installing applications. It is a replacement for other tools such as Autotools, Scons, CMake or Ant
  • xmake, A cross-platform build utility based on Lua

Build script generation

These generator tools do not build directly, but rather generate files to be used by a native build tool (as the ones listed in the previous two sections).

  • Bakefile
  • BuildAMation, a multi-platform tool, using a declarative syntax in C# scripts, that builds C/C++ code in a terminal using multiple threads, or generates project files for Microsoft Visual Studio, Xcode or MakeFiles.
  • CMake generates files for various build tools, such as make, ninja, Apple's Xcode, and Microsoft Visual Studio.[2] CMake is also directly used by some IDE as Qt Creator[3], KDevelop and GNOME Builder[4].
  • GNU Build System (aka autotools), a collection of tools for portable builds. These in particular include Autoconf and Automake, cross-unix-platform tools that together generate appropriate localized makefiles.
  • GYP (Generate Your Projects) - Created for Chromium; it is another tool that generates files for the native build environment
  • imake
  • Meson, a build system optimized for performance and usability is based on ninja on Linux, Visual Studio on Windows and Xcode on macOS. Meson is also directly used by GNOME Builder.[4]
  • OpenMake Software Meister
  • Premake, a Lua-based tool for making makefiles, Visual Studio files, Xcode projects, and more
  • qmake
  • xmake

Continuous integration

Configuration management

Meta-build

A meta-build tool is capable of building many different projects using a subset of existing build tools. Since these usually provide a list of packages to build, they are also often called package managers.

  • Pkgsrc, package manager of NetBSD and other operating systems.
  • Portage, package manager of the Gentoo Linux distribution
  • Nix, functional package manager for Linux and macOS focusing on reproducible builds, used for the NixOS Linux distribution.
  • Guix, functional package manager based on Nix, used for the GuixSD Linux distribution.
  • Collective Knowledge, cross-platform package manager to rebuild software environment for research workflows
  • Homebrew, package manager for macOS

Others

  • checkinstall, checkinstall is a program that monitors an installation procedure and creates a standard package for your distribution.
  • Open Build Service, a hosted service to help build packages for various Linux distributions

Licensing overview

Tool name Description language License
A-A-P recipe GNU GPL
Ant XML Apache License 2.0
AnthillPro Wraps Make, Ant, Maven, MsBuild, Nant, etc. for controlled build, deploy, test processes. Discontinued
Bamboo continuous integration Trialware
Bazel BUILD/Starlark, a Python-like DSL Apache License 2.0
BuildAMation C# for build scripts, XML for high level dependencies New BSD License
Buildr Ruby Apache License 2.0
Boot Clojure Eclipse Public License
Capistrano XML MIT License
CMake uses CMakeLists.txt file New BSD License
Cake C#, .NET, .NET core. Uses C# written cake file MIT License
Collective Knowledge Framework Python scripts with JSON API and JSON meta-description New BSD License
Continuum ? Apache License 2.0
CruiseControl XML BSD-style license
FinalBuilder graphical IDE with support for Ant/NAnt, MSBuild, JScript, VBScript, IronPython, PowerShell Trialware
Gradle Groovy-based DSL; Kotlin-based DSL Apache License 2.0
Jenkins continuous integration MIT License
Homebrew Ruby Simplified BSD License
Leiningen Clojure Eclipse Public License
make uses Makefile Same as the bundling OS
Maven Project Object Model Apache License 2.0
Meson build system custom DSL Apache License 2.0
MPW Make ? Freeware
MSBuild XML MIT License
MXE uses Makefile MIT License
NAnt XML GNU GPL
nmake uses Makefile Freeware
Open Build Service uses various package and image description formats (spec, dsc, ARCH, kiwi) GNU GPL
Perforce Jam uses Jamfile Discontinued
Rake Ruby MIT License
sbt (Simple Build Tool) Scala-based DSL New BSD License
SCons Python MIT License
Team Foundation Server MSBuild, Windows Presentation Foundation, JSON - REST interfaces, Programmatic (Can generate definitions through code) Trialware
Tweaker (build tool) Any (Ant, bash, batch, C, Erlang, Java, SQL, and VBScript by default, with 3rd party interface for extensions) GNU GPLv3
Visual Build XML Trialware
Waf Python New BSD License

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.