This article is in need of a technical review.
This page covers the basic steps needed to build a bleeding-edge, development version of Thunderbird. For additional, more detailed information, see the build documentation.
- Recommended: 4GB of RAM (having only 2GB RAM and 2GB swap may give memory errors during compile)
- High speed internet
Depending on your operating system you will need to carry out a different process to prepare your machine. So first complete the instructions for your OS and then continue following these build instructions. Please note that for the Linux/MacOS build you should ignore the bootstrap script's prompt to clone the mozilla-central repository and return to this document instead.
Get the source
Get the latest source code from Mozilla's
comm-central Mercurial code repository:
hg clone http://hg.mozilla.org/comm-central
Then, get all the repositories it depends on. The comm-central repository includes a script to do just that. This may take a while, it's a lot of code! First, cd into the
central subdirectory (created automatically by the previous command):
python client.py checkout
The source code requires 3.2GB of free space or more and additionally 5GB or more for default build.
For more on getting the source code, see the page Getting comm-central Source Code Using Mercurial [en-US].
To build thunderbird, you need to add a file named
.mozconfig to the comm-central checkout that contains the following line:
If you omit this line, the build system will build Firefox instead. Other build configuration options can be added to this file, although it's strongly recommended that you only use options that you fully understand. For example, to create a debug build instead of a release build, that file would contain:
For more on configuration options, see the page Configuring build options. Note that if you use an MOZ_OBJDIR it cannot be a sibling folder to your source directory. Use an absolute path to be sure!
OS X 10.9/10.10 Notice
Because of an issue with the 10.9 OS X SDK, you must use an earlier SDK version. To do this add the following to your .mozconfig:
The path to the SDKs are usually located at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/.
Before you start, make sure that the version you checked out is not busted. For hg tip, you should see green Bs on https://treeherder.mozilla.org/ui/#/jobs?repo=comm-central
To start the build, cd into the
comm-central subdirectory (created automatically by the
hg clone command), and run:
mach is our command-line tool to streamline common developer tasks. See the mach article for more.
Building can take a significant amount of time, depending on your system, OS, and chosen build options. Linux builds on a fast box may take under 15 minutes, but Windows builds on a slow box may take several hours. Tips for making builds faster.
The executable will be at the location listed under Running below.
Building Thunderbird and Lightning
If you've set up your build environment as above, then all you need to do is:
echo 'ac_add_options --enable-calendar' >> .mozconfig
comm-central directory, or just add the
ac_add_options --enable-calendar line to your .mozconfig with your favorite editor.
Then just re-run the mach command above (you can do the addition before running make for the first time).
Various temporary files, libraries, and the Thunderbird executable will be found in your object directory (under
comm-central/), which is prefixed with
obj-. The exact name depends on your system and OS. For example, a Mac user may get an object directory name of
The Thunderbird executable in particular, and its dependencies, are located under the
dist/bin folder under the object directory. To run the executable from your
comm-central working directory:
- OS X:
How to update and build again
comm-central directory, run the same command as before:
python client.py checkout
Then just re-run the mach command above. This will only recompile files that changed, but it's still a long haul.
To build after making changes, run
again. This will only rebuild what is necessary for these changes. It is also possible to use
./mach build path/to/dir
to build parts of the tree. However, this approach may or may not yield correct results, so it is not recommended.
It is important to specify the correct path (obviously):
For code under /mozilla, for example in the spellchecker, run
./mozilla/mach build extensions/spellcheck/src
without /mozilla in the path. For code outside the /mozilla directory, specify the complete relative path, for example run
./mozilla/mach build mailnews/import/outlook/src
- Checked comm-central on Treeherder for known failures at the time you pulled the code?
- If the trunk is broken, you may wish to consider building one of the branches (to pull the source code from a branch, just replace the url to the repository in the hg clone instruction).
- On Windows: Checked that the MAPI header files from http://www.microsoft.com/en-us/download/details.aspx?id=12905 are installed because the MAPI header files are not bundled with Visual Studio 2013 (Windows SDK 8.1). You should copy the header files to a Windows SDK include directory so that the build process will find the files, for example to
C:\Program Files (x86)\Windows Kits\8.1\Include\shared.
- Checked to make sure that the path in which you placed the source code has no spaces, and is not too long?
- Have you searched the bug database for issues relating to your problem (e.g., platform-specific issues)?
- Try asking in mozilla.dev.builds - don't forget to include details of what is in your mozconfig, and what the actual error is.
- Did you make mozilla/ a symlink? That doesn't work.
- Do you have
@TOPSRCDIR@or relative paths in your mozconfig? Those have caused several problems historically and tend to be poorly tested when the build system changes.