This article is in need of a technical review.
One can build many different products from the source code that can be checked out from Mozilla. There are varying levels of support for some of them, but much is possible. This is an attempt to give an overview of the process of building an arbitrary product and of the process of setting up a build for an arbitrary product in the Mozilla source. The "XXX" product is named after the comment marker that Mozilla implementers tend to use for "to do" or "should do" items or "watch out here" warnings in the source code.
In December of 2007, support for arbitrary build products may have been added and this documentation is an attempt to integrate that new opportunity into the current documentation. See 380846 and 353983. There are also many documents in the 'Build Documentation' category page and elsewhere that have relevant information.
There is specific documentation for specific products:
- Checkout and Build NSPR
- Tamarin Build Documentation
- XULRunner:Build Instructions and Creating XULRunner Apps with the Mozilla Build System
- Building TransforMiiX standalone (marked 'out of date')
- Building Songbird Standalone
- Building Necko Standalone
- Building only SpiderMonkey - the js engine
There are three basic steps to building a supported product. First, one must check out the source, which is best done using make. Second, a configure script must be run with the correct flags. The third step is just using make. When the first two steps work correctly, the third is a breeze. Keep in mind that some of this may need to be corrected for building with sources checked out from mercurial.
In order to check out source, there must be a MOZ_CO_PROJECT value used by the mozilla/client.mk file. Currently, there is support in this file for the following products. For some of these, no specific build page exists, but in some cases the build process is easy and the information in the Build instructions page will suffice. However, not all products listed are guaranteed to be buildable.
These names are used both as MOZ_CO_PROJECT=<string> in checkout and --enable-application=string in a mozconfig file.
* suite - Seamonkey project * browser - Firefox project * mail - Thunderbird project * minimo - small browser for devices, deprecated * composer - standalone composer, aka NVU * calendar - Sunbird or Calendar, and Lightning as well * xulrunner * camino
This is usable as MOZ_CO_PROJECT=string in checkout, but see the Tamarin documentation. Note that this may be obsolete.
Usable as --enable-application=<string> in a mozconfig file, but for what purpose?
* content/xslt - Standalone Transformiix XSLT * netwerk - Standalone Necko * tools/update-packaging - AUS-related packaging tools * standalone - standalone xpcom/xpconnect or for manually driving a build
Note: Support for building Necko and Transformiix XSLT standalone was removed in Gecko 9.0.
Third, one can type 'make' (or 'gmake' if needed) and if things are set up correctly, many wonderful things happen and a product is built.