summaryrefslogtreecommitdiffstats
path: root/docs/en/erlang.mk/1
diff options
context:
space:
mode:
Diffstat (limited to 'docs/en/erlang.mk/1')
-rw-r--r--docs/en/erlang.mk/1/guide/app/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/asciidoc/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/ci/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/common_test/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/compat/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/contributing/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/coverage/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/deps.asciidoc27
-rw-r--r--docs/en/erlang.mk/1/guide/deps/index.html31
-rw-r--r--docs/en/erlang.mk/1/guide/dialyzer/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/edoc/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/escripts/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/eunit/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/external_plugins.asciidoc54
-rw-r--r--docs/en/erlang.mk/1/guide/external_plugins/index.html42
-rw-r--r--docs/en/erlang.mk/1/guide/external_plugins_list/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/getting_started/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/history/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/installation.asciidoc4
-rw-r--r--docs/en/erlang.mk/1/guide/installation/index.html11
-rw-r--r--docs/en/erlang.mk/1/guide/limitations/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/overview/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/ports/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/releases/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/sfx/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/shell/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/updating.asciidoc26
-rw-r--r--docs/en/erlang.mk/1/guide/updating/index.html30
-rw-r--r--docs/en/erlang.mk/1/guide/why/index.html1
-rw-r--r--docs/en/erlang.mk/1/guide/xref/index.html1
31 files changed, 199 insertions, 49 deletions
diff --git a/docs/en/erlang.mk/1/guide/app/index.html b/docs/en/erlang.mk/1/guide/app/index.html
index b05e48c4..0d6e67a7 100644
--- a/docs/en/erlang.mk/1/guide/app/index.html
+++ b/docs/en/erlang.mk/1/guide/app/index.html
@@ -691,7 +691,6 @@ you don&#8217;t explicitly use it.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/asciidoc/index.html b/docs/en/erlang.mk/1/guide/asciidoc/index.html
index 9cb17dba..6dece835 100644
--- a/docs/en/erlang.mk/1/guide/asciidoc/index.html
+++ b/docs/en/erlang.mk/1/guide/asciidoc/index.html
@@ -242,7 +242,6 @@ your user.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/ci/index.html b/docs/en/erlang.mk/1/guide/ci/index.html
index a7050ae7..3c74f3b1 100644
--- a/docs/en/erlang.mk/1/guide/ci/index.html
+++ b/docs/en/erlang.mk/1/guide/ci/index.html
@@ -149,7 +149,6 @@
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/common_test/index.html b/docs/en/erlang.mk/1/guide/common_test/index.html
index a1b12f81..4c96abca 100644
--- a/docs/en/erlang.mk/1/guide/common_test/index.html
+++ b/docs/en/erlang.mk/1/guide/common_test/index.html
@@ -257,7 +257,6 @@ but covered in its own chapter.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/compat/index.html b/docs/en/erlang.mk/1/guide/compat/index.html
index a84bd3cc..bb12384a 100644
--- a/docs/en/erlang.mk/1/guide/compat/index.html
+++ b/docs/en/erlang.mk/1/guide/compat/index.html
@@ -228,7 +228,6 @@ configuration, add or remove modules.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/contributing/index.html b/docs/en/erlang.mk/1/guide/contributing/index.html
index 3175a7c9..eaddf8ee 100644
--- a/docs/en/erlang.mk/1/guide/contributing/index.html
+++ b/docs/en/erlang.mk/1/guide/contributing/index.html
@@ -269,7 +269,6 @@ the related documentation.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/coverage/index.html b/docs/en/erlang.mk/1/guide/coverage/index.html
index 8e07138b..8404d89a 100644
--- a/docs/en/erlang.mk/1/guide/coverage/index.html
+++ b/docs/en/erlang.mk/1/guide/coverage/index.html
@@ -149,7 +149,6 @@
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/deps.asciidoc b/docs/en/erlang.mk/1/guide/deps.asciidoc
index 723deb0a..84a53de1 100644
--- a/docs/en/erlang.mk/1/guide/deps.asciidoc
+++ b/docs/en/erlang.mk/1/guide/deps.asciidoc
@@ -167,6 +167,7 @@ The following table lists all existing methods:
| hg | hg repo commit | Clone the Mercurial repository and update to the given version
| svn | svn repo | Checkout the given SVN repository
| cp | cp path/to/repo | Recursively copy a local directory
+| ln | ln path/to/repo | Symbolically link a local directory
| hex | hex version | Download the given project version from hex.pm
| fail | N/A | Always fail, reserved for internal use
| legacy | N/A | Legacy Erlang.mk fetcher, reserved for internal use
@@ -397,9 +398,20 @@ They work exactly the same as remote dependencies, except:
* They are not deleted on `make distclean`
* They are not automatically added to the application resource file
-To properly fill the application resource file, you will
-need to define the `LOCAL_DEPS` variable for each relevant
-application, the same as for OTP applications.
+To properly fill the application resource file and compile apps in
+the right order, you will need to define the `LOCAL_DEPS` variable
+for each relevant application, the same as for OTP applications. Apps
+can depend on each other in this way, and their compilation order
+will follow the same rules as regular dependencies in `DEPS`.
+
+The top-level `LOCAL_DEPS` variable, if defined, will determine which
+apps (along with their dependencies) to build, and also which apps
+should be added to the top-level application resource file, if there
+is one. This may be useful, for example, for specifying a different
+set of apps to build for different releases. If `LOCAL_DEPS` is not
+defined, then all apps in the '$(APPS_DIR)' will be built, but none
+will be automatically added to the top-level application resource
+file.
If there is a conflict between a local dependency and a
remote dependency, then the local dependency always wins;
@@ -476,10 +488,11 @@ on the kind of project it finds the dependency to be.
as their build tool. This essentially patches Rebar out, and
fixes and converts the project to be compatible with Erlang.mk.
-* Erlang.mk projects have their 'erlang.mk' file redirect to
-the top-level project's Erlang.mk. This is to ensure that
-functionality works across all dependencies, even if the
-dependency's Erlang.mk is outdated.
+* Erlang.mk projects have their 'Makefile' patched, if necessary,
+to include the top-level project's Erlang.mk. This is to ensure
+that functionality works across all dependencies, even if the
+dependency's Erlang.mk is outdated. The patched Makefile
+can be safely committed if necessary.
* Other Erlang projects get a small Erlang.mk Makefile
generated automatically.
diff --git a/docs/en/erlang.mk/1/guide/deps/index.html b/docs/en/erlang.mk/1/guide/deps/index.html
index e551a607..a0650b83 100644
--- a/docs/en/erlang.mk/1/guide/deps/index.html
+++ b/docs/en/erlang.mk/1/guide/deps/index.html
@@ -234,6 +234,11 @@ cellspacing="0" cellpadding="4">
<td align="center" valign="top"><p class="table">Recursively copy a local directory</p></td>
</tr>
<tr>
+<td align="left" valign="top"><p class="table">ln</p></td>
+<td align="center" valign="top"><p class="table">ln path/to/repo</p></td>
+<td align="center" valign="top"><p class="table">Symbolically link a local directory</p></td>
+</tr>
+<tr>
<td align="left" valign="top"><p class="table">hex</p></td>
<td align="center" valign="top"><p class="table">hex version</p></td>
<td align="center" valign="top"><p class="table">Download the given project version from hex.pm</p></td>
@@ -483,9 +488,19 @@ They are not automatically added to the application resource file
</p>
</li>
</ul></div>
-<div class="paragraph"><p>To properly fill the application resource file, you will
-need to define the <code>LOCAL_DEPS</code> variable for each relevant
-application, the same as for OTP applications.</p></div>
+<div class="paragraph"><p>To properly fill the application resource file and compile apps in
+the right order, you will need to define the <code>LOCAL_DEPS</code> variable
+for each relevant application, the same as for OTP applications. Apps
+can depend on each other in this way, and their compilation order
+will follow the same rules as regular dependencies in <code>DEPS</code>.</p></div>
+<div class="paragraph"><p>The top-level <code>LOCAL_DEPS</code> variable, if defined, will determine which
+apps (along with their dependencies) to build, and also which apps
+should be added to the top-level application resource file, if there
+is one. This may be useful, for example, for specifying a different
+set of apps to build for different releases. If <code>LOCAL_DEPS</code> is not
+defined, then all apps in the <em>$(APPS_DIR)</em> will be built, but none
+will be automatically added to the top-level application resource
+file.</p></div>
<div class="paragraph"><p>If there is a conflict between a local dependency and a
remote dependency, then the local dependency always wins;
an error will be triggered when trying to fetch the
@@ -587,10 +602,11 @@ fixes and converts the project to be compatible with Erlang.mk.
</li>
<li>
<p>
-Erlang.mk projects have their <em>erlang.mk</em> file redirect to
-the top-level project&#8217;s Erlang.mk. This is to ensure that
-functionality works across all dependencies, even if the
-dependency&#8217;s Erlang.mk is outdated.
+Erlang.mk projects have their <em>Makefile</em> patched, if necessary,
+to include the top-level project&#8217;s Erlang.mk. This is to ensure
+that functionality works across all dependencies, even if the
+dependency&#8217;s Erlang.mk is outdated. The patched Makefile
+can be safely committed if necessary.
</p>
</li>
<li>
@@ -730,7 +746,6 @@ The dependency directory <em>$(DEPS_DIR)</em> will not be removed on <code>make
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/dialyzer/index.html b/docs/en/erlang.mk/1/guide/dialyzer/index.html
index 3fb9d47d..519d25e4 100644
--- a/docs/en/erlang.mk/1/guide/dialyzer/index.html
+++ b/docs/en/erlang.mk/1/guide/dialyzer/index.html
@@ -219,7 +219,6 @@ Dialyzer creates it automatically.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/edoc/index.html b/docs/en/erlang.mk/1/guide/edoc/index.html
index 52eb84ef..6bb292d4 100644
--- a/docs/en/erlang.mk/1/guide/edoc/index.html
+++ b/docs/en/erlang.mk/1/guide/edoc/index.html
@@ -196,7 +196,6 @@ the following to your Makefile:</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/escripts/index.html b/docs/en/erlang.mk/1/guide/escripts/index.html
index 88e0320e..2caa838b 100644
--- a/docs/en/erlang.mk/1/guide/escripts/index.html
+++ b/docs/en/erlang.mk/1/guide/escripts/index.html
@@ -233,7 +233,6 @@ does not include <code>+debug_info</code>.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/eunit/index.html b/docs/en/erlang.mk/1/guide/eunit/index.html
index f53290fe..3e18c25f 100644
--- a/docs/en/erlang.mk/1/guide/eunit/index.html
+++ b/docs/en/erlang.mk/1/guide/eunit/index.html
@@ -283,7 +283,6 @@ but covered in its own chapter.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/external_plugins.asciidoc b/docs/en/erlang.mk/1/guide/external_plugins.asciidoc
index d3dafaac..68deb825 100644
--- a/docs/en/erlang.mk/1/guide/external_plugins.asciidoc
+++ b/docs/en/erlang.mk/1/guide/external_plugins.asciidoc
@@ -75,3 +75,57 @@ The `THIS` variable is required to relatively include files.
This allows users to not only be able to select individual
plugins, but also select all plugins from the dependency
in one go if they wish to do so.
+
+=== Early-stage plugins
+
+Plugins declared in `DEP_PLUGINS` are loaded near the end of Erlang.mk.
+That's why you have access to all previously initialized variables.
+However, if you want your plugin to add common dependencies to
+your applications, a regular is loaded too late in the process.
+You need to use "Early-stage plugins". They are declared using the
+`DEP_EARLY_PLUGINS` variable instead. Plugins listed in this variable
+are loaded near the beginning of Erlang.mk Otherwise, they work exactly
+the same.
+
+If you only give the name of a dependency, the default file loaded is
+'early-plugins.mk'. You can specify a filename exactly like you would
+have done it with regular plugins.
+
+[source,make]
+# In your application's Makefile
+BUILD_DEPS = common_deps
+DEP_EARLY_PLUGINS = common_deps
+
+[source,make]
+# In the plugin's early-plugins.mk
+DEPS += cowboy
+TEST_DEPS = ct_helper
+dep_ct_helper = git https://github.com/ninenines/ct_helper master
+
+=== Loading plugins local to the application
+
+If the Erlang.mk plugin lives in the same directory or repository as your
+application or library, then you can load it exactly like an external
+plugin: the dependency name is simply the name of your application or
+library.
+
+For example, the following Makefile loads a plugin in the 'mk'
+subdirectory:
+
+[source,make]
+DEP_PLUGINS = $(PROJECT)/mk/dist.mk
+
+This also works with early-stage plugins:
+
+[source,make]
+DEP_EARLY_PLUGINS = $(PROJECT)/mk/variables.mk
+
+Like external plugins, if you do not specify the path to the plugin, it
+defaults to 'plugins.mk' or 'early-plugins.mk', located at the root of
+your application:
+
+[source,make]
+# Loads ./early-plugins.mk
+DEP_EARLY_PLUGINS = $(PROJECT)
+# Loads ./plugins.mk
+DEP_PLUGINS = $(PROJECT)
diff --git a/docs/en/erlang.mk/1/guide/external_plugins/index.html b/docs/en/erlang.mk/1/guide/external_plugins/index.html
index c91f5198..e83b6a76 100644
--- a/docs/en/erlang.mk/1/guide/external_plugins/index.html
+++ b/docs/en/erlang.mk/1/guide/external_plugins/index.html
@@ -132,6 +132,47 @@ plugins, but also select all plugins from the dependency
in one go if they wish to do so.</p></div>
</div>
</div>
+<div class="sect1">
+<h2 id="_early_stage_plugins">Early-stage plugins</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>Plugins declared in <code>DEP_PLUGINS</code> are loaded near the end of Erlang.mk.
+That&#8217;s why you have access to all previously initialized variables.
+However, if you want your plugin to add common dependencies to
+your applications, a regular is loaded too late in the process.
+You need to use "Early-stage plugins". They are declared using the
+<code>DEP_EARLY_PLUGINS</code> variable instead. Plugins listed in this variable
+are loaded near the beginning of Erlang.mk Otherwise, they work exactly
+the same.</p></div>
+<div class="paragraph"><p>If you only give the name of a dependency, the default file loaded is
+<em>early-plugins.mk</em>. You can specify a filename exactly like you would
+have done it with regular plugins.</p></div>
+<div class="listingblock">
+<div class="content"></div></div>
+<div class="listingblock">
+<div class="content"></div></div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_loading_plugins_local_to_the_application">Loading plugins local to the application</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>If the Erlang.mk plugin lives in the same directory or repository as your
+application or library, then you can load it exactly like an external
+plugin: the dependency name is simply the name of your application or
+library.</p></div>
+<div class="paragraph"><p>For example, the following Makefile loads a plugin in the <em>mk</em>
+subdirectory:</p></div>
+<div class="listingblock">
+<div class="content"></div></div>
+<div class="paragraph"><p>This also works with early-stage plugins:</p></div>
+<div class="listingblock">
+<div class="content"></div></div>
+<div class="paragraph"><p>Like external plugins, if you do not specify the path to the plugin, it
+defaults to <em>plugins.mk</em> or <em>early-plugins.mk</em>, located at the root of
+your application:</p></div>
+<div class="listingblock">
+<div class="content"></div></div>
+</div>
+</div>
@@ -211,7 +252,6 @@ in one go if they wish to do so.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/external_plugins_list/index.html b/docs/en/erlang.mk/1/guide/external_plugins_list/index.html
index 0aa40b1e..7b08f0e6 100644
--- a/docs/en/erlang.mk/1/guide/external_plugins_list/index.html
+++ b/docs/en/erlang.mk/1/guide/external_plugins_list/index.html
@@ -229,7 +229,6 @@ to generate a compatible configuration file for
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/getting_started/index.html b/docs/en/erlang.mk/1/guide/getting_started/index.html
index fc30a227..efe429e0 100644
--- a/docs/en/erlang.mk/1/guide/getting_started/index.html
+++ b/docs/en/erlang.mk/1/guide/getting_started/index.html
@@ -500,7 +500,6 @@ Loïc Hoguin by sending an email to <a href="mailto:[email protected]">contac
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/history/index.html b/docs/en/erlang.mk/1/guide/history/index.html
index 54c3e9da..66636cf4 100644
--- a/docs/en/erlang.mk/1/guide/history/index.html
+++ b/docs/en/erlang.mk/1/guide/history/index.html
@@ -203,7 +203,6 @@ from the 3.6.0 release onward.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/index.html b/docs/en/erlang.mk/1/guide/index.html
index 59ada5e4..468794e5 100644
--- a/docs/en/erlang.mk/1/guide/index.html
+++ b/docs/en/erlang.mk/1/guide/index.html
@@ -296,7 +296,6 @@
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/installation.asciidoc b/docs/en/erlang.mk/1/guide/installation.asciidoc
index a1e5fd33..fcf6491e 100644
--- a/docs/en/erlang.mk/1/guide/installation.asciidoc
+++ b/docs/en/erlang.mk/1/guide/installation.asciidoc
@@ -58,6 +58,10 @@ Erlang.mk can be used on Windows inside an MSYS2 environment.
Cygwin, MSYS (the original) and native Windows (both Batch
and PowerShell) are currently not supported.
+NOTE: Erlang.mk expects Unix line breaks in most of the files
+(LF instead of CRLF). Make sure to configure your text editor
+adequately.
+
The rest of this section details how to setup Erlang/OTP and
MSYS2 in order to use Erlang.mk.
diff --git a/docs/en/erlang.mk/1/guide/installation/index.html b/docs/en/erlang.mk/1/guide/installation/index.html
index c5d017cb..fa73b71c 100644
--- a/docs/en/erlang.mk/1/guide/installation/index.html
+++ b/docs/en/erlang.mk/1/guide/installation/index.html
@@ -135,6 +135,16 @@ http://www.gnu.org/software/src-highlite -->
<div class="paragraph"><p>Erlang.mk can be used on Windows inside an MSYS2 environment.
Cygwin, MSYS (the original) and native Windows (both Batch
and PowerShell) are currently not supported.</p></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">Erlang.mk expects Unix line breaks in most of the files
+(LF instead of CRLF). Make sure to configure your text editor
+adequately.</td>
+</tr></table>
+</div>
<div class="paragraph"><p>The rest of this section details how to setup Erlang/OTP and
MSYS2 in order to use Erlang.mk.</p></div>
<div class="sect3">
@@ -308,7 +318,6 @@ so expect bugs to be fixed as more tests are added.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/limitations/index.html b/docs/en/erlang.mk/1/guide/limitations/index.html
index 27f69b3b..76ef25a3 100644
--- a/docs/en/erlang.mk/1/guide/limitations/index.html
+++ b/docs/en/erlang.mk/1/guide/limitations/index.html
@@ -191,7 +191,6 @@ fix this behavior.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/overview/index.html b/docs/en/erlang.mk/1/guide/overview/index.html
index 95bcb794..3ea5bf97 100644
--- a/docs/en/erlang.mk/1/guide/overview/index.html
+++ b/docs/en/erlang.mk/1/guide/overview/index.html
@@ -236,7 +236,6 @@ everyone agreed on everything all the time.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/ports/index.html b/docs/en/erlang.mk/1/guide/ports/index.html
index f6e71a7a..7fc9dbbf 100644
--- a/docs/en/erlang.mk/1/guide/ports/index.html
+++ b/docs/en/erlang.mk/1/guide/ports/index.html
@@ -284,7 +284,6 @@ list the files to compile.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/releases/index.html b/docs/en/erlang.mk/1/guide/releases/index.html
index 923a0d4e..81fec43a 100644
--- a/docs/en/erlang.mk/1/guide/releases/index.html
+++ b/docs/en/erlang.mk/1/guide/releases/index.html
@@ -276,7 +276,6 @@ http://www.gnu.org/software/src-highlite -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/sfx/index.html b/docs/en/erlang.mk/1/guide/sfx/index.html
index d90cc8bf..faf40223 100644
--- a/docs/en/erlang.mk/1/guide/sfx/index.html
+++ b/docs/en/erlang.mk/1/guide/sfx/index.html
@@ -197,7 +197,6 @@ the release in <code>console</code> mode.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/shell/index.html b/docs/en/erlang.mk/1/guide/shell/index.html
index 295caf48..e7a49274 100644
--- a/docs/en/erlang.mk/1/guide/shell/index.html
+++ b/docs/en/erlang.mk/1/guide/shell/index.html
@@ -189,7 +189,6 @@ command <code>q().</code>.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/updating.asciidoc b/docs/en/erlang.mk/1/guide/updating.asciidoc
index 61d913db..8eeb0bf0 100644
--- a/docs/en/erlang.mk/1/guide/updating.asciidoc
+++ b/docs/en/erlang.mk/1/guide/updating.asciidoc
@@ -47,10 +47,28 @@ Yep, it's that easy.
=== Customizing the build
-Erlang.mk allows you to customize which plugins are to be included
-in the 'erlang.mk' file. You can do so by maintaining your own
-'build.config' file in your repository. Erlang.mk will automatically
-use it the next time you run `make erlang-mk`.
+Erlang.mk allows you to customize which components are to be included
+in the 'erlang.mk' file. The `WITHOUT` variable allows you to
+remove components from the default Erlang.mk build. The 'build.config'
+file lets you define exactly what goes in (including your own code!),
+and in what order.
+
+The `WITHOUT` file contains the list of components to exclude from
+the build. For example, to exclude the package index and the EDoc
+plugin when bootstrapping your application:
+
+[source,bash]
+$ make -f erlang.mk bootstrap WITHOUT="index plugins/edoc"
+
+The generated Erlang.mk will never include those components when
+you update it, until you change your mind and use the `WITHOUT`
+variable again when you upgrade:
+
+[source,bash]
+$ make erlang-mk WITHOUT=index
+
+The 'build.config' file is automatically used when you bootstrap
+Erlang.mk or when you update it with `make erlang-mk`.
The 'build.config' file contains the list of all files that will
be built into the resulting 'erlang.mk' file. You can start from
diff --git a/docs/en/erlang.mk/1/guide/updating/index.html b/docs/en/erlang.mk/1/guide/updating/index.html
index fbb3fffc..72956156 100644
--- a/docs/en/erlang.mk/1/guide/updating/index.html
+++ b/docs/en/erlang.mk/1/guide/updating/index.html
@@ -117,10 +117,31 @@ rm -rf <span style="color: #990000">.</span>erlang<span style="color: #990000">.
<div class="sect1">
<h2 id="_customizing_the_build">Customizing the build</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Erlang.mk allows you to customize which plugins are to be included
-in the <em>erlang.mk</em> file. You can do so by maintaining your own
-<em>build.config</em> file in your repository. Erlang.mk will automatically
-use it the next time you run <code>make erlang-mk</code>.</p></div>
+<div class="paragraph"><p>Erlang.mk allows you to customize which components are to be included
+in the <em>erlang.mk</em> file. The <code>WITHOUT</code> variable allows you to
+remove components from the default Erlang.mk build. The <em>build.config</em>
+file lets you define exactly what goes in (including your own code!),
+and in what order.</p></div>
+<div class="paragraph"><p>The <code>WITHOUT</code> file contains the list of components to exclude from
+the build. For example, to exclude the package index and the EDoc
+plugin when bootstrapping your application:</p></div>
+<div class="listingblock">
+<div class="content"><!-- Generator: GNU source-highlight 3.1.8
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>$ make -f erlang<span style="color: #990000">.</span>mk bootstrap <span style="color: #009900">WITHOUT</span><span style="color: #990000">=</span><span style="color: #FF0000">"index plugins/edoc"</span></tt></pre></div></div>
+<div class="paragraph"><p>The generated Erlang.mk will never include those components when
+you update it, until you change your mind and use the <code>WITHOUT</code>
+variable again when you upgrade:</p></div>
+<div class="listingblock">
+<div class="content"><!-- Generator: GNU source-highlight 3.1.8
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>$ make erlang-mk <span style="color: #009900">WITHOUT</span><span style="color: #990000">=</span>index</tt></pre></div></div>
+<div class="paragraph"><p>The <em>build.config</em> file is automatically used when you bootstrap
+Erlang.mk or when you update it with <code>make erlang-mk</code>.</p></div>
<div class="paragraph"><p>The <em>build.config</em> file contains the list of all files that will
be built into the resulting <em>erlang.mk</em> file. You can start from
the <a href="https://github.com/ninenines/erlang.mk/blob/master/build.config">most recent version</a>
@@ -210,7 +231,6 @@ the <code>ERLANG_MK_BUILD_DIR</code> variable.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/why/index.html b/docs/en/erlang.mk/1/guide/why/index.html
index 02c57035..09bcb78b 100644
--- a/docs/en/erlang.mk/1/guide/why/index.html
+++ b/docs/en/erlang.mk/1/guide/why/index.html
@@ -228,7 +228,6 @@ as you expect it to.</p></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>
diff --git a/docs/en/erlang.mk/1/guide/xref/index.html b/docs/en/erlang.mk/1/guide/xref/index.html
index 45e89ff7..40f3f289 100644
--- a/docs/en/erlang.mk/1/guide/xref/index.html
+++ b/docs/en/erlang.mk/1/guide/xref/index.html
@@ -149,7 +149,6 @@
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
- <script src="/js/bootstrap-carousel.js"></script>
<script src="/js/bootstrap-dropdown.js"></script>
<script src="/js/custom.js"></script>
</body>