How To Build Windows x64 Build

From Mozilla x86-64

I re-wrote how to build Mozilla for Win64 (x64, x86_64, Intel EM64T, AMD64). Since all patches isn't on current CVS, you have to get patches from Download page. Also, you need buildtools into Download page.

Contents

What do we need before building Mozilla?

  • Cygwin or MingW. You can download from http://www.cygwin.com/ or http://www.mingw.org/. If you use MingW on Vista, you have to use latest snapshot. Version 1.10 doesn't work on Vista x64. About workaround, see MSYS and Cygwin on x64 (AMD64)
  • Buildtools for AMD64. You can download from Download page. Source files are here, too.
  • Microsoft Platform SDK for Windows Vista. Firefox 3 needs Vista SDK to support Vista feature. Although you can get this by subscribing MSDN, you may be able to download this from http://www.microsoft.com/downloads/.
  • Microsoft Visual Studio 2005 Standard Edition or upper edition. Although I don't test Visual C++ Express 2008, it will be able to use it.
  • Python 2.5. You can use both 32bit and 64bit version.
  • 7-zip. Also you can use both 32bit and 64bit version.

Can I use mozilla-build package by mozilla.org?

Some tools into mozilla-build package is Yes, but...

  • mozilla-build package has no x64 buildtools. So it cannot build 64bit XPIDL.EXE. So you have to use x64 buildtools into Download page.
  • MSYS into mozilla-build doesn't work on x64 platform. Use version 1.11 and later. More information is MSYS and Cygwin on x64 (AMD64)

Applying a Patch

Download patch for x86 from Download page, then, you run the following command.

# patch -p1 < Win64-xxxxxxxx.patch

This patch does not include diff for mozilla/configure. So you have to run the following command on cygwin after applying a patch.

# autoconf-2.13

Environment Values

This is a sample that I use.

Path

C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin\x64;C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\BIN\amd64;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\bin\win64\amd64;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\bin;C:\Windows\Microsoft.NET\Framework64\v2.0.50727;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\VCPackages;C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools;C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\bin;C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\bin;C:\bin\mozilla-build\msys\bin;C:\bin\mozilla-build\msys\local\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;c:\bin;C:\bin\mozilla-build\moztools-x64\bin;C:\bin\mozilla-build\7zip;C:\bin\mozilla-build\info-zip;C:\bin\mozilla-build\nsis-2.22;C:\bin\mozilla-build\python25;C:\Program Files (x86)\Mercurial;

INCLUDE

C:\Program Files\Microsoft SDKs\Windows\v6.0\Include;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\ATLMFC\INCLUDE;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\INCLUDE;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\include;C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\include;

LIB

C:\Program Files (x86)\Microsoft Visual Studio 8\VC\ATLMFC\LIB\amd64;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\LIB\amd64;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\lib\amd64;C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\LIB\AMD64;

MOZ_TOOLS

C:\bin\mozilla-build\moztools-x64

.mozconfig

This is a sample that I use for Firefox x64.

. $topsrcdir/browser/config/mozconfig

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir
ac_add_options --disable-tests
ac_add_options --enable-installer
ac_add_options --target=x86_64-pc-mingw32
ac_add_options --host=x86_64-pc-mingw32
ac_add_options --enable-optimize=-Ox
ac_add_options --disable-debug
ac_add_options --with-windows-version=501
ac_add_options --disable-crashreporter
ac_add_options --disable-updater

Known Issue

  • If you use optimize flag with -O1 or -O2, Firefox will be crash in JavaScript engine or Gecko. Because compiler generates strenge code. So you should use -Ox like the above sample or --disable-optimize on configure.
  • There is no NSIS 64bit version. So installer is 32bit.