aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2015-12-04 10:29:56 +0100
committerLoïc Hoguin <[email protected]>2015-12-04 10:29:56 +0100
commite8a144fe1dc2730839a12cbda58b7d5723485c43 (patch)
treea69f1a8f58f02e8fc8cc33d67e00feec29e18697
parentcf2cdda6e0b941b1b0b61c8b8a305dd70de930ac (diff)
downloaderlang.mk-e8a144fe1dc2730839a12cbda58b7d5723485c43.tar.gz
erlang.mk-e8a144fe1dc2730839a12cbda58b7d5723485c43.tar.bz2
erlang.mk-e8a144fe1dc2730839a12cbda58b7d5723485c43.zip
Update user guide
-rw-r--r--guide/ch24.html32
-rw-r--r--guide/ch25.html51
-rw-r--r--guide/ch26.html37
-rw-r--r--guide/index.html2
4 files changed, 82 insertions, 40 deletions
diff --git a/guide/ch24.html b/guide/ch24.html
index c6b95c7..905dcd4 100644
--- a/guide/ch24.html
+++ b/guide/ch24.html
@@ -31,7 +31,37 @@ div.navfooter{margin-bottom:1em}
</header>
<main>
-<div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ch23.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch25.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="_short_history"></a>Chapter 24. Short history</h2></div></div></div><p>Placeholder chapter.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch23.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pt05.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch25.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div>
+<div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ch23.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch25.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="_short_history"></a>Chapter 24. Short history</h2></div></div></div><p>This chapter aims to be a brief record of the life of the
+Erlang.mk project.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_before_erlang_mk"></a>24.1. Before Erlang.mk</h2></div></div></div><p>Erlang.mk originates from the Cowboy project. Cowboy started
+as a Rebar project and I, Loïc Hoguin, was very happy with it
+for a couple years. Over time however I started getting annoyed
+and frustrated by a number of things, including bad defaults,
+changing defaults and overall slowness.</p><p>In particular, at the time I gave up on Erlang.mk, the Cowboy
+test suite was taking about five minutes to run. A quick experiment
+showed I could get much lower times by simply invoking <code class="literal">ct_run</code>
+directly. On January 4th, 2013, the Cowboy test suite took less
+than a minute to complete.</p><p>Following this success I started removing a little more and,
+on the fateful day of January 5th, 2013, removed the dependency
+on Rebar entirely. Rebar, and in particular the concept of
+dependencies, was, and still is, a pretty strong influence.</p><p>Erlang.mk was conceived.</p><p>A few months passed and, on May 1st, 2013, the Erlang.mk
+repository was created. Erlang.mk was born.</p><p>Little did I know how much it would grow.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_lifetime_of_the_project"></a>24.2. Lifetime of the project</h2></div></div></div><p>Erlang.mk would eventually become a much larger file able to
+deal with many more projects than just Cowboy. From the birth
+of the project, the biggest force for growth was user contributions,
+because Erlang.mk appealed to a variety of people with different
+needs, needs that Erlang.mk was not fulfilling yet.</p><p>The project was split into smaller files focused on a different
+feature each, and a build script was written to build the single
+Erlang.mk file.</p><p>A test suite was contributed by a user, and later taken as a basis
+for the current, much more complete test suite. Turns out testing
+a Makefile is pretty straightforward.</p><p>A package index was added to solve the problem of discovering
+Erlang projects.</p><p>After trying to see if Erlang build tools could cooperate, the
+decision was made to improve compatibility with existing Rebar
+projects by patching Rebar out, using Rebar. This feature, called
+autopatch, proved very successful and made Erlang.mk compatible
+with more than 90% of all Erlang projects.</p><p>Erlang.mk documentation was much improved and the Erlang.mk website
+was created in the summer of 2015.</p><p>Over the year of 2015, Erlang.mk went from curiosity to a serious
+alternative to other Erlang build tools. The user base increased
+immensely and large projects started using it, including RabbitMQ
+from the 3.6.0 release onward.</p><p>A bright future lies ahead.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch23.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pt05.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch25.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div>
</main>
</body>
</html>
diff --git a/guide/ch25.html b/guide/ch25.html
index 5031178..501cf54 100644
--- a/guide/ch25.html
+++ b/guide/ch25.html
@@ -31,7 +31,56 @@ div.navfooter{margin-bottom:1em}
</header>
<main>
-<div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ch24.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch26.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="_architecture"></a>Chapter 25. Architecture</h2></div></div></div><p>Placeholder chapter.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch24.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pt05.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch26.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div>
+<div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ch24.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> </td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="_contributing"></a>Chapter 25. Contributing</h2></div></div></div><p>You are welcome and encouraged to contribute.</p><p>This is how.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_priorities"></a>25.1. Priorities</h2></div></div></div><p>From the most important to the least important:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
+Bugs
+</li><li class="listitem">
+Package issues/additions
+</li><li class="listitem">
+Refactoring
+</li><li class="listitem">
+Features
+</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_bugs"></a>25.2. Bugs</h2></div></div></div><p>If you have found a bug, you should open a ticket. Include
+everything relevant including the command you used, output,
+a link to the code that triggers the issue, why you think
+this is a bug, etc.</p><p>If you think you have found a bug but you are not sure, you
+should open a ticket as previously explained.</p><p>If you have found a bug and you need it to be solved RIGHT
+NOW, open a ticket as previously explained.</p><p>Once you have opened a ticket, be patient, try to answer
+questions in a timely manner and confirm that the bug was
+indeed fixed when it is.</p><p>If you can’t be patient, either try to solve the bug and
+contribute the fix back or become a paying customer.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_code_2"></a>25.3. Code</h2></div></div></div><p>The code is located in the <span class="emphasis"><em>core/<span class="strong"><strong>.mk</strong></span> and <span class="emphasis"><em>plugins/</em></span>.mk</em></span> files.
+The tests are located in the <span class="emphasis"><em>test/Makefile</em></span> and <span class="emphasis"><em>test/*.mk</em></span> files.</p><p>If you have a fix or a hack for a bug, you should open a
+pull request. Any fix should include a test case that fails
+before the fix and is working after.</p><p>If you have a test case that reproduces a bug, but no fix for
+it, you should open a pull request.</p><p>Changes need to be tested with at least the <code class="literal">make check</code>
+command. A specific test case can be tested using <code class="literal">make check c=CASE</code>
+with <code class="literal">CASE</code> the name of the target to run. Output can be
+modulated using the <code class="literal">V</code> variable, which is an integer
+from 0 to 4. A typical use would be <code class="literal">make check c=dialyzer V=3</code>.
+The value 4 is particular and shows expanded commands right
+before they are executed.</p><p>To run tests in parallel, use the <code class="literal">-j</code> option. It is generally
+a good idea to also use the <code class="literal">-k</code> option to run all tests even
+if one fails. For example: <code class="literal">make check -j 32 -k</code>.</p><p>Some changes should be tested against all packages. Continue
+reading for more details on testing them.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_packages"></a>25.4. Packages</h2></div></div></div><p>You can search existing packages using the <code class="literal">make search q=STRING</code>
+command. This can be done both from an Erlang.mk project or
+directly from the Erlang.mk repository.</p><p>Packages can be added to the index using the <code class="literal">pkg_add.sh</code> script.</p><pre class="programlisting">$ git clone https://github.com/$YOURUSERNAME/erlang.mk
+$ cd erlang.mk
+$ ./pkg_add.sh cowboy git https://github.com/ninenines/cowboy 1.0.0
+ http://ninenines.eu "Small, fast and modular HTTP server."
+$ git push origin master</pre><p>Before sending a pull request, you should test your package.
+You can use the following command: <code class="literal">make check p=PACKAGE</code>,
+where <code class="literal">PACKAGE</code> is the name of the package, for example
+<code class="literal">cowboy</code>.</p><p>To test all packages, the <code class="literal">make packages</code> command can be used.
+This can take a long time. Some packages will fail with certain
+versions of Erlang, or if a prerequisite is missing from your system.
+You can of course speed things up using the <code class="literal">-j</code> and <code class="literal">-k</code> flags.</p><p>After all packages have been tested, you can run the command
+<code class="literal">make summary</code> to know what changed since the previous run.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_documentation_2"></a>25.5. Documentation</h2></div></div></div><p>The documentation is always right.</p><p>If you think you have found a mistake in the documentation,
+this is a bug. You can either open a ticket or send a pull
+request.</p><p>To make sure that the documentation changes work, install
+Asciidoc on your system and run <code class="literal">make docs</code>.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_feature_requests"></a>25.6. Feature requests</h2></div></div></div><p>If you have an awesome idea or need something that Erlang.mk
+doesn’t provide yet, open a ticket. Provide as much detail as
+possible.</p><p>If you have code, great! Open a pull request as previously
+explained.</p><p>If not, you can still improve your feature request by writing
+the related documentation.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch24.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pt05.html">Up</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div>
</main>
</body>
</html>
diff --git a/guide/ch26.html b/guide/ch26.html
deleted file mode 100644
index d5b423b..0000000
--- a/guide/ch26.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-<meta charset="utf-8"/>
-<title>Erlang.mk User Guide</title>
-<style type="text/css"><!--
-body{background:white;color:black;font-family:"Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;justify-content:center;margin:0 auto;padding:0;width:600px}
-header {align-items:center;display:flex;justify-content:center}
-header nav.left{text-align:right;width:150px}
-header nav.right{text-align:left;width:150px}
-header nav a{display:block;margin:1.5em 1em}
-main{margin-top:2em;text-align:justify}
-main h2, main h3{margin-top:2em}
-a{color:#d9230f;text-decoration:none}
-a:hover{text-decoration:underline}
-h1, h2, h3{font-weight:normal}
-div.navfooter{margin-bottom:1em}
---></style>
-</head>
-<body>
-<header>
- <nav class="left">
- <a href="index.html">User guide</a>
- <a href="ch02.html">Tutorials</a>
- </nav>
- <a href="/" class="logo"><img src="../res/logo-small.png" alt="Erlang.mk" title="Erlang.mk: A build tool for Erlang that just works" height="200" width="206"/></a>
- <nav class="right">
- <a href="https://github.com/ninenines/erlang.mk/tree/master/index">470+ packages</a>
- <a href="https://github.com/ninenines/erlang.mk/issues">Issues?</a>
- </nav>
-</header>
-<main>
-
-<div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ch25.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> </td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="_contributing"></a>Chapter 26. Contributing</h2></div></div></div><p>Placeholder chapter.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch25.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pt05.html">Up</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div>
-</main>
-</body>
-</html>
diff --git a/guide/index.html b/guide/index.html
index 2cd9b84..0017086 100644
--- a/guide/index.html
+++ b/guide/index.html
@@ -31,7 +31,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="ch01.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="idm139639056938272"></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="ch01.html">1. Installation</a></span></dt><dd><dl><dt><span class="section"><a href="ch01.html#_on_unix">1.1. On Unix</a></span></dt><dt><span class="section"><a href="ch01.html#_on_windows">1.2. On Windows</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch02.html">2. Getting started</a></span></dt><dd><dl><dt><span class="section"><a href="ch02.html#_creating_a_folder_for_your_project">2.1. Creating a folder for your project</a></span></dt><dt><span class="section"><a href="ch02.html#_downloading_erlang_mk">2.2. Downloading Erlang.mk</a></span></dt><dt><span class="section"><a href="ch02.html#_getting_started_with_otp_applications">2.3. Getting started with OTP applications</a></span></dt><dt><span class="section"><a href="ch02.html#_getting_started_with_otp_libraries">2.4. Getting started with OTP libraries</a></span></dt><dt><span class="section"><a href="ch02.html#_getting_started_with_otp_releases">2.5. Getting started with OTP releases</a></span></dt><dt><span class="section"><a href="ch02.html#_using_spaces_instead_of_tabs">2.6. Using spaces instead of tabs</a></span></dt><dt><span class="section"><a href="ch02.html#_using_templates">2.7. Using templates</a></span></dt><dt><span class="section"><a href="ch02.html#_getting_help">2.8. Getting help</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Overview</a></span></dt><dd><dl><dt><span class="section"><a href="ch03.html#_building_your_project">3.1. Building your project</a></span></dt><dt><span class="section"><a href="ch03.html#_exploring_the_package_index">3.2. Exploring the package index</a></span></dt><dt><span class="section"><a href="ch03.html#_generating_documentation">3.3. Generating documentation</a></span></dt><dt><span class="section"><a href="ch03.html#_running_tests">3.4. Running tests</a></span></dt><dt><span class="section"><a href="ch03.html#_need_more">3.5. Need more?</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Updating Erlang.mk</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#_initial_bootstrap">4.1. Initial bootstrap</a></span></dt><dt><span class="section"><a href="ch04.html#_updating">4.2. Updating</a></span></dt><dt><span class="section"><a href="ch04.html#_customizing_the_build">4.3. Customizing the build</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch05.html">5. Limitations</a></span></dt><dd><dl><dt><span class="section"><a href="ch05.html#_erlang_must_be_available">5.1. Erlang must be available</a></span></dt><dt><span class="section"><a href="ch05.html#_spaces_in_path">5.2. Spaces in path</a></span></dt><dt><span class="section"><a href="ch05.html#_dependency_tracking_and_modification_times">5.3. Dependency tracking and modification times</a></span></dt></dl></dd><dt><span class="part"><a href="pt01.html">I. Code</a></span></dt><dd><dl><dt><span class="chapter"><a href="ch06.html">6. Building</a></span></dt><dd><dl><dt><span class="section"><a href="ch06.html#_how_to_build">6.1. How to build</a></span></dt><dt><span class="section"><a href="ch06.html#_what_to_build">6.2. What to build</a></span></dt><dt><span class="section"><a href="ch06.html#_application_resource_file">6.3. Application resource file</a></span></dt><dt><span class="section"><a href="ch06.html#_automatic_application_resource_file_values">6.4. Automatic application resource file values</a></span></dt><dt><span class="section"><a href="ch06.html#_file_formats">6.5. File formats</a></span></dt><dt><span class="section"><a href="ch06.html#_compilation_options">6.6. Compilation options</a></span></dt><dt><span class="section"><a href="ch06.html#_cold_and_hot_builds">6.7. Cold and hot builds</a></span></dt><dt><span class="section"><a href="ch06.html#_dependency_tracking">6.8. Dependency tracking</a></span></dt><dt><span class="section"><a href="ch06.html#_generating_erlang_source">6.9. Generating Erlang source</a></span></dt><dt><span class="section"><a href="ch06.html#_cleaning">6.10. Cleaning</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch07.html">7. Packages and dependencies</a></span></dt><dd><dl><dt><span class="section"><a href="ch07.html#_searching_packages">7.1. Searching packages</a></span></dt><dt><span class="section"><a href="ch07.html#_adding_dependencies_to_your_project">7.2. Adding dependencies to your project</a></span></dt><dt><span class="section"><a href="ch07.html#_how_deps_are_fetched_and_built">7.3. How deps are fetched and built</a></span></dt><dt><span class="section"><a href="ch07.html#_ignoring_unwanted_dependencies">7.4. Ignoring unwanted dependencies</a></span></dt><dt><span class="section"><a href="ch07.html#_dependencies_directory">7.5. Dependencies directory</a></span></dt><dt><span class="section"><a href="ch07.html#_dependencies_local_to_the_repository">7.6. Dependencies local to the repository</a></span></dt><dt><span class="section"><a href="ch07.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="ch07.html#_autopatch">7.8. Autopatch</a></span></dt><dt><span class="section"><a href="ch07.html#_skipping_deps">7.9. Skipping deps</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch08.html">8. NIFs and port drivers</a></span></dt><dd><dl><dt><span class="section"><a href="ch08.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="ch08.html#_using_a_custom_makefile">8.2. Using a custom Makefile</a></span></dt><dt><span class="section"><a href="ch08.html#_using_erlang_mk_directly">8.3. Using Erlang.mk directly</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch09.html">9. Releases</a></span></dt><dd><dl><dt><span class="section"><a href="ch09.html#_setup">9.1. Setup</a></span></dt><dt><span class="section"><a href="ch09.html#_configuration">9.2. Configuration</a></span></dt><dt><span class="section"><a href="ch09.html#_generating_the_release">9.3. Generating the release</a></span></dt><dt><span class="section"><a href="ch09.html#_running_the_release">9.4. Running the release</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch10.html">10. Escripts</a></span></dt><dt><span class="chapter"><a href="ch11.html">11. Compatibility with other build tools</a></span></dt><dd><dl><dt><span class="section"><a href="ch11.html#_rebar_projects_as_erlang_mk_dependencies">11.1. Rebar projects as Erlang.mk dependencies</a></span></dt><dt><span class="section"><a href="ch11.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="pt02.html">II. Documentation</a></span></dt><dd><dl><dt><span class="chapter"><a href="ch12.html">12. Asciidoc documentation</a></span></dt><dt><span class="chapter"><a href="ch13.html">13. EDoc comments</a></span></dt></dl></dd><dt><span class="part"><a href="pt03.html">III. Tests</a></span></dt><dd><dl><dt><span class="chapter"><a href="ch14.html">14. Erlang shell</a></span></dt><dd><dl><dt><span class="section"><a href="ch14.html#_configuration_2">14.1. Configuration</a></span></dt><dt><span class="section"><a href="ch14.html#_usage">14.2. Usage</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch15.html">15. EUnit</a></span></dt><dt><span class="chapter"><a href="ch16.html">16. Common Test</a></span></dt><dt><span class="chapter"><a href="ch17.html">17. Property based testing</a></span></dt><dt><span class="chapter"><a href="ch18.html">18. Code coverage</a></span></dt><dt><span class="chapter"><a href="ch19.html">19. Continuous integration</a></span></dt><dt><span class="chapter"><a href="ch20.html">20. Dialyzer</a></span></dt><dd><dl><dt><span class="section"><a href="ch20.html#_how_it_works">20.1. How it works</a></span></dt><dt><span class="section"><a href="ch20.html#_configuration_3">20.2. Configuration</a></span></dt><dt><span class="section"><a href="ch20.html#_usage_2">20.3. Usage</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch21.html">21. Xref</a></span></dt></dl></dd><dt><span class="part"><a href="pt04.html">IV. Third-party plugins</a></span></dt><dd><dl><dt><span class="chapter"><a href="ch22.html">22. External plugins</a></span></dt><dd><dl><dt><span class="section"><a href="ch22.html#_loading_all_plugins_from_a_dependency">22.1. Loading all plugins from a dependency</a></span></dt><dt><span class="section"><a href="ch22.html#_loading_one_plugin_from_a_dependency">22.2. Loading one plugin from a dependency</a></span></dt><dt><span class="section"><a href="ch22.html#_writing_external_plugins">22.3. Writing external plugins</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="pt05.html">V. About Erlang.mk</a></span></dt><dd><dl><dt><span class="chapter"><a href="ch23.html">23. Why Erlang.mk</a></span></dt><dd><dl><dt><span class="section"><a href="ch23.html#_erlang_mk_is_fast">23.1. Erlang.mk is fast</a></span></dt><dt><span class="section"><a href="ch23.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="ch23.html#_erlang_mk_is_a_text_file">23.3. Erlang.mk is a text file</a></span></dt><dt><span class="section"><a href="ch23.html#_erlang_mk_can_manage_erlang_itself">23.4. Erlang.mk can manage Erlang itself</a></span></dt><dt><span class="section"><a href="ch23.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="ch23.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="ch24.html">24. Short history</a></span></dt><dt><span class="chapter"><a href="ch25.html">25. Architecture</a></span></dt><dt><span class="chapter"><a href="ch26.html">26. Contributing</a></span></dt></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="ch01.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="ch01.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="idm140417691582608"></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="ch01.html">1. Installation</a></span></dt><dd><dl><dt><span class="section"><a href="ch01.html#_on_unix">1.1. On Unix</a></span></dt><dt><span class="section"><a href="ch01.html#_on_windows">1.2. On Windows</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch02.html">2. Getting started</a></span></dt><dd><dl><dt><span class="section"><a href="ch02.html#_creating_a_folder_for_your_project">2.1. Creating a folder for your project</a></span></dt><dt><span class="section"><a href="ch02.html#_downloading_erlang_mk">2.2. Downloading Erlang.mk</a></span></dt><dt><span class="section"><a href="ch02.html#_getting_started_with_otp_applications">2.3. Getting started with OTP applications</a></span></dt><dt><span class="section"><a href="ch02.html#_getting_started_with_otp_libraries">2.4. Getting started with OTP libraries</a></span></dt><dt><span class="section"><a href="ch02.html#_getting_started_with_otp_releases">2.5. Getting started with OTP releases</a></span></dt><dt><span class="section"><a href="ch02.html#_using_spaces_instead_of_tabs">2.6. Using spaces instead of tabs</a></span></dt><dt><span class="section"><a href="ch02.html#_using_templates">2.7. Using templates</a></span></dt><dt><span class="section"><a href="ch02.html#_getting_help">2.8. Getting help</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Overview</a></span></dt><dd><dl><dt><span class="section"><a href="ch03.html#_building_your_project">3.1. Building your project</a></span></dt><dt><span class="section"><a href="ch03.html#_exploring_the_package_index">3.2. Exploring the package index</a></span></dt><dt><span class="section"><a href="ch03.html#_generating_documentation">3.3. Generating documentation</a></span></dt><dt><span class="section"><a href="ch03.html#_running_tests">3.4. Running tests</a></span></dt><dt><span class="section"><a href="ch03.html#_need_more">3.5. Need more?</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Updating Erlang.mk</a></span></dt><dd><dl><dt><span class="section"><a href="ch04.html#_initial_bootstrap">4.1. Initial bootstrap</a></span></dt><dt><span class="section"><a href="ch04.html#_updating">4.2. Updating</a></span></dt><dt><span class="section"><a href="ch04.html#_customizing_the_build">4.3. Customizing the build</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch05.html">5. Limitations</a></span></dt><dd><dl><dt><span class="section"><a href="ch05.html#_erlang_must_be_available">5.1. Erlang must be available</a></span></dt><dt><span class="section"><a href="ch05.html#_spaces_in_path">5.2. Spaces in path</a></span></dt><dt><span class="section"><a href="ch05.html#_dependency_tracking_and_modification_times">5.3. Dependency tracking and modification times</a></span></dt></dl></dd><dt><span class="part"><a href="pt01.html">I. Code</a></span></dt><dd><dl><dt><span class="chapter"><a href="ch06.html">6. Building</a></span></dt><dd><dl><dt><span class="section"><a href="ch06.html#_how_to_build">6.1. How to build</a></span></dt><dt><span class="section"><a href="ch06.html#_what_to_build">6.2. What to build</a></span></dt><dt><span class="section"><a href="ch06.html#_application_resource_file">6.3. Application resource file</a></span></dt><dt><span class="section"><a href="ch06.html#_automatic_application_resource_file_values">6.4. Automatic application resource file values</a></span></dt><dt><span class="section"><a href="ch06.html#_file_formats">6.5. File formats</a></span></dt><dt><span class="section"><a href="ch06.html#_compilation_options">6.6. Compilation options</a></span></dt><dt><span class="section"><a href="ch06.html#_cold_and_hot_builds">6.7. Cold and hot builds</a></span></dt><dt><span class="section"><a href="ch06.html#_dependency_tracking">6.8. Dependency tracking</a></span></dt><dt><span class="section"><a href="ch06.html#_generating_erlang_source">6.9. Generating Erlang source</a></span></dt><dt><span class="section"><a href="ch06.html#_cleaning">6.10. Cleaning</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch07.html">7. Packages and dependencies</a></span></dt><dd><dl><dt><span class="section"><a href="ch07.html#_searching_packages">7.1. Searching packages</a></span></dt><dt><span class="section"><a href="ch07.html#_adding_dependencies_to_your_project">7.2. Adding dependencies to your project</a></span></dt><dt><span class="section"><a href="ch07.html#_how_deps_are_fetched_and_built">7.3. How deps are fetched and built</a></span></dt><dt><span class="section"><a href="ch07.html#_ignoring_unwanted_dependencies">7.4. Ignoring unwanted dependencies</a></span></dt><dt><span class="section"><a href="ch07.html#_dependencies_directory">7.5. Dependencies directory</a></span></dt><dt><span class="section"><a href="ch07.html#_dependencies_local_to_the_repository">7.6. Dependencies local to the repository</a></span></dt><dt><span class="section"><a href="ch07.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="ch07.html#_autopatch">7.8. Autopatch</a></span></dt><dt><span class="section"><a href="ch07.html#_skipping_deps">7.9. Skipping deps</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch08.html">8. NIFs and port drivers</a></span></dt><dd><dl><dt><span class="section"><a href="ch08.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="ch08.html#_using_a_custom_makefile">8.2. Using a custom Makefile</a></span></dt><dt><span class="section"><a href="ch08.html#_using_erlang_mk_directly">8.3. Using Erlang.mk directly</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch09.html">9. Releases</a></span></dt><dd><dl><dt><span class="section"><a href="ch09.html#_setup">9.1. Setup</a></span></dt><dt><span class="section"><a href="ch09.html#_configuration">9.2. Configuration</a></span></dt><dt><span class="section"><a href="ch09.html#_generating_the_release">9.3. Generating the release</a></span></dt><dt><span class="section"><a href="ch09.html#_running_the_release">9.4. Running the release</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch10.html">10. Escripts</a></span></dt><dt><span class="chapter"><a href="ch11.html">11. Compatibility with other build tools</a></span></dt><dd><dl><dt><span class="section"><a href="ch11.html#_rebar_projects_as_erlang_mk_dependencies">11.1. Rebar projects as Erlang.mk dependencies</a></span></dt><dt><span class="section"><a href="ch11.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="pt02.html">II. Documentation</a></span></dt><dd><dl><dt><span class="chapter"><a href="ch12.html">12. Asciidoc documentation</a></span></dt><dt><span class="chapter"><a href="ch13.html">13. EDoc comments</a></span></dt></dl></dd><dt><span class="part"><a href="pt03.html">III. Tests</a></span></dt><dd><dl><dt><span class="chapter"><a href="ch14.html">14. Erlang shell</a></span></dt><dd><dl><dt><span class="section"><a href="ch14.html#_configuration_2">14.1. Configuration</a></span></dt><dt><span class="section"><a href="ch14.html#_usage">14.2. Usage</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch15.html">15. EUnit</a></span></dt><dt><span class="chapter"><a href="ch16.html">16. Common Test</a></span></dt><dt><span class="chapter"><a href="ch17.html">17. Property based testing</a></span></dt><dt><span class="chapter"><a href="ch18.html">18. Code coverage</a></span></dt><dt><span class="chapter"><a href="ch19.html">19. Continuous integration</a></span></dt><dt><span class="chapter"><a href="ch20.html">20. Dialyzer</a></span></dt><dd><dl><dt><span class="section"><a href="ch20.html#_how_it_works">20.1. How it works</a></span></dt><dt><span class="section"><a href="ch20.html#_configuration_3">20.2. Configuration</a></span></dt><dt><span class="section"><a href="ch20.html#_usage_2">20.3. Usage</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch21.html">21. Xref</a></span></dt></dl></dd><dt><span class="part"><a href="pt04.html">IV. Third-party plugins</a></span></dt><dd><dl><dt><span class="chapter"><a href="ch22.html">22. External plugins</a></span></dt><dd><dl><dt><span class="section"><a href="ch22.html#_loading_all_plugins_from_a_dependency">22.1. Loading all plugins from a dependency</a></span></dt><dt><span class="section"><a href="ch22.html#_loading_one_plugin_from_a_dependency">22.2. Loading one plugin from a dependency</a></span></dt><dt><span class="section"><a href="ch22.html#_writing_external_plugins">22.3. Writing external plugins</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="pt05.html">V. About Erlang.mk</a></span></dt><dd><dl><dt><span class="chapter"><a href="ch23.html">23. Why Erlang.mk</a></span></dt><dd><dl><dt><span class="section"><a href="ch23.html#_erlang_mk_is_fast">23.1. Erlang.mk is fast</a></span></dt><dt><span class="section"><a href="ch23.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="ch23.html#_erlang_mk_is_a_text_file">23.3. Erlang.mk is a text file</a></span></dt><dt><span class="section"><a href="ch23.html#_erlang_mk_can_manage_erlang_itself">23.4. Erlang.mk can manage Erlang itself</a></span></dt><dt><span class="section"><a href="ch23.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="ch23.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="ch24.html">24. Short history</a></span></dt><dd><dl><dt><span class="section"><a href="ch24.html#_before_erlang_mk">24.1. Before Erlang.mk</a></span></dt><dt><span class="section"><a href="ch24.html#_lifetime_of_the_project">24.2. Lifetime of the project</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch25.html">25. Contributing</a></span></dt><dd><dl><dt><span class="section"><a href="ch25.html#_priorities">25.1. Priorities</a></span></dt><dt><span class="section"><a href="ch25.html#_bugs">25.2. Bugs</a></span></dt><dt><span class="section"><a href="ch25.html#_code_2">25.3. Code</a></span></dt><dt><span class="section"><a href="ch25.html#_packages">25.4. Packages</a></span></dt><dt><span class="section"><a href="ch25.html#_documentation_2">25.5. Documentation</a></span></dt><dt><span class="section"><a href="ch25.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="ch01.html">Next</a></td></tr></table></div>
</main>
</body>
</html>