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.html2
-rw-r--r--docs/en/erlang.mk/1/guide/asciidoc/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/ci/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/common_test/index.html6
-rw-r--r--docs/en/erlang.mk/1/guide/compat/index.html6
-rw-r--r--docs/en/erlang.mk/1/guide/contributing/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/coverage.asciidoc60
-rw-r--r--docs/en/erlang.mk/1/guide/coverage/index.html48
-rw-r--r--docs/en/erlang.mk/1/guide/cross_compiling.asciidoc94
-rw-r--r--docs/en/erlang.mk/1/guide/cross_compiling/index.html224
-rw-r--r--docs/en/erlang.mk/1/guide/deps.asciidoc59
-rw-r--r--docs/en/erlang.mk/1/guide/deps/index.html36
-rw-r--r--docs/en/erlang.mk/1/guide/dialyzer.asciidoc13
-rw-r--r--docs/en/erlang.mk/1/guide/dialyzer/index.html11
-rw-r--r--docs/en/erlang.mk/1/guide/edoc/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/escripts/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/eunit/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/external_plugins.asciidoc9
-rw-r--r--docs/en/erlang.mk/1/guide/external_plugins/index.html10
-rw-r--r--docs/en/erlang.mk/1/guide/external_plugins_list.asciidoc9
-rw-r--r--docs/en/erlang.mk/1/guide/external_plugins_list/index.html6
-rw-r--r--docs/en/erlang.mk/1/guide/getting_started/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/history/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/index.html6
-rw-r--r--docs/en/erlang.mk/1/guide/installation/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/kerl/index.html6
-rw-r--r--docs/en/erlang.mk/1/guide/limitations/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/overview/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/ports/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/proper.asciidoc31
-rw-r--r--docs/en/erlang.mk/1/guide/proper/index.html187
-rw-r--r--docs/en/erlang.mk/1/guide/releases.asciidoc14
-rw-r--r--docs/en/erlang.mk/1/guide/releases/index.html13
-rw-r--r--docs/en/erlang.mk/1/guide/sfx/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/shell/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/sphinx/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/triq/index.html6
-rw-r--r--docs/en/erlang.mk/1/guide/updating/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/why/index.html2
-rw-r--r--docs/en/erlang.mk/1/guide/xref/index.html2
40 files changed, 844 insertions, 48 deletions
diff --git a/docs/en/erlang.mk/1/guide/app/index.html b/docs/en/erlang.mk/1/guide/app/index.html
index 205542e0..c3402b85 100644
--- a/docs/en/erlang.mk/1/guide/app/index.html
+++ b/docs/en/erlang.mk/1/guide/app/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Building</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/asciidoc/index.html b/docs/en/erlang.mk/1/guide/asciidoc/index.html
index 6e9a5508..15a4f465 100644
--- a/docs/en/erlang.mk/1/guide/asciidoc/index.html
+++ b/docs/en/erlang.mk/1/guide/asciidoc/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: AsciiDoc documentation</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/ci/index.html b/docs/en/erlang.mk/1/guide/ci/index.html
index 1996c25c..3acba54a 100644
--- a/docs/en/erlang.mk/1/guide/ci/index.html
+++ b/docs/en/erlang.mk/1/guide/ci/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Continuous integration</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
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 c50f40be..6caf5741 100644
--- a/docs/en/erlang.mk/1/guide/common_test/index.html
+++ b/docs/en/erlang.mk/1/guide/common_test/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Common Test</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
@@ -173,8 +173,8 @@ http://www.gnu.org/software/src-highlite -->
- <a style="float:right" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/triq/">
- Triq
+ <a style="float:right" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/proper/">
+ PropEr
</a>
</nav>
diff --git a/docs/en/erlang.mk/1/guide/compat/index.html b/docs/en/erlang.mk/1/guide/compat/index.html
index eb174279..b2d17ddf 100644
--- a/docs/en/erlang.mk/1/guide/compat/index.html
+++ b/docs/en/erlang.mk/1/guide/compat/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Compatibility with other build tools</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
@@ -107,8 +107,8 @@ http://www.gnu.org/software/src-highlite -->
<nav style="margin:1em 0">
- <a style="float:left" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/kerl/">
- OTP version management
+ <a style="float:left" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/cross_compiling/">
+ Cross compiling
</a>
diff --git a/docs/en/erlang.mk/1/guide/contributing/index.html b/docs/en/erlang.mk/1/guide/contributing/index.html
index c4a4b096..32e80dfe 100644
--- a/docs/en/erlang.mk/1/guide/contributing/index.html
+++ b/docs/en/erlang.mk/1/guide/contributing/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Contributing</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/coverage.asciidoc b/docs/en/erlang.mk/1/guide/coverage.asciidoc
index f33f8783..02f8b5b9 100644
--- a/docs/en/erlang.mk/1/guide/coverage.asciidoc
+++ b/docs/en/erlang.mk/1/guide/coverage.asciidoc
@@ -1,6 +1,62 @@
[[coverage]]
== Code coverage
-// @todo Write it.
+Erlang.mk provides support for code coverage via the tool
+`cover` that comes with Erlang/OTP. Code coverage lets you
+see what parts of your code are covered by the tests.
-Placeholder chapter.
+=== Enabling cover when running tests
+
+To run tests with code coverage enabled, simply define
+`COVER=1` either on the command line or in your Makefile:
+
+[source,bash]
+$ make tests COVER=1
+
+When running the targets `tests` or `check` the code
+coverage report will be built automatically. This is
+not the case for test framework specific targets,
+however. In those cases you can generate the reports
+manually:
+
+[source,bash]
+$ make eunit proper COVER=1
+$ make cover-report
+
+Note that Common Test has some support for `cover`
+built-in and that it will generate code coverage
+reports in the Common Test logs regardless. The
+report that Erlang.mk generates is however common
+to all test frameworks and might be more useful.
+
+=== Adding applications to the cover report
+
+By default Erlang.mk will include all the applications
+in the code coverage report, except external dependencies.
+
+To include some dependencies in the report, you can
+define the `COVER_DEPS` variable:
+
+[source,make]
+COVER_DEPS = cowlib
+
+When using multi application repositories you can exclude
+some applications by defining the `COVER_APPS` variable:
+
+[source,make]
+COVER_APPS = presence backend
+
+=== Configuring paths
+
+By default Erlang.mk will store 'coverdata' files and
+code coverage reports under the 'cover/' directory. The
+variables `COVER_DATA_DIR` and `COVER_REPORT_DIR` can be
+set to use a different location.
+
+=== Merging coverdata files
+
+The target `all.coverdata` will take all existing
+'coverdata' files and merge them into one:
+
+[source,bash]
+$ make all.coverdata
diff --git a/docs/en/erlang.mk/1/guide/coverage/index.html b/docs/en/erlang.mk/1/guide/coverage/index.html
index 2065dfab..dc452960 100644
--- a/docs/en/erlang.mk/1/guide/coverage/index.html
+++ b/docs/en/erlang.mk/1/guide/coverage/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Code coverage</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
@@ -62,8 +62,50 @@
<h1 class="lined-header"><span>Code coverage</span></h1>
-<!-- @todo Write it.-->
-<p>Placeholder chapter.</p>
+<p>Erlang.mk provides support for code coverage via the tool <code>cover</code> that comes with Erlang/OTP. Code coverage lets you see what parts of your code are covered by the tests.</p>
+<h2 id="_enabling_cover_when_running_tests">Enabling cover when running tests</h2>
+<p>To run tests with code coverage enabled, simply define <code>COVER=1</code> either on the command line or in your Makefile:</p>
+<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 tests <font color="#009900">COVER</font><font color="#990000">=</font><font color="#993399">1</font></tt></pre>
+</div></div>
+<p>When running the targets <code>tests</code> or <code>check</code> the code coverage report will be built automatically. This is not the case for test framework specific targets, however. In those cases you can generate the reports manually:</p>
+<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 eunit proper <font color="#009900">COVER</font><font color="#990000">=</font><font color="#993399">1</font>
+$ make cover-report</tt></pre>
+</div></div>
+<p>Note that Common Test has some support for <code>cover</code> built-in and that it will generate code coverage reports in the Common Test logs regardless. The report that Erlang.mk generates is however common to all test frameworks and might be more useful.</p>
+<h2 id="_adding_applications_to_the_cover_report">Adding applications to the cover report</h2>
+<p>By default Erlang.mk will include all the applications in the code coverage report, except external dependencies.</p>
+<p>To include some dependencies in the report, you can define the <code>COVER_DEPS</code> variable:</p>
+<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><font color="#009900">COVER_DEPS =</font> cowlib</tt></pre>
+</div></div>
+<p>When using multi application repositories you can exclude some applications by defining the <code>COVER_APPS</code> variable:</p>
+<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><font color="#009900">COVER_APPS =</font> presence backend</tt></pre>
+</div></div>
+<h2 id="_configuring_paths">Configuring paths</h2>
+<p>By default Erlang.mk will store <em>coverdata</em> files and code coverage reports under the <em>cover/</em> directory. The variables <code>COVER_DATA_DIR</code> and <code>COVER_REPORT_DIR</code> can be set to use a different location.</p>
+<h2 id="_merging_coverdata_files">Merging coverdata files</h2>
+<p>The target <code>all.coverdata</code> will take all existing <em>coverdata</em> files and merge them into one:</p>
+<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 all<font color="#990000">.</font>coverdata</tt></pre>
+</div></div>
diff --git a/docs/en/erlang.mk/1/guide/cross_compiling.asciidoc b/docs/en/erlang.mk/1/guide/cross_compiling.asciidoc
new file mode 100644
index 00000000..23e14b95
--- /dev/null
+++ b/docs/en/erlang.mk/1/guide/cross_compiling.asciidoc
@@ -0,0 +1,94 @@
+[[cross_compiling]]
+== Cross compiling
+
+Erlang.mk supports cross-compiling. While the compiled
+Erlang code is portable as-is, the C code is not and
+releases need to use the correct runtime system for the
+target environment.
+
+There are therefore two steps that might require some
+intervention: compiling and building the release. If
+you do not have any C code you can just compile as you
+would normally, however.
+
+=== Compiling
+
+To cross-compile the C code you need a cross compiler. If you
+were to target Windows from an Arch Linux machine you would
+install the https://aur.archlinux.org/packages/mingw-w64-gcc/[mingw-w64-gcc]
+package. You would then need to define the `CC` environment
+variable to point to this compiler instead of the default:
+
+[source,bash]
+CC=/usr/bin/x86_64-w64-mingw32-gcc
+
+Additionally, on Windows the shared libraries use a different
+extension than on Linux, so it needs to be specified as well:
+
+[source,bash]
+C_SRC_OUTPUT_SHARED_EXTENSION=.dll
+
+These values can be added to the Makefile or given from the
+command line, for example:
+
+[source,bash]
+----
+$ CC=/usr/bin/x86_64-w64-mingw32-gcc C_SRC_OUTPUT_SHARED_EXTENSION=.dll make
+ DEPEND my_nif.d
+ ERLC my_nif.erl
+ APP my_nif
+ C my_nif.c
+ LD my_nif.dll
+$ file priv/my_nif.dll
+priv/my_nif.dll: PE32+ executable (DLL) (console) x86-64, for MS Windows
+----
+
+You could also add this configuration to your Makefile hidden
+behind a flag:
+
+[source,make]
+----
+ifdef WINDOWS_BUILD
+CC = /usr/bin/x86_64-w64-mingw32-gcc
+C_SRC_OUTPUT_SHARED_EXTENSION = .dll
+endif
+----
+
+And then just compile like this:
+
+[source,bash]
+$ make WINDOWS_BUILD=1
+
+=== Building the release
+
+For the release there are two options. You can either include
+the correct runtime system directly in the release; or you
+can not include the runtime system in the release and instead
+let it use the one installed in the target environment.
+
+To include the target runtime system, add the `include_erts`
+tuple to your 'relx.config' file:
+
+[source,erlang]
+{include_erts, "/path/to/alternate/erlang"}.
+
+If you were to target Windows for example, you could copy
+the Erlang installation from the 'Program Files' directory
+and then configure 'relx.config' like this:
+
+[source,erlang]
+{include_erts, "/path/to/erl10.1"}.
+
+You need to make sure that the runtime system version you
+will use is capable of running the compiled Erlang code
+you used to build your project, otherwise it will fail
+to run.
+
+If you choose to not include the runtime system at all,
+configure 'relx.config' as follow:
+
+[source,erlang]
+{include_erts, false}.
+
+In that case the runtime system needs to be available
+in the `$PATH` of the target environment.
diff --git a/docs/en/erlang.mk/1/guide/cross_compiling/index.html b/docs/en/erlang.mk/1/guide/cross_compiling/index.html
new file mode 100644
index 00000000..b3e96443
--- /dev/null
+++ b/docs/en/erlang.mk/1/guide/cross_compiling/index.html
@@ -0,0 +1,224 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="">
+ <meta name="author" content="Loïc Hoguin based on a design from (Soft10) Pol Cámara">
+
+ <title>Nine Nines: Cross compiling</title>
+
+ <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
+ <link href="/css/99s.css?r=3" rel="stylesheet">
+
+ <link rel="shortcut icon" href="/img/ico/favicon.ico">
+ <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
+ <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png">
+ <link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png">
+
+
+</head>
+
+
+<body class="">
+ <header id="page-head">
+ <div id="topbar" class="container">
+ <div class="row">
+ <div class="span2">
+ <h1 id="logo"><a href="/" title="99s">99s</a></h1>
+ </div>
+ <div class="span10">
+
+ <div id="side-header">
+ <nav>
+ <ul>
+ <li><a title="Hear my thoughts" href="/articles">Articles</a></li>
+ <li><a title="Watch my talks" href="/talks">Talks</a></li>
+ <li class="active"><a title="Read the docs" href="/docs">Documentation</a></li>
+ <li><a title="Request my services" href="/services">Consulting & Training</a></li>
+ </ul>
+ </nav>
+ <ul id="social">
+ <li>
+ <a href="https://github.com/ninenines" title="Check my Github repositories"><img src="/img/ico_github.png" data-hover="/img/ico_github_alt.png" alt="Github"></a>
+ </li>
+ <li>
+ <a title="Contact me" href="mailto:[email protected]"><img src="/img/ico_mail.png" data-hover="/img/ico_mail_alt.png"></a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+</header>
+
+<div id="contents" class="two_col">
+<div class="container">
+<div class="row">
+<div id="docs" class="span9 maincol">
+
+<h1 class="lined-header"><span>Cross compiling</span></h1>
+
+<p>Erlang.mk supports cross-compiling. While the compiled Erlang code is portable as-is, the C code is not and releases need to use the correct runtime system for the target environment.</p>
+<p>There are therefore two steps that might require some intervention: compiling and building the release. If you do not have any C code you can just compile as you would normally, however.</p>
+<h2 id="_compiling">Compiling</h2>
+<p>To cross-compile the C code you need a cross compiler. If you were to target Windows from an Arch Linux machine you would install the <a href="https://aur.archlinux.org/packages/mingw-w64-gcc/">mingw-w64-gcc</a> package. You would then need to define the <code>CC</code> environment variable to point to this compiler instead of the default:</p>
+<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><font color="#009900">CC</font><font color="#990000">=</font>/usr/bin/x86_64-w<font color="#993399">64</font>-mingw<font color="#993399">32</font>-gcc</tt></pre>
+</div></div>
+<p>Additionally, on Windows the shared libraries use a different extension than on Linux, so it needs to be specified as well:</p>
+<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><font color="#009900">C_SRC_OUTPUT_SHARED_EXTENSION</font><font color="#990000">=.</font>dll</tt></pre>
+</div></div>
+<p>These values can be added to the Makefile or given from the command line, for example:</p>
+<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>$ <font color="#009900">CC</font><font color="#990000">=</font>/usr/bin/x86_64-w<font color="#993399">64</font>-mingw<font color="#993399">32</font>-gcc <font color="#009900">C_SRC_OUTPUT_SHARED_EXTENSION</font><font color="#990000">=.</font>dll make
+ DEPEND my_nif<font color="#990000">.</font>d
+ ERLC my_nif<font color="#990000">.</font>erl
+ APP my_nif
+ C my_nif<font color="#990000">.</font>c
+ LD my_nif<font color="#990000">.</font>dll
+$ file priv/my_nif<font color="#990000">.</font>dll
+priv/my_nif<font color="#990000">.</font>dll<font color="#990000">:</font> PE32<font color="#990000">+</font> executable <font color="#990000">(</font>DLL<font color="#990000">)</font> <font color="#990000">(</font>console<font color="#990000">)</font> x86-<font color="#993399">64</font><font color="#990000">,</font> <b><font color="#0000FF">for</font></b> MS Windows</tt></pre>
+</div></div>
+<p>You could also add this configuration to your Makefile hidden behind a flag:</p>
+<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>ifdef WINDOWS_BUILD
+<font color="#009900">CC =</font> /usr/bin/x86_64-w<font color="#993399">64</font>-mingw<font color="#993399">32</font>-gcc
+<font color="#009900">C_SRC_OUTPUT_SHARED_EXTENSION =</font> .dll
+endif</tt></pre>
+</div></div>
+<p>And then just compile like this:</p>
+<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 <font color="#009900">WINDOWS_BUILD</font><font color="#990000">=</font><font color="#993399">1</font></tt></pre>
+</div></div>
+<h2 id="_building_the_release">Building the release</h2>
+<p>For the release there are two options. You can either include the correct runtime system directly in the release; or you can not include the runtime system in the release and instead let it use the one installed in the target environment.</p>
+<p>To include the target runtime system, add the <code>include_erts</code> tuple to your <em>relx.config</em> file:</p>
+<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>{<font color="#FF6600">include_erts</font>, <font color="#FF0000">"/path/to/alternate/erlang"</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>If you were to target Windows for example, you could copy the Erlang installation from the <em>Program Files</em> directory and then configure <em>relx.config</em> like this:</p>
+<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>{<font color="#FF6600">include_erts</font>, <font color="#FF0000">"/path/to/erl10.1"</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>You need to make sure that the runtime system version you will use is capable of running the compiled Erlang code you used to build your project, otherwise it will fail to run.</p>
+<p>If you choose to not include the runtime system at all, configure <em>relx.config</em> as follow:</p>
+<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>{<font color="#FF6600">include_erts</font>, <font color="#000080">false</font>}<font color="#990000">.</font></tt></pre>
+</div></div>
+<p>In that case the runtime system needs to be available in the <code>$PATH</code> of the target environment.</p>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/kerl/">
+ OTP version management
+ </a>
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/compat/">
+ Compatibility with other build tools
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Erlang.mk
+ 1
+
+ User Guide
+</h3>
+
+<ul>
+
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/erlang.mk/1/guide">1</a></li>
+
+</ul>
+
+</div>
+</div>
+</div>
+</div>
+
+ <footer>
+ <div class="container">
+ <div class="row">
+ <div class="span6">
+ <p id="scroll-top"><a href="#">↑ Scroll to top</a></p>
+ <nav>
+ <ul>
+ <li><a href="mailto:[email protected]" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="span6 credits">
+ <p><img src="/img/footer_logo.png"></p>
+ <p>Copyright &copy; Loïc Hoguin 2012-2018</p>
+ </div>
+ </div>
+ </div>
+ </footer>
+
+
+ <script src="/js/custom.js"></script>
+ </body>
+</html>
+
+
diff --git a/docs/en/erlang.mk/1/guide/deps.asciidoc b/docs/en/erlang.mk/1/guide/deps.asciidoc
index 3ba7a398..913fa245 100644
--- a/docs/en/erlang.mk/1/guide/deps.asciidoc
+++ b/docs/en/erlang.mk/1/guide/deps.asciidoc
@@ -115,6 +115,14 @@ SHELL_DEPS = tddreloader
All these will be documented in more details in their respective
chapters.
+Note that these additional types of dependencies will only
+be fetched after normal dependencies by default. You can
+force a dependency to be downloaded first by extending the
+target `deps::` before including 'erlang.mk', for example:
+
+[source,make]
+deps:: $(CURDIR)/deps/triq
+
==== Modifying the dependency source or version
By default, Erlang.mk will look into its package index to
@@ -288,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,
@@ -476,11 +502,10 @@ performed:
* Run autopatch on the project
Autopatch first checks if there is any project-specific patch
-enabled. There are currently two: `RABBITMQ_CLIENT_PATCH` for
-the `amqp_client` dependency, and `RABBITMQ_SERVER_PATCH` for
-the `rabbit` dependency. These are needed only for RabbitMQ
-versions before 3.6.0 (assuming you are using upstream RabbitMQ,
-and not a fork).
+enabled. There are currently three: `RABBITMQ_CLIENT_PATCH` for
+the `amqp_client` dependency (before 3.6.0), `RABBITMQ_SERVER_PATCH`
+for the `rabbit` dependency (before 3.6.0) and `ELIXIR_PATCH`
+for the `elixir` dependency.
Otherwise, autopatch performs different operations depending
on the kind of project it finds the dependency to be.
@@ -503,6 +528,30 @@ empty Makefile generated, for compatibility purposes.
* Other projects with no Makefile are left untouched.
+You can add additional commands to be run immediately before
+or after autopatch is done by extending the target
+`autopatch-$(dep)::`, for example this would remove
+a module:
+
+[source,make]
+----
+autopatch-ranch::
+ rm -f $(DEPS_DIR)/ranch/src/ranch_proxy_header.erl
+----
+
+A common use case for this feature is to apply a PATCH
+file on the dependency immediately after fetching it.
+It can also be used to add compiler options, for example:
+
+[source,make]
+----
+autopatch-couchbeam::
+ printf "\nERLC_OPTS += -DWITH_JIFFY\n" >> $(DEPS_DIR)/couchbeam/Makefile
+----
+
+The commands will run before autopatch when the target is
+defined before including 'erlang.mk', and after otherwise.
+
You can disable the replacing of the 'erlang.mk' file by
defining the `NO_AUTOPATCH_ERLANG_MK` variable:
diff --git a/docs/en/erlang.mk/1/guide/deps/index.html b/docs/en/erlang.mk/1/guide/deps/index.html
index 11e9171f..4337ddf6 100644
--- a/docs/en/erlang.mk/1/guide/deps/index.html
+++ b/docs/en/erlang.mk/1/guide/deps/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Packages and dependencies</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
@@ -148,6 +148,11 @@ http://www.gnu.org/software/src-highlite -->
<pre><tt><font color="#009900">SHELL_DEPS =</font> tddreloader</tt></pre>
</div></div>
<p>All these will be documented in more details in their respective chapters.</p>
+<p>Note that these additional types of dependencies will only be fetched after normal dependencies by default. You can force a dependency to be downloaded first by extending the target <code>deps::</code> before including <em>erlang.mk</em>, for example:</p>
+<dl><dt>deps</dt>
+<dd><p>$(CURDIR)/deps/triq</p>
+</dd>
+</dl>
<h4 id="_modifying_the_dependency_source_or_version">Modifying the dependency source or version</h4>
<p>By default, Erlang.mk will look into its package index to find the project you are looking for, if you only provide its name. This is this case:</p>
<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8
@@ -305,6 +310,16 @@ endef</tt></pre>
<p>What about conflicts between the dependencies of different applications? Simple. Since builds are ordered, this means that the first version of an application that is fetched will be the one that wins.</p>
<p>This means that if project A depends on projects B and C, in this order, and that both B and C depend on a different version of D, it will always be B&apos;s version of D that wins, because we fetch the dependencies of B before fetching 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&apos;s version that wins, because we fetch all dependencies of A before fetching those from B or C.</p>
+<p>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:</p>
+<ul><li>The dependency directory is a symbolic link; the dependency will always be recompiled.
+</li>
+<li>The dependency is built directly, for example with a command like <code>make -C deps/cowlib</code>, or <code>make</code> in the dependency&apos;s directory.
+</li>
+<li>The variable <code>FULL</code> is set, for example <code>make FULL=1</code>. This will force building of all dependencies. This can be added to your Makefile before including <em>erlang.mk</em>.
+</li>
+<li>The file <code>ebin/dep_built</code> in the dependency is removed.
+</li>
+</ul>
<h2 id="_fetching_and_listing_dependencies_only">Fetching and listing dependencies only</h2>
<p>You can fetch all dependencies recursively without building anything, with the <code>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>make list-deps</code> command. It will obviously need to fetch all dependencies exactly like <code>make fetch-deps</code>. Once everything is fetched, it prints a sorted list of absolute paths to the dependencies.</p>
@@ -403,7 +418,7 @@ http://www.gnu.org/software/src-highlite -->
<li>Run autopatch on the project
</li>
</ul>
-<p>Autopatch first checks if there is any project-specific patch enabled. There are currently two: <code>RABBITMQ_CLIENT_PATCH</code> for the <code>amqp_client</code> dependency, and <code>RABBITMQ_SERVER_PATCH</code> for the <code>rabbit</code> dependency. These are needed only for RabbitMQ versions before 3.6.0 (assuming you are using upstream RabbitMQ, and not a fork).</p>
+<p>Autopatch first checks if there is any project-specific patch enabled. There are currently three: <code>RABBITMQ_CLIENT_PATCH</code> for the <code>amqp_client</code> dependency (before 3.6.0), <code>RABBITMQ_SERVER_PATCH</code> for the <code>rabbit</code> dependency (before 3.6.0) and <code>ELIXIR_PATCH</code> for the <code>elixir</code> dependency.</p>
<p>Otherwise, autopatch performs different operations depending on the kind of project it finds the dependency to be.</p>
<ul><li>Rebar projects are automatically converted to use Erlang.mk as their build tool. This essentially patches Rebar out, and fixes and converts the project to be compatible with Erlang.mk.
</li>
@@ -416,6 +431,23 @@ http://www.gnu.org/software/src-highlite -->
<li>Other projects with no Makefile are left untouched.
</li>
</ul>
+<p>You can add additional commands to be run immediately before or after autopatch is done by extending the target <code>autopatch-$(dep)::</code>, for example this would remove a module:</p>
+<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><font color="#990000">autopatch-ranch::</font>
+ rm -f <font color="#009900">$(DEPS_DIR)</font>/ranch/src/ranch_proxy_header.erl</tt></pre>
+</div></div>
+<p>A common use case for this feature is to apply a PATCH file on the dependency immediately after fetching it. It can also be used to add compiler options, for example:</p>
+<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><font color="#990000">autopatch-couchbeam::</font>
+ <b><font color="#0000FF">printf</font></b> <font color="#FF0000">"</font><font color="#CC33CC">\n</font><font color="#FF0000">ERLC_OPTS += -DWITH_JIFFY</font><font color="#CC33CC">\n</font><font color="#FF0000">"</font> <font color="#990000">&gt;&gt;</font> <font color="#009900">$(DEPS_DIR)</font>/couchbeam/Makefile</tt></pre>
+</div></div>
+<p>The commands will run before autopatch when the target is defined before including <em>erlang.mk</em>, and after otherwise.</p>
<p>You can disable the replacing of the <em>erlang.mk</em> file by defining the <code>NO_AUTOPATCH_ERLANG_MK</code> variable:</p>
<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8
by Lorenzo Bettini
diff --git a/docs/en/erlang.mk/1/guide/dialyzer.asciidoc b/docs/en/erlang.mk/1/guide/dialyzer.asciidoc
index 58fe53ff..60311137 100644
--- a/docs/en/erlang.mk/1/guide/dialyzer.asciidoc
+++ b/docs/en/erlang.mk/1/guide/dialyzer.asciidoc
@@ -71,3 +71,16 @@ it doesn't exist. This is normally not necessary as
Dialyzer creates it automatically.
The PLT file will be removed when you run `make distclean`.
+
+=== Dialyzing beam files
+
+By default Erlang.mk will run Dialyzer against the source
+code. It is possible to configure Erlang.mk to use the
+compiled source files instead. This is done using the
+`DIALYZER_DIRS` variable:
+
+[source,make]
+DIALYZER_DIRS = -r ebin
+
+This value must be set before including Erlang.mk to
+function properly.
diff --git a/docs/en/erlang.mk/1/guide/dialyzer/index.html b/docs/en/erlang.mk/1/guide/dialyzer/index.html
index 6a16f1ef..f6c9d188 100644
--- a/docs/en/erlang.mk/1/guide/dialyzer/index.html
+++ b/docs/en/erlang.mk/1/guide/dialyzer/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Dialyzer</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
@@ -92,6 +92,15 @@ http://www.gnu.org/software/src-highlite -->
</div></div>
<p>You can use the <code>plt</code> target to create the PLT file if it doesn&apos;t exist. This is normally not necessary as Dialyzer creates it automatically.</p>
<p>The PLT file will be removed when you run <code>make distclean</code>.</p>
+<h2 id="_dialyzing_beam_files">Dialyzing beam files</h2>
+<p>By default Erlang.mk will run Dialyzer against the source code. It is possible to configure Erlang.mk to use the compiled source files instead. This is done using the <code>DIALYZER_DIRS</code> variable:</p>
+<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><font color="#009900">DIALYZER_DIRS =</font> -r ebin</tt></pre>
+</div></div>
+<p>This value must be set before including Erlang.mk to function properly.</p>
diff --git a/docs/en/erlang.mk/1/guide/edoc/index.html b/docs/en/erlang.mk/1/guide/edoc/index.html
index ff876b37..d2ce9c08 100644
--- a/docs/en/erlang.mk/1/guide/edoc/index.html
+++ b/docs/en/erlang.mk/1/guide/edoc/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: EDoc comments</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/escripts/index.html b/docs/en/erlang.mk/1/guide/escripts/index.html
index adadaa0a..01386e97 100644
--- a/docs/en/erlang.mk/1/guide/escripts/index.html
+++ b/docs/en/erlang.mk/1/guide/escripts/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Escripts</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/eunit/index.html b/docs/en/erlang.mk/1/guide/eunit/index.html
index 502c76da..5b6c44b0 100644
--- a/docs/en/erlang.mk/1/guide/eunit/index.html
+++ b/docs/en/erlang.mk/1/guide/eunit/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: EUnit</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/external_plugins.asciidoc b/docs/en/erlang.mk/1/guide/external_plugins.asciidoc
index 68deb825..5f165f50 100644
--- a/docs/en/erlang.mk/1/guide/external_plugins.asciidoc
+++ b/docs/en/erlang.mk/1/guide/external_plugins.asciidoc
@@ -76,6 +76,15 @@ 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.
+Plugins can include some help text by extending the target
+`help-plugins`:
+
+[source,make]
+----
+help-plugins::
+ $(verbose) printf "%s\n" "" "Run benchmark: $(MAKE) perfs"
+----
+
=== Early-stage plugins
Plugins declared in `DEP_PLUGINS` are loaded near the end of Erlang.mk.
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 f23d76b4..1a101f20 100644
--- a/docs/en/erlang.mk/1/guide/external_plugins/index.html
+++ b/docs/en/erlang.mk/1/guide/external_plugins/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: External plugins</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
@@ -101,6 +101,14 @@ include <font color="#009900">$(THIS)</font>/mk/templates.mk</tt></pre>
</div></div>
<p>The <code>THIS</code> variable is required to relatively include files.</p>
<p>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.</p>
+<p>Plugins can include some help text by extending the target <code>help-plugins</code>:</p>
+<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><font color="#990000">help-plugins::</font>
+ <font color="#009900">$(verbose)</font> <b><font color="#0000FF">printf</font></b> <font color="#FF0000">"%s</font><font color="#CC33CC">\n</font><font color="#FF0000">"</font> <font color="#FF0000">""</font> <font color="#FF0000">"Run benchmark: $(MAKE) perfs"</font></tt></pre>
+</div></div>
<h2 id="_early_stage_plugins">Early-stage plugins</h2>
<p>Plugins declared in <code>DEP_PLUGINS</code> are loaded near the end of Erlang.mk. That&apos;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 &quot;Early-stage plugins&quot;. 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>
<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>
diff --git a/docs/en/erlang.mk/1/guide/external_plugins_list.asciidoc b/docs/en/erlang.mk/1/guide/external_plugins_list.asciidoc
index a194f45d..dc5a9c6d 100644
--- a/docs/en/erlang.mk/1/guide/external_plugins_list.asciidoc
+++ b/docs/en/erlang.mk/1/guide/external_plugins_list.asciidoc
@@ -4,6 +4,12 @@
This is a non-exhaustive list of Erlang.mk plugins, sorted
alphabetically.
+=== ci.erlang.mk
+
+A https://github.com/ninenines/ci.erlang.mk[plugin] that keeps
+track of released OTP versions to always run CI builds on the
+most recent patch(es).
+
=== efene.mk
An https://github.com/ninenines/efene.mk[Efene plugin] for Erlang.mk.
@@ -61,3 +67,6 @@ A https://github.com/bullno1/reload.mk[live reload plugin] for Erlang.mk.
A https://github.com/goertzenator/rust.mk[plugin] to build https://www.rust-lang.org/[Rust] crates and install binaries into `priv/`.
+=== version.mk
+
+A https://github.com/manifest/version.mk[plugin] to apply a semantic version automatically to Erlang.mk projects.
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 f4779238..b7e0ac14 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
@@ -10,7 +10,7 @@
<title>Nine Nines: List of plugins</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
@@ -63,6 +63,8 @@
<h1 class="lined-header"><span>List of plugins</span></h1>
<p>This is a non-exhaustive list of Erlang.mk plugins, sorted alphabetically.</p>
+<h2 id="_ci_erlang_mk">ci.erlang.mk</h2>
+<p>A <a href="https://github.com/ninenines/ci.erlang.mk">plugin</a> that keeps track of released OTP versions to always run CI builds on the most recent patch(es).</p>
<h2 id="_efene_mk">efene.mk</h2>
<p>An <a href="https://github.com/ninenines/efene.mk">Efene plugin</a> for Erlang.mk. <a href="http://efene.org/">Efene</a> is an alternative language for the BEAM.</p>
<h2 id="_elixir_mk">elixir.mk</h2>
@@ -85,6 +87,8 @@
<p>A <a href="https://github.com/bullno1/reload.mk">live reload plugin</a> for Erlang.mk.</p>
<h2 id="_rust_mk">rust.mk</h2>
<p>A <a href="https://github.com/goertzenator/rust.mk">plugin</a> to build <a href="https://www.rust-lang.org/">Rust</a> crates and install binaries into <code>priv/</code>.</p>
+<h2 id="_version_mk">version.mk</h2>
+<p>A <a href="https://github.com/manifest/version.mk">plugin</a> to apply a semantic version automatically to Erlang.mk projects.</p>
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 c09fb185..ca9776e0 100644
--- a/docs/en/erlang.mk/1/guide/getting_started/index.html
+++ b/docs/en/erlang.mk/1/guide/getting_started/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Getting started</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/history/index.html b/docs/en/erlang.mk/1/guide/history/index.html
index fedd2fa7..60006e28 100644
--- a/docs/en/erlang.mk/1/guide/history/index.html
+++ b/docs/en/erlang.mk/1/guide/history/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Short history</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/index.html b/docs/en/erlang.mk/1/guide/index.html
index 42b133d6..3da11a6d 100644
--- a/docs/en/erlang.mk/1/guide/index.html
+++ b/docs/en/erlang.mk/1/guide/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Erlang.mk User Guide</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
@@ -88,6 +88,8 @@
</li>
<li><a href="kerl/">OTP version management</a>
</li>
+<li><a href="cross_compiling/">Cross compiling</a>
+</li>
<li><a href="compat/">Compatibility with other build tools</a>
</li>
</ul>
@@ -106,6 +108,8 @@
</li>
<li><a href="common_test/">Common Test</a>
</li>
+<li><a href="proper/">PropEr</a>
+</li>
<li><a href="triq/">Triq</a>
</li>
<li><a href="coverage/">Code coverage</a>
diff --git a/docs/en/erlang.mk/1/guide/installation/index.html b/docs/en/erlang.mk/1/guide/installation/index.html
index 981bab8d..58447dd5 100644
--- a/docs/en/erlang.mk/1/guide/installation/index.html
+++ b/docs/en/erlang.mk/1/guide/installation/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Installation</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/kerl/index.html b/docs/en/erlang.mk/1/guide/kerl/index.html
index e580306e..95ccd8a6 100644
--- a/docs/en/erlang.mk/1/guide/kerl/index.html
+++ b/docs/en/erlang.mk/1/guide/kerl/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: OTP version management</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
@@ -110,8 +110,8 @@ http://www.gnu.org/software/src-highlite -->
- <a style="float:right" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/compat/">
- Compatibility with other build tools
+ <a style="float:right" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/cross_compiling/">
+ Cross compiling
</a>
</nav>
diff --git a/docs/en/erlang.mk/1/guide/limitations/index.html b/docs/en/erlang.mk/1/guide/limitations/index.html
index 5ac97b3e..965f3b90 100644
--- a/docs/en/erlang.mk/1/guide/limitations/index.html
+++ b/docs/en/erlang.mk/1/guide/limitations/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Limitations</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/overview/index.html b/docs/en/erlang.mk/1/guide/overview/index.html
index 835d1d6b..ce146687 100644
--- a/docs/en/erlang.mk/1/guide/overview/index.html
+++ b/docs/en/erlang.mk/1/guide/overview/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Overview</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/ports/index.html b/docs/en/erlang.mk/1/guide/ports/index.html
index f5d40684..a93a5798 100644
--- a/docs/en/erlang.mk/1/guide/ports/index.html
+++ b/docs/en/erlang.mk/1/guide/ports/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: NIFs and port drivers</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/proper.asciidoc b/docs/en/erlang.mk/1/guide/proper.asciidoc
new file mode 100644
index 00000000..37fa3d7c
--- /dev/null
+++ b/docs/en/erlang.mk/1/guide/proper.asciidoc
@@ -0,0 +1,31 @@
+[[proper]]
+== PropEr
+
+https://proper-testing.github.io/[PropEr] is a QuickCheck-like library for
+property-based testing. Erlang.mk automates discovery and checking of
+PropEr properties.
+
+To run all tests (including PropEr):
+
+[source,bash]
+$ make tests
+
+To run all tests and static checks (including PropEr):
+
+[source,bash]
+$ make check
+
+You can also run PropEr separately:
+
+[source,bash]
+$ make proper
+
+To check properties from a single module:
+
+[source,bash]
+$ make proper t=foo_tests
+
+To check a single property:
+
+[source,bash]
+$ make proper t=foo_tests:bar
diff --git a/docs/en/erlang.mk/1/guide/proper/index.html b/docs/en/erlang.mk/1/guide/proper/index.html
new file mode 100644
index 00000000..2cae324f
--- /dev/null
+++ b/docs/en/erlang.mk/1/guide/proper/index.html
@@ -0,0 +1,187 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="">
+ <meta name="author" content="Loïc Hoguin based on a design from (Soft10) Pol Cámara">
+
+ <title>Nine Nines: PropEr</title>
+
+ <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
+ <link href="/css/99s.css?r=3" rel="stylesheet">
+
+ <link rel="shortcut icon" href="/img/ico/favicon.ico">
+ <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
+ <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png">
+ <link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png">
+
+
+</head>
+
+
+<body class="">
+ <header id="page-head">
+ <div id="topbar" class="container">
+ <div class="row">
+ <div class="span2">
+ <h1 id="logo"><a href="/" title="99s">99s</a></h1>
+ </div>
+ <div class="span10">
+
+ <div id="side-header">
+ <nav>
+ <ul>
+ <li><a title="Hear my thoughts" href="/articles">Articles</a></li>
+ <li><a title="Watch my talks" href="/talks">Talks</a></li>
+ <li class="active"><a title="Read the docs" href="/docs">Documentation</a></li>
+ <li><a title="Request my services" href="/services">Consulting & Training</a></li>
+ </ul>
+ </nav>
+ <ul id="social">
+ <li>
+ <a href="https://github.com/ninenines" title="Check my Github repositories"><img src="/img/ico_github.png" data-hover="/img/ico_github_alt.png" alt="Github"></a>
+ </li>
+ <li>
+ <a title="Contact me" href="mailto:[email protected]"><img src="/img/ico_mail.png" data-hover="/img/ico_mail_alt.png"></a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+</header>
+
+<div id="contents" class="two_col">
+<div class="container">
+<div class="row">
+<div id="docs" class="span9 maincol">
+
+<h1 class="lined-header"><span>PropEr</span></h1>
+
+<p><a href="https://proper-testing.github.io/">PropEr</a> is a QuickCheck-like library for property-based testing. Erlang.mk automates discovery and checking of PropEr properties.</p>
+<p>To run all tests (including PropEr):</p>
+<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 tests</tt></pre>
+</div></div>
+<p>To run all tests and static checks (including PropEr):</p>
+<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 check</tt></pre>
+</div></div>
+<p>You can also run PropEr separately:</p>
+<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 proper</tt></pre>
+</div></div>
+<p>To check properties from a single module:</p>
+<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 proper <font color="#009900">t</font><font color="#990000">=</font>foo_tests</tt></pre>
+</div></div>
+<p>To check a single property:</p>
+<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 proper <font color="#009900">t</font><font color="#990000">=</font>foo_tests<font color="#990000">:</font>bar</tt></pre>
+</div></div>
+
+
+
+
+
+
+
+
+
+
+
+ <nav style="margin:1em 0">
+
+ <a style="float:left" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/common_test/">
+ Common Test
+ </a>
+
+
+
+ <a style="float:right" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/triq/">
+ Triq
+ </a>
+
+ </nav>
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Erlang.mk
+ 1
+
+ User Guide
+</h3>
+
+<ul>
+
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/erlang.mk/1/guide">1</a></li>
+
+</ul>
+
+</div>
+</div>
+</div>
+</div>
+
+ <footer>
+ <div class="container">
+ <div class="row">
+ <div class="span6">
+ <p id="scroll-top"><a href="#">↑ Scroll to top</a></p>
+ <nav>
+ <ul>
+ <li><a href="mailto:[email protected]" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="span6 credits">
+ <p><img src="/img/footer_logo.png"></p>
+ <p>Copyright &copy; Loïc Hoguin 2012-2018</p>
+ </div>
+ </div>
+ </div>
+ </footer>
+
+
+ <script src="/js/custom.js"></script>
+ </body>
+</html>
+
+
diff --git a/docs/en/erlang.mk/1/guide/releases.asciidoc b/docs/en/erlang.mk/1/guide/releases.asciidoc
index 92968ff8..68174b30 100644
--- a/docs/en/erlang.mk/1/guide/releases.asciidoc
+++ b/docs/en/erlang.mk/1/guide/releases.asciidoc
@@ -15,6 +15,20 @@ the variable before including Erlang.mk:
[source,make]
RELX_CONFIG = $(CURDIR)/webchat.config
+It is also possible to have multiple 'relx.config' files.
+For example you might have one for development and one for
+production. You can use conditionals to decide which one
+should be used:
+
+[source,make]
+----
+ifdef PROD
+RELX_CONFIG = $(CURDIR)/relx.prod.config
+else
+RELX_CONFIG = $(CURDIR)/relx.dev.config
+endif
+----
+
Relx does not need to be installed. Erlang.mk will download
and build it automatically.
diff --git a/docs/en/erlang.mk/1/guide/releases/index.html b/docs/en/erlang.mk/1/guide/releases/index.html
index 86dc56f1..bc75fa92 100644
--- a/docs/en/erlang.mk/1/guide/releases/index.html
+++ b/docs/en/erlang.mk/1/guide/releases/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Releases</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
@@ -71,6 +71,17 @@ http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><font color="#009900">RELX_CONFIG =</font> <font color="#009900">$(CURDIR)</font>/webchat.config</tt></pre>
</div></div>
+<p>It is also possible to have multiple <em>relx.config</em> files. For example you might have one for development and one for production. You can use conditionals to decide which one should be used:</p>
+<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>ifdef PROD
+<font color="#009900">RELX_CONFIG =</font> <font color="#009900">$(CURDIR)</font>/relx.prod.config
+<b><font color="#0000FF">else</font></b>
+<font color="#009900">RELX_CONFIG =</font> <font color="#009900">$(CURDIR)</font>/relx.dev.config
+endif</tt></pre>
+</div></div>
<p>Relx does not need to be installed. Erlang.mk will download and build it automatically.</p>
<p>The Relx executable will be saved in the <em>$(RELX)</em> file. This location defaults to <em>$(CURDIR)/relx</em> and can be overriden.</p>
<!-- @todo You can use a custom location by ???-->
diff --git a/docs/en/erlang.mk/1/guide/sfx/index.html b/docs/en/erlang.mk/1/guide/sfx/index.html
index b098f7ce..fdd1ce94 100644
--- a/docs/en/erlang.mk/1/guide/sfx/index.html
+++ b/docs/en/erlang.mk/1/guide/sfx/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Self-extracting releases</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/shell/index.html b/docs/en/erlang.mk/1/guide/shell/index.html
index 9bd9119d..025ca538 100644
--- a/docs/en/erlang.mk/1/guide/shell/index.html
+++ b/docs/en/erlang.mk/1/guide/shell/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Erlang shell</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/sphinx/index.html b/docs/en/erlang.mk/1/guide/sphinx/index.html
index 63d0e975..71773036 100644
--- a/docs/en/erlang.mk/1/guide/sphinx/index.html
+++ b/docs/en/erlang.mk/1/guide/sphinx/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Sphinx documentation</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/triq/index.html b/docs/en/erlang.mk/1/guide/triq/index.html
index 9a9a3bbc..960525b5 100644
--- a/docs/en/erlang.mk/1/guide/triq/index.html
+++ b/docs/en/erlang.mk/1/guide/triq/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Triq</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
@@ -111,8 +111,8 @@ http://www.gnu.org/software/src-highlite -->
<nav style="margin:1em 0">
- <a style="float:left" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/common_test/">
- Common Test
+ <a style="float:left" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/proper/">
+ PropEr
</a>
diff --git a/docs/en/erlang.mk/1/guide/updating/index.html b/docs/en/erlang.mk/1/guide/updating/index.html
index 5d70cb1b..438f4e3b 100644
--- a/docs/en/erlang.mk/1/guide/updating/index.html
+++ b/docs/en/erlang.mk/1/guide/updating/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Updating Erlang.mk</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/why/index.html b/docs/en/erlang.mk/1/guide/why/index.html
index 89578738..d43963f6 100644
--- a/docs/en/erlang.mk/1/guide/why/index.html
+++ b/docs/en/erlang.mk/1/guide/why/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Why Erlang.mk</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
diff --git a/docs/en/erlang.mk/1/guide/xref/index.html b/docs/en/erlang.mk/1/guide/xref/index.html
index 17ea18f4..0f561c92 100644
--- a/docs/en/erlang.mk/1/guide/xref/index.html
+++ b/docs/en/erlang.mk/1/guide/xref/index.html
@@ -10,7 +10,7 @@
<title>Nine Nines: Xref</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
- <link href="/css/99s.css?r=2" rel="stylesheet">
+ <link href="/css/99s.css?r=3" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">