From 983f82bdfcb3e78f04468fcfd02d6a6ee5869b13 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= <essen@ninenines.eu>
Date: Mon, 3 Dec 2018 19:22:12 +0100
Subject: Don't rebuild dependencies by default

Unless it's a symbolic link, it's built directly, FULL=1 is set
or the file ebin/dep_built in the dependency is removed.

See the documentation changes for more details.

This provides immense build speed gains, for example on a
RabbitMQ project it went from 10s to 1s for the 2nd+ builds.
---
 doc/src/guide/deps.asciidoc | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

(limited to 'doc/src/guide/deps.asciidoc')

diff --git a/doc/src/guide/deps.asciidoc b/doc/src/guide/deps.asciidoc
index 9e78826..9939e82 100644
--- a/doc/src/guide/deps.asciidoc
+++ b/doc/src/guide/deps.asciidoc
@@ -296,6 +296,24 @@ different version of D, it will always be A's version
 that wins, because we fetch all dependencies of A before
 fetching those from B or C.
 
+Once a dependency is built, it will not be built again by
+default. Typically dependencies do not need to be recompiled
+and this speeds up building immensely. There are a few ways
+to force recompiling a dependency however:
+
+* The dependency directory is a symbolic link; the dependency
+  will always be recompiled.
+
+* The dependency is built directly, for example with a command
+  like `make -C deps/cowlib`, or `make` in the dependency's
+  directory.
+
+* The variable `FULL` is set, for example `make FULL=1`. This
+  will force building of all dependencies. This can be added
+  to your Makefile before including 'erlang.mk'.
+
+* The file `ebin/dep_built` in the dependency is removed.
+
 === Fetching and listing dependencies only
 
 You can fetch all dependencies recursively without building anything,
-- 
cgit v1.2.3

