General questions
DMD Compiler; Mac OS X Mavericks (10.9) or later; Xcode. Assert Expressions, when they fail, call the C runtime library assert failure function rather than a. Visual Studio for Mac.NET. Compile failure around conversion-assignment to std::pair. Cppcompiler Fixed In: Visual Studio 2019 version 16.0. Taiju Tsuiki reported Nov 13, 2018 at 06:19 AM. Show comments 1. This issue is read only, because it has been in Closed–Fixed state for over 90 days.
- Which systems are supported Mozilla build platforms?
- See Supported build configurations.
Locating errors
make
(or gmake
if necessary). This will relaunch the build for this specific piece of code, displaying more detailed error messages.Getting Help
Windows-specific questions
Note: See Windows Build Prerequisites for additional information. While you can still build FIrefox _for_ 32-bit Windows systems, building on 32-bit Windows machines is not supported.
- configure: error: installation or configuration problem: C compiler cannot create executables.
- Look at the
config.log
in the obj... directory. Try checking to make sure your PATH variable includes all the necessary directories. If you are using mozilla-build, then you need to start ming32 with one of thestart-msvc*.bat
files. If your build environment has changed, you may need to delete your config.cache file (in your mozilla or object directory) and then build again. - client.mk:121 *** This source tree appears to have Windows-style line endings.
- This occurs when you are using git and do not have the proper line ending settings. The commands to set the proper line endings are (note this will remove local changes):
Mingw32-specific questions
- If the configure or build fails due to a missing w32api, add the mingw32's /include directory to the end of your INCLUDE environment variable. Mingw32 libraries or binaries should not be needed, only the headers.
Unix-specific questions
- How do I build on Solaris 10 x86?
- See Solaris Build Prerequisites.
Mac-specific questions
- It doesn't work
- For common Mac build errors and additional troubleshooting tips, see Troubleshooting in Mac OS X Build Prerequisites. In particular,
bootstrap.py
can diagnose and suggest fixes for most common errors (wrong Xcode version, missing build dependencies).
- Can I build a Mozilla application as a Universal Binary?
- Yes. See Mac OS X Universal Binaries for instructions.
Making builds faster
See also Incremental Build.
Yes. See the GNU Make Parallel Execution manual entry for optimal usage.
As of December 2012, running builds through
mach
or client.mk
will result in the optimal values being passed to make automatically. If you would like to change the default values, add something like the following to your mozconfig file:Simply set the integer value after -j to the max number of parallel processes to use. For optimal builds, this should be around the number of processor cores in your system.
(note: I have found that relying on automatic setting may not yield optimum results, in my case manually setting make -j resulted in a 50% decrease in build time. -j1 may keep it from blocking / becoming unresponsive.)
Yes, disabling debugging symbols can speed up linking considerably. Add the following to your .mozconfig:
In your .mozconfig file, add:
See the notes for parallel builds.
Yes. See the ccache page for more details. Use of ccache is highly encouraged to speed up builds.
Build configurations
An objdir build refers to the process of creating the output files in a different place than where the source lives. This is a standard feature of most configure-based projects. It allows you to build for multiple configurations, including multiple platforms if you use a network filesystem, from a single source tree. It also avoids tainting your source tree so that you know that the files in your tree have not been modified by the build process.
If you run configure by hand, you can use the standard method of creating an empty directory any place on the disk, changing to that directory and running /path/to/mozilla/configure from there.
If you use client.mk to build, you can add the following to your mozconfig file:
Implementation questions
Simply put, autoconf 2.5x does not offer anything to make the upgrade worth the effort. Autoconf 2.5x is not backwards compatible with autoconf 2.13 and the additional restrictions made by the newer versions of autoconf would require a major rewrite of the Mozilla build system for questionable gain.
Some of the 2.13 features, such as the ability to pass additional arguments to sub-configures, are not available in 2.5x. People have asked repeated about those features on the autoconf mailing list without any favorable response. Rewriting the configures of the sub-projects of Mozilla (NSPR & LDAP) is not an acceptable tradeoff. The sub-projects are also standalone projects and forking an entire codebase because of a build system incompatiblity is silly.
See also
- Debugging Mozilla on Windows FAQ: Tips on how to debug Mozilla on Windows