Building ======== Marionette is built in to Firefox and ships in the official Firefox binary. As Marionette is written in [XPCOM] flavoured JavaScript, you may choose to rely on so called [artifact builds], which will download pre-compiled Firefox blobs to your computer. This means you don’t have to compile Firefox locally, but does come at the cost of having a good internet connection. To enable [artifact builds] you may choose ‘Firefox for Desktop Artifact Mode’ when bootstrapping. Once you have a clone of [mozilla-unified], you can set up your development environment by running this command and following the on-screen instructions: % ./mach bootstrap To perform a regular build, simply do: % ./mach build You can clean out the objdir using this command: % ./mach clobber Occasionally a clean build will be required after you fetch the latest changes from mozilla-central. You will find that the the build will error when this is the case. To automatically do clean builds when this happens you may optionally add this line to the _mozconfig_ file in your top source directory: mk_add_options AUTOCLOBBER=1 If you compile Firefox frequently you will also want to enable [ccache] and [sccache] if you develop on a macOS or Linux system: mk_add_options 'export RUSTC_WRAPPER=sccache' mk_add_options 'export CCACHE_CPP2=yes' ac_add_options --with-ccache [mozilla-unified]: https://hg.mozilla.org/mozilla-unified/ [artifact builds]: https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Artifact_builds [ccache]: https://ccache.samba.org/ [sccache]: https://github.com/mozilla/sccache