diff options
Diffstat (limited to 'docs/en/erlang.mk/1/guide/compat/index.html')
-rw-r--r-- | docs/en/erlang.mk/1/guide/compat/index.html | 97 |
1 files changed, 23 insertions, 74 deletions
diff --git a/docs/en/erlang.mk/1/guide/compat/index.html b/docs/en/erlang.mk/1/guide/compat/index.html index 56ec41dc..a4420e66 100644 --- a/docs/en/erlang.mk/1/guide/compat/index.html +++ b/docs/en/erlang.mk/1/guide/compat/index.html @@ -62,90 +62,39 @@ <h1 class="lined-header"><span>Compatibility with other build tools</span></h1> -<div class="paragraph"><p>Erlang.mk tries its best to be compatible with the other Erlang -build tools. It can use dependencies written with other build -tools in mind, and can also make your projects usable by those -build tools as well. Erlang.mk is like the cool kid that gets -along with everybody.</p></div> -<div class="paragraph"><p>In this chapter I will use the term <em>Rebar project</em> to refer -to a project built using Rebar 2, Rebar 3 or Mad. These three -build tools are very similar and share the same configuration -file.</p></div> -<div class="sect1"> +<p>Erlang.mk tries its best to be compatible with the other Erlang build tools. It can use dependencies written with other build tools in mind, and can also make your projects usable by those build tools as well. Erlang.mk is like the cool kid that gets along with everybody.</p> +<p>In this chapter I will use the term <em>Rebar project</em> to refer to a project built using Rebar 2, Rebar 3 or Mad. These three build tools are very similar and share the same configuration file.</p> <h2 id="_rebar_projects_as_erlang_mk_dependencies">Rebar projects as Erlang.mk dependencies</h2> -<div class="sectionbody"> -<div class="paragraph"><p>Erlang.mk comes with a feature called <em>Autoload</em> which will -use Rebar 2 to patch any Rebar project and make it compatible -with Erlang.mk. This feature essentially patches Rebar out -and adds a Makefile to the project that Erlang.mk can then -use for building:</p></div> -<div class="paragraph"><p><em>Autoload</em> is documented in more details in the -<a href="../deps">Packages and dependencies</a> chapter.</p></div> -</div> -</div> -<div class="sect1"> +<p>Erlang.mk comes with a feature called <em>Autoload</em> which will use Rebar 2 to patch any Rebar project and make it compatible with Erlang.mk. This feature essentially patches Rebar out and adds a Makefile to the project that Erlang.mk can then use for building:</p> +<p><em>Autoload</em> is documented in more details in the <a href="../deps">Packages and dependencies</a> chapter.</p> <h2 id="_erlang_mk_projects_as_rebar_dependencies">Erlang.mk projects as Rebar dependencies</h2> -<div class="sectionbody"> -<div class="paragraph"><p>Erlang.mk projects can be made compatible with the Rebar family -of build tools pretty easily, as Erlang.mk will generate -all the files they require for building.</p></div> -<div class="paragraph"><p>The Rebar family requires two files: a <em>rebar.config</em> file -containing compilation options and the list of dependencies, -and the application resource file, found either at -<em>ebin/$(PROJECT).app</em> or at <em>src/$(PROJECT).app.src</em>.</p></div> -<div class="sect3"> +<p>Erlang.mk projects can be made compatible with the Rebar family of build tools pretty easily, as Erlang.mk will generate all the files they require for building.</p> +<p>The Rebar family requires two files: a <em>rebar.config</em> file containing compilation options and the list of dependencies, and the application resource file, found either at <em>ebin/$(PROJECT).app</em> or at <em>src/$(PROJECT).app.src</em>.</p> <h4 id="_rebar_configuration">Rebar configuration</h4> -<div class="paragraph"><p>Erlang.mk comes with a target that generates a <em>rebar.config</em> -file when invoked:</p></div> -<div class="listingblock"> -<div class="content"><!-- Generator: GNU source-highlight +<p>Erlang.mk comes with a target that generates a <em>rebar.config</em> file when invoked:</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 rebar<span style="color: #990000">.</span>config</tt></pre></div></div> -<div class="paragraph"><p>Careful! This will build the file even if it already existed -before.</p></div> -<div class="paragraph"><p>To build this file, Erlang.mk uses information it finds in -the <code>DEPS</code> and <code>ERLC_OPTS</code> variables, among others. This -means that the Rebar family builds your project much the -same way as Erlang.mk.</p></div> -<div class="paragraph"><p>Careful though! Different build tools have different fetching -strategies. If some applications provide differing dependencies, -they might be fetched differently by other build tools. Check -the upcoming Sanity check chapter to find out how to detect such -issues.</p></div> -<div class="paragraph"><p>You can automatically generate this file when you build -your application, by making it a dependency of the <code>app</code> -target:</p></div> -<div class="listingblock"> -<div class="content"><!-- Generator: GNU source-highlight +<pre><tt>$ make rebar<font color="#990000">.</font>config</tt></pre> +</div></div> +<p>Careful! This will build the file even if it already existed before.</p> +<p>To build this file, Erlang.mk uses information it finds in the <code>DEPS</code> and <code>ERLC_OPTS</code> variables, among others. This means that the Rebar family builds your project much the same way as Erlang.mk.</p> +<!-- @todo Sanity check chapter.--> +<p>Careful though! Different build tools have different fetching strategies. If some applications provide differing dependencies, they might be fetched differently by other build tools. Check the upcoming Sanity check chapter to find out how to detect such issues.</p> +<p>You can automatically generate this file when you build your application, by making it a dependency of the <code>app</code> target:</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><span style="color: #990000">app::</span> rebar.config</tt></pre></div></div> -<div class="paragraph"><p>Don’t forget to commit the file when it changes!</p></div> -<div class="paragraph"><p>If you run into other issues, it’s probably because you use a -feature specific to Erlang.mk, like the <code>cp</code> fetch method. -It could also be that we forgot to handle something! Sorry. -We are of course interested to hear about any compatibility -problems you may have, just open a ticket!</p></div> -</div> -<div class="sect3"> +<pre><tt><font color="#990000">app::</font> rebar.config</tt></pre> +</div></div> +<p>Don't forget to commit the file when it changes!</p> +<p>If you run into other issues, it's probably because you use a feature specific to Erlang.mk, like the <code>cp</code> fetch method. It could also be that we forgot to handle something! Sorry. We are of course interested to hear about any compatibility problems you may have, just open a ticket!</p> <h4 id="_application_resource_file">Application resource file</h4> -<div class="paragraph"><p>Erlang.mk has two ways to generate an application resource -file: from the information found in the Makefile, or from -the information found in the <em>src/$(PROJECT).app.src</em> file. -Needless to say, if you have this file in your repository, -then you don’t need to worry about compatibility with other -build tools.</p></div> -<div class="paragraph"><p>If you don’t, however, it’s not much harder. Every time -Erlang.mk will compile your application, it will produce -a new <em>ebin/$(PROJECT).app</em> file. Simply commit this file -when it changes. It will only change when you modify the -configuration, add or remove modules.</p></div> -</div> -</div> -</div> +<p>Erlang.mk has two ways to generate an application resource file: from the information found in the Makefile, or from the information found in the <em>src/$(PROJECT).app.src</em> file. Needless to say, if you have this file in your repository, then you don't need to worry about compatibility with other build tools.</p> +<p>If you don't, however, it's not much harder. Every time Erlang.mk will compile your application, it will produce a new <em>ebin/$(PROJECT).app</em> file. Simply commit this file when it changes. It will only change when you modify the configuration, add or remove modules.</p> + |