Build:MozillaBuild For x64

From Mozilla x86-64

How to setup for x64 build environment. You cannot use same way of building 32-bit version. Also, for MSYS, see MSYS and Cygwin on x64 (AMD64) at first.

Contents

Recommend Compiler

I recommend that you use Visual Studio 2008. Other version has some problems with --enable-optimize. Also, jemalloc only supports Visual Studio 2005 Professional and Visual Studio 2008 Professional. You need professional edition to compile jemalloc since x64 source code of CRT is only into professional edition.

Mozilla-Build

At first, download MozillaBuild package from https://developer.mozilla.org/en/Windows_Build_Prerequisites#MozillaBuild. MozillaBuild 1.4 or later supports x64 build environment.

Which script does I use to set the environment value?

  • start-msvc8-x64.bat for Visual Studio 2005
  • start-msvc9-x64.bat for Visual Studio 2008
  • start-msvc10-x64.bat for Visual Studio 2010

Also, if you use Windows XP x64 or 2003 x64, see https://bugzilla.mozilla.org/show_bug.cgi?id=506323. You need modify batch file.

Sample .mozconfig file

This is a sample .mozconfig to build Firefox.

. $topsrcdir/browser/config/mozconfig

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../objdir
ac_add_options --target=x86_64-pc-mingw32
ac_add_options --host=x86_64-pc-mingw32

Note that --target and --host have to set x86_64-pc-mingw32 due to no uname.exe for x64.

Compile Error by C2733

C:\Program Files\Microsoft Visual Studio 8\VC\include\intrin.h(912) : error C2733: second C linkage of overloaded function '_interlockedbittestandset' not allowed
  C:\Program Files\Microsoft Visual Studio 8\VC\include\intrin.h(912) : see declaration of '_interlockedbittestandset'

To workaround this, comment out error line in intrin.h. See http://www.hydrogenaudio.org/forums/index.php?showtopic=50972.

Linker Error by LNK1103

uuid.lib(oldacc_i.obj) : fatal error LNK1103: debugging information corrupt; recompile module

See KB949009. You can download a hotfix from connect.microsoft.com.

Optimized Build

Visual Studio 2010

When using PGO, 64-bit toolchain will crash (Internal Compile Error) due to linker bug. You need use 32-bit linker instead of. To use 32-bit toolchain to generate 64-bit binary, you must patch mozilla-build (See Bug 682788).

Visual Studio 2005

See KB976617. You may need this hotfix if using --enable-optimize.