blob: b44152a57f21ba46144e85e6a655c7b201c6ecc8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
---
title: Compiler Firefox avec Rust
slug: Mozilla/Firefox/Compiler_Firefox_avec_Rust
tags:
- Compilation
- Gecko
- rust
translation_of: Archive/Mozilla/Firefox/Building_Firefox_with_Rust_code
---
<div>{{FirefoxSidebar}}</div><p>En mai 2015 le <a href="http://www.rust-lang.org/">langage de programmation Rust</a> a atteint sa version stable 1.0 et diverses expérimentations comme la rédaction de parties de Gecko en Rust ont commencé. Cette page est un guide sommaire destiné aux personnes travaillant sur ce projet.</p>
<h2 id="Ajouter_le_code_Rust">Ajouter le code Rust</h2>
<p>Le support de base pour la compilation avec le code Rust est disponible sur la page du <a class="bz_bug_link
bz_status_RESOLVED bz_closed" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1161339" title="RESOLVED FIXED - Support rust files in moz.build SOURCES">bogue 1161339</a>. Si vous disposez de rustc dans votre variable path vous pouvez ajouter les fichiers .rs à la variable SOURCES dans moz.build, puis ajouter :</p>
<pre>ac_add_options --enable-rust</pre>
<p>à votre <a href="/en-US/docs/Configuring_Build_Options">mozconfig</a> et ça devrait fonctionner.</p>
<p>La bibliothèque standard de rust utilise un thread local de stockage qui n'est pas supporté sur MacOS X 10.6. Ainsi, si vous compilez le projet depuis un Mac vous devez aussi ajouter :</p>
<pre>ac_add_options --enable-macos-target=10.7</pre>
<p>Vous pouvez aussi compiler une toolchain personnalisée de Rust sans la partie relative à std::thread. Pour plus de détails, regardez le <a class="bz_bug_link
bz_status_NEW " href="https://bugzilla.mozilla.org/show_bug.cgi?id=1164109" title="NEW - rust code fails to link on macosx because of thread-local storage">bogue 1164109</a>.</p>
<p>Because of limitations of cargo and the Firefox build system, currently we build a stand-alone static lib from each rust file listed in SOURCES. You must therefore list just the top-level rust file. Everything must be a single crate, like a manual unified build. The rust compiler will search for interior modules by source file name, but <code>extern crate</code> references won't be resolved.</p>
<p>Allez voir le <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1135640">bogue 1135640</a> ('oxidation') pour un suivi global.</p>
<h2 id="Tester_le_code_Rust">Tester le code Rust</h2>
<p>Il existe un test unitaire simple de disponible dans le répertoire du projet. Vous pouvez l'utiliser pour savoir si Rust est activé et fonctionne avec votre configuration.</p>
<pre>./mach gtest rust.*</pre>
<p>Regardez si le test <strong>rust.CallFromCpp</strong> réussi ainsi que tous les autres.</p>
|