erlang.mk is a Makefile-based build tool for Erlang projects, intended for Erlang developers and teams who want dependency fetching, compilation, and release work driven by a single include erlang.mk line rather than a separate build system.
What it is
Erlang.mk is a build tool for Erlang that ships as a Makefile and is pulled directly into a project's own Makefile. It lives in the Erlang/OTP ecosystem and is catalogued here under Developer Tools / Build & Deployment. The project is written in Makefile, licensed under the ISC licence, and its repository carries 587 stars, 237 forks, and 41 open issues. Its topics — build-system, build-tool, erlang, makefile, and package-manager — describe the scope. The website at erlang.mk and its user guide are the two entry points the README points to.
The concrete problem it solves is the hand-written build script. An Erlang project still needs a way to declare the OTP project name, fetch dependencies, and drive compilation, and without a shared convention that logic becomes bespoke Makefile rules every maintainer writes again. Erlang.mk supplies those rules. A complete project definition shrinks to a project name, a dependency list, a pinned dependency revision such as dep_cowboy_commit = 2.8.0, and the include line.
Key capabilities
- Integration is a single line: include erlang.mk at the end of the project Makefile, with no separate build daemon or configuration file.
- The project name is declared with the PROJECT variable, which tells the tool what artifact it is building.
- Dependencies are listed in the DEPS variable, and each one can be pinned to an exact revision with a dep__commit variable, as in dep_cowboy_commit = 2.8.0.
- It acts as a package manager as well as a build system, which is one of its five repository topics.
- Builds run through make, so the tool reuses standard Make invocations and existing Makefile knowledge instead of introducing a new command set.
- It is tested and supported on Linux, FreeBSD, OSX, and Windows.
- Documentation covers a full user guide on the erlang.mk site plus a getting-started page at erlang.mk/guide/getting_started.html, with a Discord server for help.
Who uses it and how
- Erlang teams that want one Makefile as the single build entry point, avoiding a second build tool in the repository.
- Projects that need a dependency held at a known revision, using a dep__commit variable to fix what DEPS pulls in.
- Developers working across platforms, since the tool is tested and supported on Linux, FreeBSD, OSX, and Windows.
- New contributors onboarding from the getting-started guide, with the Discord server as the support channel.
- Maintainers standardising several Erlang repositories on the same build conventions by reusing one include line.
Getting started
Add the line include erlang.mk to the project Makefile alongside PROJECT and DEPS declarations, then follow the getting-started guide at erlang.mk/guide/getting_started.html.
How it compares
The facts supplied for this page name no comparable tools and no paid products that erlang.mk replaces. On the evidence available it stands alone in this registry as the Makefile-based build tool for Erlang.
When to use it — and when not to
Choose erlang.mk when the team is already comfortable with Make and wants build and dependency handling without operating a database, object store, or mail service, since the tool is a file included in the repository. Avoid it if the project wants a build interface that is not Make, because Makefile semantics are the entire design. The supplied repository facts give no release history and the README excerpt is sparse, so read the user guide and review the 41 open issues before adopting it.