Build systems
Vite, Nx, Turborepo & unplugin are nice.
Links
- Please - High-performance extensible build system for reproducible builds. (Web)
- sbt - Build tool for Scala, Java, and more. (Tutorial)
- Tundra - Code build system that tries to be accurate and fast for incremental builds.
- gg - The Stanford Builder.
- mmake - Small program which wraps make to provide additional functionality, such as user-friendly help output, remote includes, and eventually more. It otherwise acts as a pass-through to standard make.
- Build Systems a la Carte - Provides an executable framework for developing and comparing build systems, viewing them as related points in landscape rather than as isolated phenomena. (Paper)
- checkmake - Experimental linter/analyzer for Makefiles.
- CMake - Build, test and package software. (Code)
- Effective Modern CMake
- CMake Scripts - Selection of useful scripts for use in CMake projects.
- BLT - Streamlined CMake-based foundation for Building, Linking and Testing large-scale high performance computing (HPC) applications.
- zld - Faster version of Apple's linker.
- Automation and Make
- Meson - Project to create the best possible next-generation build system. (Article) (HN) (Docs) (Web)
- mbt - Most flexible build orchestration tool for monorepo.
- Earthly - Run all your builds containerized. (Web) (HN)
- Synchronicity - Distributed build system providing cryptographic proofs-of-reproducibility via Byzantine Fault Tolerant (BFT) consensus.
- Ninja - Small build system with a focus on speed. (ninja: a simple way to do builds) (Lobsters) (HN)
- The Success and Failure of Ninja (2020) (HN)
- Samurai - Ninja-compatible build tool written in C99 with a focus on simplicity, speed, and portability. (HN)
- Apple’s Linker & Deterministic Builds (2020)
- redo - Smaller, easier, more powerful, and more reliable than make. An implementation of djb's redo. (Docs) (HN)
- my love letter to redo (2020) (Lobsters)
- Awesome CMake
- Build - Tool that generates a compilation database for clang tooling.
- How to list all the targets on a Makefile (2020) (HN)
- You don’t need reproducible builds (2020) (Lobsters) (HN)
- Strategies for Binary Relocation In Functional Build Systems (2020) (Lobsters)
- Reproducible Telegram Builds for iOS and Android
- Faster Builds with Code Signing Hacks (2020)
- Allowing CMake functions to return(value) (2020)
- The quest to the perfect Makefile (2018)
- Build systems with Andrey Mokhov (2020)
- Amazon's Build System (HN)
- Pondering Amazon's Manyrepo Build System (2020) (Lobsters)
- Xmake - Cross-platform build utility based on Lua. (Docs) (GitHub) (Xmake and Cplusplus Package Management) (HN)
- Merkle trees and build systems
- Introduction to Makefiles (2020) (HN)
- engage - Incremental build tool with automatic dependency tracking.
- remake - Enhanced GNU Make - tracing, error reporting, debugging, profiling and more.
- Goma - Distributed compiler service for open-source project such as Chromium and Android. It's some kind of replacement of distcc+ccache.
- musl-cross-make - Fast, simple, but advanced makefile-based approach for producing musl-targeting cross compilers.
- Reducing flaky builds by 18x (2020)
- Reproducible Builds
- Tup - File-based build system. It takes as input a list of file changes and a directed acyclic graph (DAG). (Web) (Lobsters)
- The Problem with Gradle (2021) (HN)
- distcc - Distributed builds for C, C++ and Objective C.
- CMake Examples (Web)
- ninja-rs - Educational implementation of the ninja build system, based on ideas from the Build Systems a la Carte paper.
- Cutting Build Time in Half with Docker’s Buildx Kubernetes Driver (2021)
- Persistent Storage and Fast Remote Builds (2021)
- Robo - Simple YAML-based task runner written in Go.
- Buck - Fast build system that encourages the creation of small, reusable modules over a variety of platforms and languages. (Web) (The future of Buck)
- Mage is My Favorite Make (2021) (Lobsters)
- Kres - Tool to automate generation of build instructions based on project structure.
- You can handle The Diamond with CMake (2021) (HN)
- Turborepo - Blazing fast monorepo build system. (GitHub) (Turbo v0.4.0) (Tweet) (Code) (First look at Turborepo (Demo and Q&A with Jared Palmer)) (Turborepo Boiler Plate) (Article) (Tweet) (turborepo-remote-cache server) (1.2 release) (HN) (Refactor an Existing Monorepo to Turborepo)
- OMake - Build system designed for scalability and portability. (Code)
- Reproducible Builds: Increasing the Integrity of Software Supply Chains (2021)
- Comparing the New Generation of Build Tools (2021)
- Blade Build System - Easy-to-use, fast and modern build system for trunk based development in large scale monorepo codebase.
- Escaping AutoHell: A Vision for Automated Analysis and Migration of Autotools Build Systems (2016)
- Using CMake and Managing Dependencies (2021) (HN)
- Cake - Thin wrapper around make that runs all targets inside a development Docker/Podman container. (HN)
- Why We Need Build Systems (2021) (Lobsters)
- Compilation Database Generator - Tool for generating Clang's JSON Compilation Database files for make-based build systems.
- hlb - Developer-first language to build and test any software efficiently.
- Gradle - Build tool with a focus on build automation and support for multi-language development. (Web)
- Using Earthly To Build Replay
- CMake Part 1 - The Dark Arts (2021)
- unplugin - Unified plugin system for Vite, Rollup, and Webpack.
- Build Server Protocol - Protocol for IDEs and build tools to communicate about compile, run, test, debug and more. (Web)
- Reflecting on the Shake Build System (2021)
- Python as a build tool (2021) (Lobsters)
- How to Find Packages With CMake: The Basics (2020)
- Practical Makefiles, by example (2020)
- Learning CMake - Simple CMake tutorial project which contains some different scenarios.
- Forge - General, modular build system.
- Ekam - Build system which automatically figures out what to build and how to build it purely based on the source code.
- Button - Low-level back end build system.
- Nx - Smart, Extensible Build Framework. (Code) (Example) (Console) (Nx Conf Lite 2022)
- Premake - Powerfully simple build configuration. (Web) (Tweet)
- Pants - Fast, scalable, user-friendly build system for codebases of all sizes. It's currently focused on Python and Shell. (Web)
- Biomake - make-like utility for managing builds (or analysis workflows) involving multiple dependent files.
- Leeway - Heavily caching build system for Go, Yarn and Docker projects.
- scikit-build - Improved build system generator for CPython C/C++/Fortran/Cython extensions.
- Bob - Build system, a task runner as well as tooling for Git Multi-repos, all bundled into a single binary.
- My collection of CMake modules
- buildevents - Helper to generate Honeycomb traces from CI builds.
- Turtle - Ninja build system clone in Rust.
- Rattle - Forward build system with speculation and caching.
- Understanding Gradle – Video Series (Code)
- Monorepo Explained (Code) (HN)
- Reproducible Builds in January 2022 (HN)
- GitBOM - Automatic and Verifiable Artifact Resolution. (Web Code)
- n2 - Ninja compatible build system.
- Three Pillars of Reproducible Builds (2022) (HN)
- Turborepo Demo (Remote Caching & Deploying to Vercel) (2022)
- Monorepos done right (HN)
- How does Google keep build times low? (2021)
- Tech Notes: n2: revisiting Ninja (2022)
- Lerna-Lite - Super light version of the original Lerna.
- EasyBuild - Software build and installation framework that allows you to manage (scientific) software on High Performance Computing (HPC) systems in an efficient way. (Code) (EasyBuild Configs)
- Advantages of Monorepos (HN)
- Bash Cache Buildkite Plugin - Caching plugin that can be invoked from your build script.
- BuildCache - Advanced compiler accelerator that caches and reuses build results to avoid unnecessary re-compilations, and thereby speeding up the build process.
- Improve Build Times in Less Time (2022)
- wharf - Protocol for incrementally transferring software builds over the network using minimal time/bandwidth. (Lobsters)
- e3 - Python framework to ease the development of portable automated build systems (compilation, dependencies management, binary code packaging, and automated testing).
- Turbocache - Simple remote cache server for Turborepo. (Code)
- lbuild - Generic, modular code generator in Python 3.
- rock - Build system inspired by Build systems à la carte.
- Zap - Simple, fast, and correct build system for any programming language, that uses Deno and is built in Rust.
- Remembering Buildtool (2022)
- Dirsh - Consistent hashing of directories, respects your gitignore.
- blight - Framework for instrumenting build tools.
- Improve Build Times in Less Time by Zac Sweers (2022) (Slides)
- drone-cache - Drone plugin for caching current workspace files between builds to reduce your build times.
- Beast - Build system built for speed and power. (HN)
- Vercel Build Output API: Infrastructure-as-Filesystem (2022) (HN)
- Speeding up PostHog builds with Depot (2022)
- The Unreasonable Effectiveness of Makefiles (2022) (HN)
- Knit - Build tool inspired by Make and Plan9 mk.
- Tejolote - Highly configurable build executor and observer designed to generate signed SLSA provenance attestations about build runs.
- Vercel Remote Cache SDK - Feature of advanced build tools like Turborepo, Bazel, and Buck to cache compiled computations and code artifacts in the cloud.
- Shake - Tool for writing build systems - an alternative to make, Scons, Ant etc. (Docs)
- How Turbo bundler for web works (2022)
- Introducing Turbopack: the Turbo-charged bundler (2022)
- Fast builds, secure builds. Choose two. (2022)
- Buildomat - Manages the provisioning of ephemeral UNIX systems (e.g., instances in AWS EC2) on which to run software builds.
- sold - Commercial version of the mold linker. (Lobsters)
- Buck2 - Build system, successor to Buck. (Docs) (HN) (Lobsters)
- How I learned to love build systems (2021)
- Web Build Tools Compare
- Turbo Racer - High-performance distributed remote cache for Turborepo.
- Moon - Build system and repo management tool for the web ecosystem, written in Rust. (Web) (HN)
- Farm - Super fast web build tool written in Rust.
- How to speed up your next build 5-20x with Firebuild? (2023)
- Firebuild - Automatic build accelerator.
- Knit: making a better Make (2023) (Lobsters)
- Gradle still sucks (2023) (HN)
- Buck2 Build System Team AMA (2023)
- Zim - Caching build system for teams using monorepos.
- repro-env - Dependency lockfiles for reproducible build environments.