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 2005

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

Visual Studio 2010

Don't use --enable-optimize. Because optimizer of Visual C++ 2010 may generate strength code for regexp.