aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2016-10-25 14:57:58 +0300
committerLoïc Hoguin <[email protected]>2016-10-25 14:57:58 +0300
commit8cb709059c22eaba7fdf66dee1674c4cf790e87d (patch)
tree85bf550a118b9645c29aca1e549d58bf03d8258d
parent2dc958105cd9aef41872ba605e09aab55ffb4856 (diff)
downloaderlang.mk-8cb709059c22eaba7fdf66dee1674c4cf790e87d.tar.gz
erlang.mk-8cb709059c22eaba7fdf66dee1674c4cf790e87d.tar.bz2
erlang.mk-8cb709059c22eaba7fdf66dee1674c4cf790e87d.zip
Update user guide
-rw-r--r--guide/deps.html46
-rw-r--r--guide/index.html2
-rw-r--r--guide/installation.html2
3 files changed, 42 insertions, 8 deletions
diff --git a/guide/deps.html b/guide/deps.html
index b10cfe6..d5b8f13 100644
--- a/guide/deps.html
+++ b/guide/deps.html
@@ -135,7 +135,41 @@ those from C.</p><p>Similarly, if project A depends on projects B, C and D,
regardless of the order, and A, B and C depend on a
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.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ignoring_unwanted_dependencies"></a>7.4. Ignoring unwanted dependencies</h2></div></div></div><p>Sometimes, you may want to ignore dependencies entirely.
+fetching those from B or C.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_fetching_and_listing_dependencies_only"></a>7.4. Fetching and listing dependencies only</h2></div></div></div><p>You can fetch all dependencies recursively without building anything,
+with the <code class="literal">make fetch-deps</code> command. It follows the same rules described
+in the section above.</p><p>You can list all dependencies recursively, again without building
+anything, with the <code class="literal">make list-deps</code> command. It will obviously need
+to fetch all dependencies exactly like <code class="literal">make fetch-deps</code>. Once
+everything is fetched, it prints a sorted list of absolute paths to the
+dependencies.</p><p>By default, <code class="literal">fetch-deps</code> and <code class="literal">list-deps</code> work on the <code class="literal">BUILD_DEPS</code>
+and <code class="literal">DEPS</code> lists only. To also fetch/list <code class="literal">TEST_DEPS</code>, <code class="literal">DOC_DEPS</code>,
+<code class="literal">REL_DEPS</code> and/or <code class="literal">SHELL_DEPS</code>, you have two possibilities:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+You can use <code class="literal">make fetch-test-deps</code>, <code class="literal">make fetch-doc-deps</code>, <code class="literal">make
+ fetch-rel-deps</code> and <code class="literal">make fetch-shell-deps</code> commands respectively.
+ If you want to list them, you can use <code class="literal">make list-test-deps</code>, <code class="literal">make
+ list-doc-deps</code>, <code class="literal">make list-rel-deps</code> and <code class="literal">make list-shell-deps</code>
+ respectively.
+</li><li class="listitem">
+You can use <code class="literal">make fetch-deps</code> or <code class="literal">make list-deps</code> with the Makefile
+ variable <code class="literal">DEP_TYPES</code> set to a list of dependency types you want.
+ The types are <code class="literal">test</code>, <code class="literal">doc</code>, <code class="literal">rel</code> and <code class="literal">shell</code> respectively. For
+ example, you can list test and doc dependencies with <code class="literal">make list-deps
+ DEP_TYPES='test doc'</code>.
+</li></ul></div><p>Note that only first level ‘TEST_DEPS<code class="literal">, `DOC_DEPS</code>, <code class="literal">REL_DEPS</code> and
+<code class="literal">SHELL_DEPS</code> are included, not dependencies’ one. In other word,
+<code class="literal">make list-test-deps</code> lists the <code class="literal">TEST_DEPS</code> of your project, but not
+<code class="literal">TEST_DEPS</code> of the projects yours depend on.</p><p>No matter which method you use, <code class="literal">BUILD_DEPS</code> and <code class="literal">DEPS</code> are always
+included.</p><p>Internally, the <code class="literal">make fetch-*</code> commands store the complete list of
+dependencies in files named <code class="literal">$(ERLANG_MK_RECURSIVE_DEPS_LIST)</code>,
+<code class="literal">$(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST)</code>,
+<code class="literal">$(ERLANG_MK_RECURSIVE_DOC_DEPS_LIST)</code>,
+<code class="literal">$(ERLANG_MK_RECURSIVE_REL_DEPS_LIST)</code> and
+<code class="literal">$(ERLANG_MK_RECURSIVE_SHELL_DEPS_LIST)</code>. Those files are simply printed
+by the <code class="literal">make list-*</code> commands.</p><p><code class="literal">make list-*</code> commands are made for human beings. If you need the list
+of dependencies in a Makefile or a script, you should use the content
+of those files directly instead. The reason is that <code class="literal">make fetch-*</code> and
+<code class="literal">make list-*</code> may have unwanted content in their output, such as actual
+fetching of dependencies.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ignoring_unwanted_dependencies"></a>7.5. Ignoring unwanted dependencies</h2></div></div></div><p>Sometimes, you may want to ignore dependencies entirely.
Not even fetch them. You may want to do this because a
project you depend on depends on an application you do
not need (like a dependency for building documentation
@@ -145,7 +179,7 @@ variable:</p><pre class="programlisting">IGNORE_DEPS += edown proper</pre><p>Thi
building. It is therefore safe to write:</p><pre class="programlisting">IGNORE_DEPS += edown proper
TEST_DEPS = proper</pre><p>The PropEr application will be fetched as intended when
running <code class="literal">make tests</code> or <code class="literal">make check</code>. It will however
-not be fetched when running <code class="literal">make</code> or <code class="literal">make deps</code>.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_dependencies_directory"></a>7.5. Dependencies directory</h2></div></div></div><p>Dependencies are fetched in <span class="emphasis"><em>$(DEPS_DIR)</em></span>. By default this is
+not be fetched when running <code class="literal">make</code> or <code class="literal">make deps</code>.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_dependencies_directory"></a>7.6. Dependencies directory</h2></div></div></div><p>Dependencies are fetched in <span class="emphasis"><em>$(DEPS_DIR)</em></span>. By default this is
the <span class="emphasis"><em>deps</em></span> directory. You can change this default, but you
should only do so if it was not defined previously. Erlang.mk
uses this variable to tell dependencies where to fetch their
@@ -154,7 +188,7 @@ if you know you will never use this project as a dependency,
<code class="literal">=</code> will work. But to avoid it biting you later on, do this:</p><pre class="programlisting">DEPS_DIR ?= $(CURDIR)/libs</pre><p>The <code class="literal">$(CURDIR)</code> part is important, otherwise dependencies of
dependencies will be fetched in the wrong directory.</p><p>Erlang.mk will also export the <code class="literal">REBAR_DEPS_DIR</code> variable for
compatibility with Rebar build tools, as long as they are
-recent enough.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_many_applications_in_one_repository"></a>7.6. Many applications in one repository</h2></div></div></div><p>In addition to the dependencies that are fetched, Erlang.mk
+recent enough.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_many_applications_in_one_repository"></a>7.7. Many applications in one repository</h2></div></div></div><p>In addition to the dependencies that are fetched, Erlang.mk
also allows you to have dependencies local to your repository.
This kind of layout is sometimes called multi-application
repositories, or repositories with multiple applications.</p><p>They work exactly the same as remote dependencies, except:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
@@ -178,7 +212,7 @@ command will create the necessary directories and bootstrap
the application.</p><p>For example, to create a full fledged OTP application as
a local dependency:</p><pre class="programlisting">$ make new-app in=webchat</pre><p>Or, the same as an OTP library:</p><pre class="programlisting">$ make new-lib in=webchat</pre><p>Templates also work with local dependencies, from the root
directory of the project. You do need however to tell
-Erlang.mk to create the files in the correct application:</p><pre class="programlisting">$ make new t=gen_server n=my_server in=webchat</pre></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_repositories_with_no_application_at_the_root_level"></a>7.7. Repositories with no application at the root level</h2></div></div></div><p>It’s possible to use Erlang.mk with only applications in
+Erlang.mk to create the files in the correct application:</p><pre class="programlisting">$ make new t=gen_server n=my_server in=webchat</pre></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_repositories_with_no_application_at_the_root_level"></a>7.8. Repositories with no application at the root level</h2></div></div></div><p>It’s possible to use Erlang.mk with only applications in
<span class="emphasis"><em>$(APPS_DIR)</em></span>, and nothing at the root of the repository.
Just create a folder, put the <span class="emphasis"><em>erlang.mk</em></span> file in it,
write a Makefile that includes it, and start creating
@@ -186,7 +220,7 @@ your applications.</p><p>Similarly, it’s possible to have a repository with on
dependencies found in <span class="emphasis"><em>$(DEPS_DIR)</em></span>. You just need to
create a Makefile and specify the dependencies you want.
This allows you to create a repository for handling the
-building of releases, for example.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_autopatch"></a>7.8. Autopatch</h2></div></div></div><p>Erlang.mk will automatically patch all the dependencies it
+building of releases, for example.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_autopatch"></a>7.9. Autopatch</h2></div></div></div><p>Erlang.mk will automatically patch all the dependencies it
fetches. It needs to do this to ensure that the dependencies
become compatible with not only Erlang.mk, but also with
the version of Erlang.mk that is currently used.</p><p>When fetching a dependency, the following operations are
@@ -223,7 +257,7 @@ empty Makefile generated, for compatibility purposes.
Other projects with no Makefile are left untouched.
</li></ul></div><p>You can disable the replacing of the <span class="emphasis"><em>erlang.mk</em></span> file by
defining the <code class="literal">NO_AUTOPATCH_ERLANG_MK</code> variable:</p><pre class="programlisting">NO_AUTOPATCH_ERLANG_MK = 1</pre><p>You can also disable autopatch entirely for a few select
-projects using the <code class="literal">NO_AUTOPATCH</code> variable:</p><pre class="programlisting">NO_AUTOPATCH = cowboy ranch cowlib</pre></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_skipping_deps"></a>7.9. Skipping deps</h2></div></div></div><p>It is possible to temporarily skip all dependency operations.
+projects using the <code class="literal">NO_AUTOPATCH</code> variable:</p><pre class="programlisting">NO_AUTOPATCH = cowboy ranch cowlib</pre></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_skipping_deps"></a>7.10. Skipping deps</h2></div></div></div><p>It is possible to temporarily skip all dependency operations.
This is done by defining the <code class="literal">SKIP_DEPS</code> variable. Use cases
include being somewhere with no connection to download them,
or perhaps a peculiar setup.</p><p>A typical usage would be:</p><pre class="programlisting">$ make SKIP_DEPS=1</pre><p>When the variable is defined:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
diff --git a/guide/index.html b/guide/index.html
index c15da28..9970f89 100644
--- a/guide/index.html
+++ b/guide/index.html
@@ -33,7 +33,7 @@ div.navfooter{margin-bottom:1em}
</header>
<main>
-<div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="installation.html">Next</a></td></tr></table><hr /></div><div xml:lang="en" class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="idm140397288079488"></a>Erlang.mk User Guide</h1></div><div><div class="author"><h3 class="author"><span class="firstname">Loïc</span> <span class="surname">Hoguin</span></h3><code class="email">&lt;<a class="email" href="mailto:[email protected]">[email protected]</a>&gt;</code></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="installation.html">1. Installation</a></span></dt><dd><dl><dt><span class="section"><a href="installation.html#_on_unix">1.1. On Unix</a></span></dt><dt><span class="section"><a href="installation.html#_on_windows">1.2. On Windows</a></span></dt></dl></dd><dt><span class="chapter"><a href="getting_started.html">2. Getting started</a></span></dt><dd><dl><dt><span class="section"><a href="getting_started.html#_creating_a_folder_for_your_project">2.1. Creating a folder for your project</a></span></dt><dt><span class="section"><a href="getting_started.html#_downloading_erlang_mk">2.2. Downloading Erlang.mk</a></span></dt><dt><span class="section"><a href="getting_started.html#_getting_started_with_otp_applications">2.3. Getting started with OTP applications</a></span></dt><dt><span class="section"><a href="getting_started.html#_getting_started_with_otp_libraries">2.4. Getting started with OTP libraries</a></span></dt><dt><span class="section"><a href="getting_started.html#_getting_started_with_otp_releases">2.5. Getting started with OTP releases</a></span></dt><dt><span class="section"><a href="getting_started.html#_getting_started_from_scratch">2.6. Getting started from scratch</a></span></dt><dt><span class="section"><a href="getting_started.html#_using_spaces_instead_of_tabs">2.7. Using spaces instead of tabs</a></span></dt><dt><span class="section"><a href="getting_started.html#_using_templates">2.8. Using templates</a></span></dt><dt><span class="section"><a href="getting_started.html#_hiding_erlang_mk_from_git">2.9. Hiding Erlang.mk from git</a></span></dt><dt><span class="section"><a href="getting_started.html#_getting_help">2.10. Getting help</a></span></dt></dl></dd><dt><span class="chapter"><a href="overview.html">3. Overview</a></span></dt><dd><dl><dt><span class="section"><a href="overview.html#_building_your_project">3.1. Building your project</a></span></dt><dt><span class="section"><a href="overview.html#_exploring_the_package_index">3.2. Exploring the package index</a></span></dt><dt><span class="section"><a href="overview.html#_generating_documentation">3.3. Generating documentation</a></span></dt><dt><span class="section"><a href="overview.html#_running_tests">3.4. Running tests</a></span></dt><dt><span class="section"><a href="overview.html#_need_more">3.5. Need more?</a></span></dt></dl></dd><dt><span class="chapter"><a href="updating.html">4. Updating Erlang.mk</a></span></dt><dd><dl><dt><span class="section"><a href="updating.html#_initial_bootstrap">4.1. Initial bootstrap</a></span></dt><dt><span class="section"><a href="updating.html#_updating">4.2. Updating</a></span></dt><dt><span class="section"><a href="updating.html#_customizing_the_build">4.3. Customizing the build</a></span></dt></dl></dd><dt><span class="chapter"><a href="limitations.html">5. Limitations</a></span></dt><dd><dl><dt><span class="section"><a href="limitations.html#_erlang_must_be_available">5.1. Erlang must be available</a></span></dt><dt><span class="section"><a href="limitations.html#_spaces_in_path">5.2. Spaces in path</a></span></dt><dt><span class="section"><a href="limitations.html#_dependency_tracking_and_modification_times">5.3. Dependency tracking and modification times</a></span></dt></dl></dd><dt><span class="part"><a href="code.html">I. Code</a></span></dt><dd><dl><dt><span class="chapter"><a href="building.html">6. Building</a></span></dt><dd><dl><dt><span class="section"><a href="building.html#_how_to_build">6.1. How to build</a></span></dt><dt><span class="section"><a href="building.html#_what_to_build">6.2. What to build</a></span></dt><dt><span class="section"><a href="building.html#_application_resource_file">6.3. Application resource file</a></span></dt><dt><span class="section"><a href="building.html#_automatic_application_resource_file_values">6.4. Automatic application resource file values</a></span></dt><dt><span class="section"><a href="building.html#_file_formats">6.5. File formats</a></span></dt><dt><span class="section"><a href="building.html#_compilation_options">6.6. Compilation options</a></span></dt><dt><span class="section"><a href="building.html#_cold_and_hot_builds">6.7. Cold and hot builds</a></span></dt><dt><span class="section"><a href="building.html#_dependency_tracking">6.8. Dependency tracking</a></span></dt><dt><span class="section"><a href="building.html#_generating_erlang_source">6.9. Generating Erlang source</a></span></dt><dt><span class="section"><a href="building.html#_cleaning">6.10. Cleaning</a></span></dt></dl></dd><dt><span class="chapter"><a href="deps.html">7. Packages and dependencies</a></span></dt><dd><dl><dt><span class="section"><a href="deps.html#_searching_packages">7.1. Searching packages</a></span></dt><dt><span class="section"><a href="deps.html#_adding_dependencies_to_your_project">7.2. Adding dependencies to your project</a></span></dt><dt><span class="section"><a href="deps.html#_how_deps_are_fetched_and_built">7.3. How deps are fetched and built</a></span></dt><dt><span class="section"><a href="deps.html#_ignoring_unwanted_dependencies">7.4. Ignoring unwanted dependencies</a></span></dt><dt><span class="section"><a href="deps.html#_dependencies_directory">7.5. Dependencies directory</a></span></dt><dt><span class="section"><a href="deps.html#_many_applications_in_one_repository">7.6. Many applications in one repository</a></span></dt><dt><span class="section"><a href="deps.html#_repositories_with_no_application_at_the_root_level">7.7. Repositories with no application at the root level</a></span></dt><dt><span class="section"><a href="deps.html#_autopatch">7.8. Autopatch</a></span></dt><dt><span class="section"><a href="deps.html#_skipping_deps">7.9. Skipping deps</a></span></dt></dl></dd><dt><span class="chapter"><a href="ports.html">8. NIFs and port drivers</a></span></dt><dd><dl><dt><span class="section"><a href="ports.html#_c_source_code_location_and_erlang_environment">8.1. C source code location and Erlang environment</a></span></dt><dt><span class="section"><a href="ports.html#_using_a_custom_makefile">8.2. Using a custom Makefile</a></span></dt><dt><span class="section"><a href="ports.html#_using_erlang_mk_directly">8.3. Using Erlang.mk directly</a></span></dt></dl></dd><dt><span class="chapter"><a href="relx.html">9. Releases</a></span></dt><dd><dl><dt><span class="section"><a href="relx.html#_setup">9.1. Setup</a></span></dt><dt><span class="section"><a href="relx.html#_configuration">9.2. Configuration</a></span></dt><dt><span class="section"><a href="relx.html#_generating_the_release">9.3. Generating the release</a></span></dt><dt><span class="section"><a href="relx.html#_running_the_release">9.4. Running the release</a></span></dt></dl></dd><dt><span class="chapter"><a href="escript.html">10. Escripts</a></span></dt><dt><span class="chapter"><a href="compat.html">11. Compatibility with other build tools</a></span></dt><dd><dl><dt><span class="section"><a href="compat.html#_rebar_projects_as_erlang_mk_dependencies">11.1. Rebar projects as Erlang.mk dependencies</a></span></dt><dt><span class="section"><a href="compat.html#_erlang_mk_projects_as_rebar_dependencies">11.2. Erlang.mk projects as Rebar dependencies</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="docs.html">II. Documentation</a></span></dt><dd><dl><dt><span class="chapter"><a href="asciidoc.html">12. AsciiDoc documentation</a></span></dt><dd><dl><dt><span class="section"><a href="asciidoc.html#_requirements">12.1. Requirements</a></span></dt><dt><span class="section"><a href="asciidoc.html#_writing_asciidoc_documentation">12.2. Writing AsciiDoc documentation</a></span></dt><dt><span class="section"><a href="asciidoc.html#_configuration_2">12.3. Configuration</a></span></dt><dt><span class="section"><a href="asciidoc.html#_usage">12.4. Usage</a></span></dt></dl></dd><dt><span class="chapter"><a href="edoc.html">13. EDoc comments</a></span></dt><dd><dl><dt><span class="section"><a href="edoc.html#_writing_edoc_comments">13.1. Writing EDoc comments</a></span></dt><dt><span class="section"><a href="edoc.html#_configuration_3">13.2. Configuration</a></span></dt><dt><span class="section"><a href="edoc.html#_usage_2">13.3. Usage</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="tests.html">III. Tests</a></span></dt><dd><dl><dt><span class="chapter"><a href="shell.html">14. Erlang shell</a></span></dt><dd><dl><dt><span class="section"><a href="shell.html#_configuration_4">14.1. Configuration</a></span></dt><dt><span class="section"><a href="shell.html#_usage_3">14.2. Usage</a></span></dt></dl></dd><dt><span class="chapter"><a href="eunit.html">15. EUnit</a></span></dt><dd><dl><dt><span class="section"><a href="eunit.html#_writing_tests">15.1. Writing tests</a></span></dt><dt><span class="section"><a href="eunit.html#_configuration_5">15.2. Configuration</a></span></dt><dt><span class="section"><a href="eunit.html#_usage_4">15.3. Usage</a></span></dt></dl></dd><dt><span class="chapter"><a href="ct.html">16. Common Test</a></span></dt><dd><dl><dt><span class="section"><a href="ct.html#_writing_tests_2">16.1. Writing tests</a></span></dt><dt><span class="section"><a href="ct.html#_configuration_6">16.2. Configuration</a></span></dt><dt><span class="section"><a href="ct.html#_usage_5">16.3. Usage</a></span></dt></dl></dd><dt><span class="chapter"><a href="coverage.html">17. Code coverage</a></span></dt><dt><span class="chapter"><a href="ci.html">18. Continuous integration</a></span></dt><dt><span class="chapter"><a href="dialyzer.html">19. Dialyzer</a></span></dt><dd><dl><dt><span class="section"><a href="dialyzer.html#_how_it_works">19.1. How it works</a></span></dt><dt><span class="section"><a href="dialyzer.html#_configuration_7">19.2. Configuration</a></span></dt><dt><span class="section"><a href="dialyzer.html#_usage_6">19.3. Usage</a></span></dt></dl></dd><dt><span class="chapter"><a href="xref.html">20. Xref</a></span></dt></dl></dd><dt><span class="part"><a href="plugins.html">IV. Third-party plugins</a></span></dt><dd><dl><dt><span class="chapter"><a href="plugins_usage.html">21. External plugins</a></span></dt><dd><dl><dt><span class="section"><a href="plugins_usage.html#_loading_all_plugins_from_a_dependency">21.1. Loading all plugins from a dependency</a></span></dt><dt><span class="section"><a href="plugins_usage.html#_loading_one_plugin_from_a_dependency">21.2. Loading one plugin from a dependency</a></span></dt><dt><span class="section"><a href="plugins_usage.html#_writing_external_plugins">21.3. Writing external plugins</a></span></dt></dl></dd><dt><span class="chapter"><a href="plugins_list.html">22. List of plugins</a></span></dt><dd><dl><dt><span class="section"><a href="plugins_list.html#_efene_mk">22.1. efene.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_elixir_mk">22.2. elixir.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_elvis_mk">22.3. elvis.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_geas">22.4. geas</a></span></dt><dt><span class="section"><a href="plugins_list.html#_hexer_mk">22.5. hexer.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_hexpm_mk">22.6. hexpm.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_jorel">22.7. jorel</a></span></dt><dt><span class="section"><a href="plugins_list.html#_lfe_mk">22.8. lfe.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_mix_mk">22.9. mix.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_reload_mk">22.10. reload.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_rust_mk">22.11. rust.mk</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="about.html">V. About Erlang.mk</a></span></dt><dd><dl><dt><span class="chapter"><a href="why.html">23. Why Erlang.mk</a></span></dt><dd><dl><dt><span class="section"><a href="why.html#_erlang_mk_is_fast">23.1. Erlang.mk is fast</a></span></dt><dt><span class="section"><a href="why.html#_erlang_mk_gives_you_the_full_power_of_unix">23.2. Erlang.mk gives you the full power of Unix</a></span></dt><dt><span class="section"><a href="why.html#_erlang_mk_is_a_text_file">23.3. Erlang.mk is a text file</a></span></dt><dt><span class="section"><a href="why.html#_erlang_mk_can_manage_erlang_itself">23.4. Erlang.mk can manage Erlang itself</a></span></dt><dt><span class="section"><a href="why.html#_erlang_mk_can_do_more_than_erlang">23.5. Erlang.mk can do more than Erlang</a></span></dt><dt><span class="section"><a href="why.html#_erlang_mk_integrates_nicely_in_make_and_automake_projects">23.6. Erlang.mk integrates nicely in Make and Automake projects</a></span></dt></dl></dd><dt><span class="chapter"><a href="history.html">24. Short history</a></span></dt><dd><dl><dt><span class="section"><a href="history.html#_before_erlang_mk">24.1. Before Erlang.mk</a></span></dt><dt><span class="section"><a href="history.html#_lifetime_of_the_project">24.2. Lifetime of the project</a></span></dt></dl></dd><dt><span class="chapter"><a href="contributing.html">25. Contributing</a></span></dt><dd><dl><dt><span class="section"><a href="contributing.html#_priorities">25.1. Priorities</a></span></dt><dt><span class="section"><a href="contributing.html#_bugs">25.2. Bugs</a></span></dt><dt><span class="section"><a href="contributing.html#_code">25.3. Code</a></span></dt><dt><span class="section"><a href="contributing.html#_packages">25.4. Packages</a></span></dt><dt><span class="section"><a href="contributing.html#_documentation">25.5. Documentation</a></span></dt><dt><span class="section"><a href="contributing.html#_feature_requests">25.6. Feature requests</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="installation.html">Next</a></td></tr></table></div>
+<div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="installation.html">Next</a></td></tr></table><hr /></div><div xml:lang="en" class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="idm139701093606384"></a>Erlang.mk User Guide</h1></div><div><div class="author"><h3 class="author"><span class="firstname">Loïc</span> <span class="surname">Hoguin</span></h3><code class="email">&lt;<a class="email" href="mailto:[email protected]">[email protected]</a>&gt;</code></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="installation.html">1. Installation</a></span></dt><dd><dl><dt><span class="section"><a href="installation.html#_on_unix">1.1. On Unix</a></span></dt><dt><span class="section"><a href="installation.html#_on_windows">1.2. On Windows</a></span></dt></dl></dd><dt><span class="chapter"><a href="getting_started.html">2. Getting started</a></span></dt><dd><dl><dt><span class="section"><a href="getting_started.html#_creating_a_folder_for_your_project">2.1. Creating a folder for your project</a></span></dt><dt><span class="section"><a href="getting_started.html#_downloading_erlang_mk">2.2. Downloading Erlang.mk</a></span></dt><dt><span class="section"><a href="getting_started.html#_getting_started_with_otp_applications">2.3. Getting started with OTP applications</a></span></dt><dt><span class="section"><a href="getting_started.html#_getting_started_with_otp_libraries">2.4. Getting started with OTP libraries</a></span></dt><dt><span class="section"><a href="getting_started.html#_getting_started_with_otp_releases">2.5. Getting started with OTP releases</a></span></dt><dt><span class="section"><a href="getting_started.html#_getting_started_from_scratch">2.6. Getting started from scratch</a></span></dt><dt><span class="section"><a href="getting_started.html#_using_spaces_instead_of_tabs">2.7. Using spaces instead of tabs</a></span></dt><dt><span class="section"><a href="getting_started.html#_using_templates">2.8. Using templates</a></span></dt><dt><span class="section"><a href="getting_started.html#_hiding_erlang_mk_from_git">2.9. Hiding Erlang.mk from git</a></span></dt><dt><span class="section"><a href="getting_started.html#_getting_help">2.10. Getting help</a></span></dt></dl></dd><dt><span class="chapter"><a href="overview.html">3. Overview</a></span></dt><dd><dl><dt><span class="section"><a href="overview.html#_building_your_project">3.1. Building your project</a></span></dt><dt><span class="section"><a href="overview.html#_exploring_the_package_index">3.2. Exploring the package index</a></span></dt><dt><span class="section"><a href="overview.html#_generating_documentation">3.3. Generating documentation</a></span></dt><dt><span class="section"><a href="overview.html#_running_tests">3.4. Running tests</a></span></dt><dt><span class="section"><a href="overview.html#_need_more">3.5. Need more?</a></span></dt></dl></dd><dt><span class="chapter"><a href="updating.html">4. Updating Erlang.mk</a></span></dt><dd><dl><dt><span class="section"><a href="updating.html#_initial_bootstrap">4.1. Initial bootstrap</a></span></dt><dt><span class="section"><a href="updating.html#_updating">4.2. Updating</a></span></dt><dt><span class="section"><a href="updating.html#_customizing_the_build">4.3. Customizing the build</a></span></dt></dl></dd><dt><span class="chapter"><a href="limitations.html">5. Limitations</a></span></dt><dd><dl><dt><span class="section"><a href="limitations.html#_erlang_must_be_available">5.1. Erlang must be available</a></span></dt><dt><span class="section"><a href="limitations.html#_spaces_in_path">5.2. Spaces in path</a></span></dt><dt><span class="section"><a href="limitations.html#_dependency_tracking_and_modification_times">5.3. Dependency tracking and modification times</a></span></dt></dl></dd><dt><span class="part"><a href="code.html">I. Code</a></span></dt><dd><dl><dt><span class="chapter"><a href="building.html">6. Building</a></span></dt><dd><dl><dt><span class="section"><a href="building.html#_how_to_build">6.1. How to build</a></span></dt><dt><span class="section"><a href="building.html#_what_to_build">6.2. What to build</a></span></dt><dt><span class="section"><a href="building.html#_application_resource_file">6.3. Application resource file</a></span></dt><dt><span class="section"><a href="building.html#_automatic_application_resource_file_values">6.4. Automatic application resource file values</a></span></dt><dt><span class="section"><a href="building.html#_file_formats">6.5. File formats</a></span></dt><dt><span class="section"><a href="building.html#_compilation_options">6.6. Compilation options</a></span></dt><dt><span class="section"><a href="building.html#_cold_and_hot_builds">6.7. Cold and hot builds</a></span></dt><dt><span class="section"><a href="building.html#_dependency_tracking">6.8. Dependency tracking</a></span></dt><dt><span class="section"><a href="building.html#_generating_erlang_source">6.9. Generating Erlang source</a></span></dt><dt><span class="section"><a href="building.html#_cleaning">6.10. Cleaning</a></span></dt></dl></dd><dt><span class="chapter"><a href="deps.html">7. Packages and dependencies</a></span></dt><dd><dl><dt><span class="section"><a href="deps.html#_searching_packages">7.1. Searching packages</a></span></dt><dt><span class="section"><a href="deps.html#_adding_dependencies_to_your_project">7.2. Adding dependencies to your project</a></span></dt><dt><span class="section"><a href="deps.html#_how_deps_are_fetched_and_built">7.3. How deps are fetched and built</a></span></dt><dt><span class="section"><a href="deps.html#_fetching_and_listing_dependencies_only">7.4. Fetching and listing dependencies only</a></span></dt><dt><span class="section"><a href="deps.html#_ignoring_unwanted_dependencies">7.5. Ignoring unwanted dependencies</a></span></dt><dt><span class="section"><a href="deps.html#_dependencies_directory">7.6. Dependencies directory</a></span></dt><dt><span class="section"><a href="deps.html#_many_applications_in_one_repository">7.7. Many applications in one repository</a></span></dt><dt><span class="section"><a href="deps.html#_repositories_with_no_application_at_the_root_level">7.8. Repositories with no application at the root level</a></span></dt><dt><span class="section"><a href="deps.html#_autopatch">7.9. Autopatch</a></span></dt><dt><span class="section"><a href="deps.html#_skipping_deps">7.10. Skipping deps</a></span></dt></dl></dd><dt><span class="chapter"><a href="ports.html">8. NIFs and port drivers</a></span></dt><dd><dl><dt><span class="section"><a href="ports.html#_c_source_code_location_and_erlang_environment">8.1. C source code location and Erlang environment</a></span></dt><dt><span class="section"><a href="ports.html#_using_a_custom_makefile">8.2. Using a custom Makefile</a></span></dt><dt><span class="section"><a href="ports.html#_using_erlang_mk_directly">8.3. Using Erlang.mk directly</a></span></dt></dl></dd><dt><span class="chapter"><a href="relx.html">9. Releases</a></span></dt><dd><dl><dt><span class="section"><a href="relx.html#_setup">9.1. Setup</a></span></dt><dt><span class="section"><a href="relx.html#_configuration">9.2. Configuration</a></span></dt><dt><span class="section"><a href="relx.html#_generating_the_release">9.3. Generating the release</a></span></dt><dt><span class="section"><a href="relx.html#_running_the_release">9.4. Running the release</a></span></dt></dl></dd><dt><span class="chapter"><a href="escript.html">10. Escripts</a></span></dt><dt><span class="chapter"><a href="compat.html">11. Compatibility with other build tools</a></span></dt><dd><dl><dt><span class="section"><a href="compat.html#_rebar_projects_as_erlang_mk_dependencies">11.1. Rebar projects as Erlang.mk dependencies</a></span></dt><dt><span class="section"><a href="compat.html#_erlang_mk_projects_as_rebar_dependencies">11.2. Erlang.mk projects as Rebar dependencies</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="docs.html">II. Documentation</a></span></dt><dd><dl><dt><span class="chapter"><a href="asciidoc.html">12. AsciiDoc documentation</a></span></dt><dd><dl><dt><span class="section"><a href="asciidoc.html#_requirements">12.1. Requirements</a></span></dt><dt><span class="section"><a href="asciidoc.html#_writing_asciidoc_documentation">12.2. Writing AsciiDoc documentation</a></span></dt><dt><span class="section"><a href="asciidoc.html#_configuration_2">12.3. Configuration</a></span></dt><dt><span class="section"><a href="asciidoc.html#_usage">12.4. Usage</a></span></dt></dl></dd><dt><span class="chapter"><a href="edoc.html">13. EDoc comments</a></span></dt><dd><dl><dt><span class="section"><a href="edoc.html#_writing_edoc_comments">13.1. Writing EDoc comments</a></span></dt><dt><span class="section"><a href="edoc.html#_configuration_3">13.2. Configuration</a></span></dt><dt><span class="section"><a href="edoc.html#_usage_2">13.3. Usage</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="tests.html">III. Tests</a></span></dt><dd><dl><dt><span class="chapter"><a href="shell.html">14. Erlang shell</a></span></dt><dd><dl><dt><span class="section"><a href="shell.html#_configuration_4">14.1. Configuration</a></span></dt><dt><span class="section"><a href="shell.html#_usage_3">14.2. Usage</a></span></dt></dl></dd><dt><span class="chapter"><a href="eunit.html">15. EUnit</a></span></dt><dd><dl><dt><span class="section"><a href="eunit.html#_writing_tests">15.1. Writing tests</a></span></dt><dt><span class="section"><a href="eunit.html#_configuration_5">15.2. Configuration</a></span></dt><dt><span class="section"><a href="eunit.html#_usage_4">15.3. Usage</a></span></dt></dl></dd><dt><span class="chapter"><a href="ct.html">16. Common Test</a></span></dt><dd><dl><dt><span class="section"><a href="ct.html#_writing_tests_2">16.1. Writing tests</a></span></dt><dt><span class="section"><a href="ct.html#_configuration_6">16.2. Configuration</a></span></dt><dt><span class="section"><a href="ct.html#_usage_5">16.3. Usage</a></span></dt></dl></dd><dt><span class="chapter"><a href="coverage.html">17. Code coverage</a></span></dt><dt><span class="chapter"><a href="ci.html">18. Continuous integration</a></span></dt><dt><span class="chapter"><a href="dialyzer.html">19. Dialyzer</a></span></dt><dd><dl><dt><span class="section"><a href="dialyzer.html#_how_it_works">19.1. How it works</a></span></dt><dt><span class="section"><a href="dialyzer.html#_configuration_7">19.2. Configuration</a></span></dt><dt><span class="section"><a href="dialyzer.html#_usage_6">19.3. Usage</a></span></dt></dl></dd><dt><span class="chapter"><a href="xref.html">20. Xref</a></span></dt></dl></dd><dt><span class="part"><a href="plugins.html">IV. Third-party plugins</a></span></dt><dd><dl><dt><span class="chapter"><a href="plugins_usage.html">21. External plugins</a></span></dt><dd><dl><dt><span class="section"><a href="plugins_usage.html#_loading_all_plugins_from_a_dependency">21.1. Loading all plugins from a dependency</a></span></dt><dt><span class="section"><a href="plugins_usage.html#_loading_one_plugin_from_a_dependency">21.2. Loading one plugin from a dependency</a></span></dt><dt><span class="section"><a href="plugins_usage.html#_writing_external_plugins">21.3. Writing external plugins</a></span></dt></dl></dd><dt><span class="chapter"><a href="plugins_list.html">22. List of plugins</a></span></dt><dd><dl><dt><span class="section"><a href="plugins_list.html#_efene_mk">22.1. efene.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_elixir_mk">22.2. elixir.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_elvis_mk">22.3. elvis.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_geas">22.4. geas</a></span></dt><dt><span class="section"><a href="plugins_list.html#_hexer_mk">22.5. hexer.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_hexpm_mk">22.6. hexpm.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_jorel">22.7. jorel</a></span></dt><dt><span class="section"><a href="plugins_list.html#_lfe_mk">22.8. lfe.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_mix_mk">22.9. mix.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_reload_mk">22.10. reload.mk</a></span></dt><dt><span class="section"><a href="plugins_list.html#_rust_mk">22.11. rust.mk</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="about.html">V. About Erlang.mk</a></span></dt><dd><dl><dt><span class="chapter"><a href="why.html">23. Why Erlang.mk</a></span></dt><dd><dl><dt><span class="section"><a href="why.html#_erlang_mk_is_fast">23.1. Erlang.mk is fast</a></span></dt><dt><span class="section"><a href="why.html#_erlang_mk_gives_you_the_full_power_of_unix">23.2. Erlang.mk gives you the full power of Unix</a></span></dt><dt><span class="section"><a href="why.html#_erlang_mk_is_a_text_file">23.3. Erlang.mk is a text file</a></span></dt><dt><span class="section"><a href="why.html#_erlang_mk_can_manage_erlang_itself">23.4. Erlang.mk can manage Erlang itself</a></span></dt><dt><span class="section"><a href="why.html#_erlang_mk_can_do_more_than_erlang">23.5. Erlang.mk can do more than Erlang</a></span></dt><dt><span class="section"><a href="why.html#_erlang_mk_integrates_nicely_in_make_and_automake_projects">23.6. Erlang.mk integrates nicely in Make and Automake projects</a></span></dt></dl></dd><dt><span class="chapter"><a href="history.html">24. Short history</a></span></dt><dd><dl><dt><span class="section"><a href="history.html#_before_erlang_mk">24.1. Before Erlang.mk</a></span></dt><dt><span class="section"><a href="history.html#_lifetime_of_the_project">24.2. Lifetime of the project</a></span></dt></dl></dd><dt><span class="chapter"><a href="contributing.html">25. Contributing</a></span></dt><dd><dl><dt><span class="section"><a href="contributing.html#_priorities">25.1. Priorities</a></span></dt><dt><span class="section"><a href="contributing.html#_bugs">25.2. Bugs</a></span></dt><dt><span class="section"><a href="contributing.html#_code">25.3. Code</a></span></dt><dt><span class="section"><a href="contributing.html#_packages">25.4. Packages</a></span></dt><dt><span class="section"><a href="contributing.html#_documentation">25.5. Documentation</a></span></dt><dt><span class="section"><a href="contributing.html#_feature_requests">25.6. Feature requests</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="installation.html">Next</a></td></tr></table></div>
</main>
</body>
</html>
diff --git a/guide/installation.html b/guide/installation.html
index bc5efb3..4353914 100644
--- a/guide/installation.html
+++ b/guide/installation.html
@@ -41,7 +41,7 @@ installed, in order to compile Erlang/OTP. Erlang/OTP may
have further requirements depending on your needs.</p><p>Some packages may require additional libraries.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_linux"></a>1.1.1. Linux</h3></div></div></div><p>The commands to install packages vary between distributions:</p><p><strong>Arch Linux. </strong>
</p><pre class="programlisting">$ pacman -Sy erlang git make</pre><p>
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_freebsd"></a>1.1.2. FreeBSD</h3></div></div></div><p>FreeBSD comes with binary and source packages:</p><p><strong>Install binary packages. </strong>
-</p><pre class="programlisting">$ pkg install erl git gmake</pre><p>
+</p><pre class="programlisting">$ pkg install erlang git gmake</pre><p>
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_os_x_and_macos"></a>1.1.3. OS X and macOS</h3></div></div></div><p>While Apple distributes their own GNU Make, their version is
very old and plagued with numerous bugs. It is recommended
to install a more recent version from either Homebrew or