e107793b68762d6ffed2c46ec931c7ef37479dcc
=======================
Cretonne Code Generator
=======================
Cretonne is a low-level retargetable code generator. It translates a `target-independent
intermediate representation <https://cretonne.readthedocs.io/en/latest/langref.html>`_ into executable
machine code.
*This is a work in progress that is not yet functional.*
.. image:: https://readthedocs.org/projects/cretonne/badge/?version=latest
:target: https://cretonne.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
.. image:: https://travis-ci.org/Cretonne/cretonne.svg?branch=master
:target: https://travis-ci.org/Cretonne/cretonne
:alt: Build Status
.. image:: https://badges.gitter.im/Cretonne/cretonne.png
:target: https://gitter.im/Cretonne/Lobby/~chat
:alt: Gitter chat
For more information, see `the documentation
<https://cretonne.readthedocs.io/en/latest/?badge=latest>`_.
Planned uses
------------
Cretonne is designed to be a code generator for WebAssembly, but it is general enough to be useful
elsewhere too. The initial planned uses that affected its design are:
1. `WebAssembly compiler for the SpiderMonkey engine in Firefox
<spidermonkey.rst#phase-1-webassembly>`_.
2. `Backend for the IonMonkey JavaScript JIT compiler in Firefox
<spidermonkey.rst#phase-2-ionmonkey>`_.
3. `Debug build backend for the Rust compiler <rustc.rst>`_.
Building Cretonne
-----------------
Cretonne is using the Cargo package manager format. First, ensure you have
installed a current stable rust (stable, beta, and nightly should all work, but
only stable and beta are tested consistently). Then, change the working
directory to your clone of cretonne and run::
cargo build
This will create a *target/debug* directory where you can find the generated
binary.
To build the optimized binary for release::
cargo build --release
You can then run tests with::
./test-all.sh
You may need to install the *wat2wasm* tool from the `wabt
<https://github.com/WebAssembly/wabt>`_ project in order to run all of the
WebAssembly tests. Tests requiring wat2wasm are ignored if the tool is not
installed.
Building the documentation
--------------------------
To build the Cretonne documentation, you need the `Sphinx documentation
generator <https://www.sphinx-doc.org/>`_::
$ pip install sphinx sphinx-autobuild sphinx_rtd_theme
$ cd cretonne/docs
$ make html
$ open _build/html/index.html
We don't support Sphinx versions before 1.4 since the format of index tuples
has changed.
Description
Languages
Rust
77.8%
WebAssembly
20.6%
C
1.3%