Simple Firefox build

  • Revision slug: Simple_Firefox_build
  • Revision title: Simple Firefox build
  • Revision id: 18061
  • Created:
  • Creator: Dolske
  • Is current revision? No
  • Comment Smallish tweaks to the sections for build tools.; 115 words added, 84 words removed

Revision Content

This page covers the basic steps needed to build a bleeding-edge, development version of Firefox. For more additional, more detailed information, see the build documentation.

Preparing your system

Before you can build Firefox, you'll need the build tools listed below and a few gigabytes of free disk space. Builds will be slow unless you have at least 2GB of RAM.

Linux

Run the following commands in a terminal to install the needed tools:

Ubuntu users:

sudo apt-get build-dep firefox
sudo apt-get install mercurial libasound2-dev libcurl4-openssl-dev libnotify-dev libxt-dev libiw-dev mesa-common-dev autoconf2.13 yasm

Debian users: Same as Ubuntu, but replace the first command with sudo apt-get build-dep iceweasel

Fedora users:

sudo yum groupinstall 'Development Tools' 'Development Libraries' 'GNOME Software Development'
sudo yum install mercurial autoconf213 glibc-static libstdc++-static yasm wireless-tools-devel mesa-libGL-devel

Problems? See Linux build prerequisites.

Mac

  • Install Xcode 3. You can download this from Apple, or install it from the OS DVDs that came with your Mac.
  • If you're using OS X 10.6.5 or later, install Java Developer Package for Mac (for a file required by the MacPorts packages we install below).
  • Install MacPorts, and then run these commands in a terminal:
    sudo port sync
    sudo port install mercurial libidl autoconf213 yasm
    

Problems? See Mac OS X build prerequisites.

Windows

  • Make sure your system is up-to-date through Windows Update. Windows XP needs at least Service Pack 2 and .NET Framework 2.0.
  • Install Visual C++ 2005 Professional, VC++ 2008 Professional or Express with SP1, or Visual C++ 2010 Professional. VC++ 2008 Express without SP1 will not work.
  • You may need to install one or more Windows SDKs. See Windows SDK versions for a quick guide.
  • Install MozillaBuild, a package of additional build tools. (If you see a Windows error dialog giving you the option to re-install with the 'correct settings', choose that option and after that all should be well.)
  • Open a shell window by running: c:\mozilla-build\start-msvcX.bat (where X is 8 for VS 2005, and 9 for VS 2008). Even if you're on 64-bit Windows, do not use the files ending in -x64.bat.

Problems? See Windows build prerequisites.

Building Firefox

Building Firefox requires at least 2.5 GB of disk space, 2-4 GB of system RAM (more is even better), and lots of available swap space. On non-Windows systems, you are probably starting from your ~ directory (your home directory) and can skip changing directory if you like. From the MozillaBuild shell on Windows, running

cd /c

will change directory to /c (C:), then

hg clone http://hg.mozilla.org/mozilla-central/

will clone into /c/mozilla-central (C:\mozilla-central).

The directory chosen must not have a space in the path (e.g. "Documents and Settings") as this will break things.

mozconfig

For a standard release build (optimized), a mozconfig file is not strictly required. For a debug build, you need different configuration options in your mozconfig.

Use as few configuration options as you can.

OS X 10.6 ("Snow Leopard") users will need extra options in their mozconfig, see the OS X Build Prerequisites page for details.

The source directory (topsrcdir) is the root directory of the checkout. It has many subdirectories within it, containing source code files and makefiles. An objdir is where object files and processed makefiles are put during the build. A mozconfig named ".mozconfig" in the top source dir is automatically used. If you do not specify a MOZ_OBJDIR within a mozconfig it will be automatically set to @TOPSRCDIR@/obj-@CONFIG_GUESS@.

"export MOZCONFIG=/c/some/path/mozconfig" in the shell will tell the build system to use that mozconfig instead.

Parallel compilation is generally faster. Use a value (4 in the example below) equal to the number of processor cores. Parallel compilation on Windows is unreliable due to bug 524149, so use a value of 1. This has the same effect as deleting the whole MOZ_MAKE_FLAGS line.

Here's a sample mozconfig for a debug build:

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-ff-debug
mk_add_options MOZ_MAKE_FLAGS="-j4"
ac_add_options --enable-debug
ac_add_options --disable-optimize

In your mozilla-central directory, run

make -f client.mk

to start building. After a successful build with the above configuration, the firefox executable can be found in objdir-ff-debug/dist/bin/ (on Mac, objdir-ff-debug/dist/Minefield.app/Contents/MacOS/).

How to build again later

In your mozilla-central directory, run these commands:

# Get the latest source
hg pull
hg update

Then just re-run the "make -f client.mk" command above. make will only recompile files that changed, but it's still a long haul. An incremental build can be faster.

{{ languages( { "ja": "ja/Simple_Firefox_build" } ) }}

Revision Source

<p>This page covers the basic steps needed to build a bleeding-edge, development version of Firefox. For more additional, more detailed information, see the <a class="internal" href="/En/Developer_Guide/Build_Instructions" title="En/Build Documentation">build documentation</a>.</p>
<h2>Preparing your system</h2>
<p>Before you can build Firefox, you'll need the build tools listed below and a few gigabytes of free disk space. Builds will be slow unless you have at least 2GB of RAM.</p>
<h3>Linux</h3>
<p>Run the following commands in a terminal to install the needed tools:</p>
<p><strong>Ubuntu</strong> users:</p>
<pre>sudo apt-get build-dep firefox
sudo apt-get install mercurial libasound2-dev libcurl4-openssl-dev libnotify-dev libxt-dev libiw-dev mesa-common-dev autoconf2.13 yasm
</pre>
<p><strong>Debian</strong> users: Same as Ubuntu, but replace the first command with <code>sudo apt-get build-dep iceweasel</code></p>
<p><strong>Fedora</strong> users:</p>
<pre>sudo yum groupinstall 'Development Tools' 'Development Libraries' 'GNOME Software Development'
sudo yum install mercurial autoconf213 glibc-static libstdc++-static yasm wireless-tools-devel mesa-libGL-devel
</pre>
<p>Problems? See <a href="/En/Developer_Guide/Build_Instructions/Linux_Prerequisites" title="https://developer.mozilla.org/En/Developer_Guide/Build_Instructions/Linux_Prerequisites">Linux build prerequisites</a>.</p>
<h3>Mac</h3>
<ul> <li>Install <a class=" link-https" href="https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20792" title="https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20792">Xcode 3</a>. You can download this from Apple, or install it from the OS DVDs that came with your Mac.</li> <li>If you're using OS X 10.6.5 or later, install <a class=" external" href="http://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20719" title="http://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20719">Java Developer Package for Mac</a> (for a file required by the MacPorts packages we install below).</li> <li>Install <a class="external" href="http://www.macports.org/install.php">MacPorts</a>, and then run these commands in a terminal: <pre class="eval">sudo port sync
sudo port install mercurial libidl autoconf213 yasm
</pre> </li>
</ul>
<p>Problems? See <a class="internal" href="/En/Developer_Guide/Build_Instructions/Mac_OS_X_Prerequisites" title="en/Mac_OS_X_Build_Prerequisites">Mac OS X build prerequisites</a>.</p>
<h3>Windows</h3>
<ul> <li>Make sure your system is up-to-date through Windows Update. Windows XP needs at least <a class="external" href="http://www.microsoft.com/windowsxp/sp2/default.mspx">Service Pack 2</a> and <a class="external" href="http://www.microsoft.com/downloads/info.aspx?na=47&amp;p=3&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=4377f86d-c913-4b5c-b87e-ef72e5b4e065&amp;u=details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;displaylang=en">.NET Framework 2.0</a>.</li> <li>Install Visual C++ 2005 Professional, VC++ 2008 Professional or <a class="external" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F3FBB04E-92C2-4701-B4BA-92E26E408569&amp;displaylang=en" title="http://www.microsoft.com/downloads/details.aspx?FamilyId=F3FBB04E-92C2-4701-B4BA-92E26E408569&amp;displaylang=en">Express with SP1</a>, or Visual C++ 2010 Professional. VC++ 2008 Express without SP1 will not work.</li> <li>You may need to install one or more Windows SDKs. See <a class="internal" href="/En/Windows_SDK_versions" title="En/Windows SDK versions">Windows SDK versions</a> for a quick guide.</li> <li>Install <a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe" title="http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe">MozillaBuild</a>, a package of additional build tools. (If you see a Windows error dialog giving you the option to re-install with the 'correct settings', choose that option and after that all should be well.)</li> <li>Open a shell window by running: <code>c:\mozilla-build\start-msvcX.bat</code> (where X is 8 for VS 2005, and 9 for VS 2008). <strong>Even if you're on 64-bit Windows, do not use the files ending in <code>-x64.bat</code>.</strong></li>
</ul>
<p>Problems? See <a class="internal" href="/En/Developer_Guide/Build_Instructions/Windows_Prerequisites" title="en/Windows_Build_Prerequisites">Windows build prerequisites</a>.</p>
<h2>Building Firefox</h2>
<p>Building Firefox requires at least 2.5 GB of disk space, 2-4 GB of system RAM (more is even better), and lots of available swap space. On non-Windows systems, you are probably starting from your ~ directory (your home directory) and can skip changing directory if you like. From the MozillaBuild shell on Windows, running</p>
<pre>cd /c</pre>
<p>will change directory to <code>/c</code> (C:), then</p>
<pre>hg clone http://hg.mozilla.org/mozilla-central/</pre>
<p>will clone into <code>/c/mozilla-central (C:\mozilla-central</code>).</p>
<p>The directory chosen must not have a space in the path (e.g. "Documents and Settings") as this will break things.</p>
<h3>mozconfig</h3>
<p>For a standard release build (optimized), a <code>mozconfig</code> file is not strictly required. For a debug build, you need different <a href="/en/Configuring_Build_Options" title="en/Configuring Build Options">configuration options </a>in your <code>mozconfig</code>.</p>
<p>Use as few configuration options as you can.</p>
<p>OS X 10.6 ("Snow Leopard") users will need extra options in their <code>mozconfig</code>, see the <a class="internal" href="/En/Developer_Guide/Build_Instructions/Mac_OS_X_Prerequisites" title="En/Developer Guide/Build Instructions/Mac OS X Prerequisites">OS X Build Prerequisites</a> page for details.</p>
<p>The source directory (topsrcdir) is the root directory of the checkout. It has many subdirectories within it, containing source code files and makefiles. An objdir is where object files and processed makefiles are put during the build. A <code>mozconfig</code> named ".mozconfig" in the top source dir is automatically used. If you do not specify a MOZ_OBJDIR within a mozconfig it will be automatically set to @TOPSRCDIR@/obj-@CONFIG_GUESS@.<code><br>
</code></p>
<p><code>"export MOZCONFIG=/c/some/path/mozconfig"</code> in the shell will tell the build system to use that mozconfig instead.</p>
<p>Parallel compilation is generally faster. Use a value (4 in the example below) equal to the number of processor cores. Parallel compilation on Windows is unreliable due to bug 524149, so use a value of 1. This has the same effect as deleting the whole MOZ_MAKE_FLAGS line.</p>
<p>Here's a sample <code>mozconfig</code> for a debug build:</p>
<pre>mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-ff-debug
mk_add_options MOZ_MAKE_FLAGS="-j4"
ac_add_options --enable-debug
ac_add_options --disable-optimize</pre>
<p>In your <code>mozilla-central</code> directory, run</p>
<pre>make -f client.mk
</pre>
<p>to start building. After a successful build with the above configuration, the <code>firefox</code> executable can be found in <code>objdir-ff-debug/dist/bin</code>/ (on Mac, <code>objdir-ff-debug/dist/Minefield.app/Contents/MacOS/</code>).</p>
<h2>How to build again later</h2>
<p>In your <code>mozilla-central</code> directory, run these commands:</p>
<pre># Get the latest source
hg pull
hg update
</pre>
<p>Then just re-run the "<code>make -f client.mk</code>" command above. <code>make</code> will only recompile files that changed, but it's still a long haul. An <a class="internal" href="/en/Incremental_Build" title="En/Incremental Build">incremental build</a> can be faster.</p>
<p>{{ languages( { "ja": "ja/Simple_Firefox_build" } ) }}</p>
Revert to this revision