How to build Firefox with Visual Studio 2005 Express Edition

Discussion of third-party/unofficial Firefox/Thunderbird/SeaMonkey builds.
Post Reply
User avatar
Sephirot
Posts: 247
Joined: June 15th, 2004, 7:56 am

How to build Firefox with Visual Studio 2005 Express Edition

Post by Sephirot »

I'm building Firefox with the Visual Studio 2003 Toolkit but I'd like to build it with VC 2005 Express Edition now.

How should my PATH, LIB and INCLUDE environment variables look like?

What other things do I need? Platform SDK? .NET SDK? .NET Framework?
Author of Bookmarks Menu Button, Autoclose Bookmark&History Folders and more

Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.19pre) Gecko/20110701 Firefox/3.6.19pre <-- build with MS VC++ 2010 SP1 and PGO on Win 7 x64
mmoy
Posts: 5030
Joined: February 17th, 2004, 9:05 pm
Location: New Hampshire
Contact:

Post by mmoy »

Is VS 2005 EE available now for download or is it still in Beta? I have a VS2005 EE Beta Mozilla build environment setup but the Beta expired on me and I was waiting for the Release version to come out to buy it but if they are doing a free EE of VS2005, I may just go with that. I'll try to post some more stuff on getting VS2005 tonight if someone doesn't beat me to it. We used to have a complete set of directions on pryan.org but the forum went away.
Dell E521 X2 5600+ MacBookPro 17'' 2.5 Ghz Penryn Dell M1330 2.0 Ghz Merom 4 GB Vista x64 Compaq r3000z AMD 64 3200+ (Win 32/64) PowerMac G5 1.8 Ghz MMOY-1.5 (OSX 10) Inspiron 8500, 4100, 4000, Dimension 2300 MacBook Pro 2.2 Ghz HP E6600 HP X2 4400+
User avatar
Sephirot
Posts: 247
Joined: June 15th, 2004, 7:56 am

Post by Sephirot »

mmoy wrote:Is VS 2005 EE available now for download or is it still in Beta? I have a VS2005 EE Beta Mozilla build environment setup but the Beta expired on me and I was waiting for the Release version to come out to buy it but if they are doing a free EE of VS2005, I may just go with that. I'll try to post some more stuff on getting VS2005 tonight if someone doesn't beat me to it. We used to have a complete set of directions on pryan.org but the forum went away.
Yes, it's available for free download until November 6, 2006.

http://msdn.microsoft.com/vstudio/express/default.aspx

Btw, the first thing I've noticed is, that the G3, G4, G5, G6, G7 and GB Opions are not available in the C++ compiler :(
Author of Bookmarks Menu Button, Autoclose Bookmark&History Folders and more

Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.19pre) Gecko/20110701 Firefox/3.6.19pre <-- build with MS VC++ 2010 SP1 and PGO on Win 7 x64
mmoy
Posts: 5030
Joined: February 17th, 2004, 9:05 pm
Location: New Hampshire
Contact:

Post by mmoy »

Sephirot wrote:
mmoy wrote:Is VS 2005 EE available now for download or is it still in Beta? I have a VS2005 EE Beta Mozilla build environment setup but the Beta expired on me and I was waiting for the Release version to come out to buy it but if they are doing a free EE of VS2005, I may just go with that. I'll try to post some more stuff on getting VS2005 tonight if someone doesn't beat me to it. We used to have a complete set of directions on pryan.org but the forum went away.
Yes, it's available for free download until November 6, 2006.

http://msdn.microsoft.com/vstudio/express/default.aspx

Btw, the first thing I've noticed is, that the G3, G4, G5, G6, G7 and GB Opions are not available in the C++ compiler :(


They've gone to a blended model. There are a few other switch changes too.
Dell E521 X2 5600+ MacBookPro 17'' 2.5 Ghz Penryn Dell M1330 2.0 Ghz Merom 4 GB Vista x64 Compaq r3000z AMD 64 3200+ (Win 32/64) PowerMac G5 1.8 Ghz MMOY-1.5 (OSX 10) Inspiron 8500, 4100, 4000, Dimension 2300 MacBook Pro 2.2 Ghz HP E6600 HP X2 4400+
User avatar
BlueFyre
Posts: 1985
Joined: February 11th, 2004, 4:33 pm

Post by BlueFyre »

mmoy wrote:They've gone to a blended model. There are a few other switch changes too.


Do you happen to know what the optimization options are now?
If you notice this notice you may notice that this notice is not worth noticing.
User avatar
Sephirot
Posts: 247
Joined: June 15th, 2004, 7:56 am

Post by Sephirot »

BlueFyre wrote:
mmoy wrote:They've gone to a blended model. There are a few other switch changes too.


Do you happen to know what the optimization options are now?

Code: Select all

C:\Programme\Microsoft Visual Studio 8\VC>cl -? > C:\cl.txt
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

                         C/C++ COMPILER OPTIONS


                              -OPTIMIZATION-

/O1 minimize space                      /O2 maximize speed
/Ob<n> inline expansion (default n=0)   /Od disable optimizations (default)
/Og enable global optimization          /Oi[-] enable intrinsic functions
/Os favor code space                    /Ot favor code speed
/Ox maximum optimizations               /Oy[-] enable frame pointer omission

                             -CODE GENERATION-

/GF enable read-only string pooling     /Gm[-] enable minimal rebuild
/Gy[-] separate functions for linker    /GS[-] enable security checks
/GR[-] enable C++ RTTI                  /GX[-] enable C++ EH (same as /EHsc)
/EHs enable C++ EH (no SEH exceptions)  /EHa enable C++ EH (w/ SEH exceptions)
/EHc extern "C" defaults to nothrow     
/fp:<except[-]|fast|precise|strict> choose floating-point model:
    except[-] - consider floating-point exceptions when generating code
    fast - "fast" floating-point model; results are less predictable
    precise - "precise" floating-point model; results are predictable
    strict - "strict" floating-point model (implies /fp:except)
/GL[-] enable link-time code generation /GA optimize for Windows Application
/Ge force stack checking for all funcs  /Gs[num] control stack checking calls
/Gh enable _penter function call        /GH enable _pexit function call
/GT generate fiber-safe TLS accesses    /RTC1 Enable fast checks (/RTCsu)
/RTCc Convert to smaller type checks    /RTCs Stack Frame runtime checking
/RTCu Uninitialized local usage checks 
/clr[:option] compile for common language runtime, where option is:
    pure - produce IL-only output file (no native executable code)
    safe - produce IL-only verifiable output file
    oldSyntax - accept the Managed Extensions syntax from Visual C++ 2002/2003
    initialAppDomain - enable initial AppDomain behavior of Visual C++ 2002
    noAssembly - do not produce an assembly
/Gd __cdecl calling convention          /Gr __fastcall calling convention
/Gz __stdcall calling convention        /GZ Enable stack checks (/RTCs)
/QIfist[-] use FIST instead of ftol()   
/hotpatch ensure function padding for hotpatchable images
/arch:<SSE|SSE2> minimum CPU architecture requirements, one of:
    SSE - enable use of instructions available with SSE enabled CPUs
    SSE2 - enable use of instructions available with SSE2 enabled CPUs

                              -OUTPUT FILES-

/Fa[file] name assembly listing file    /FA[scu] configure assembly listing
/Fd[file] name .PDB file                /Fe<file> name executable file
/Fm[file] name map file                 /Fo<file> name object file
/Fp<file> name precompiled header file  /Fr[file] name source browser file
/FR[file] name extended .SBR file       
/doc[file] process XML documentation comments and optionally name the .xdc file

                              -PREPROCESSOR-

/AI<dir> add to assembly search path    /FU<file> forced using assembly/module
/C don't strip comments                 /D<name>{=|#}<text> define macro
/E preprocess to stdout                 /EP preprocess to stdout, no #line
/P preprocess to file                   /Fx merge injected code to file
/FI<file> name forced include file      /U<name> remove predefined macro
/u remove all predefined macros         /I<dir> add to include search path
/X ignore "standard places"             

                                -LANGUAGE-

/Zi enable debugging information        /Z7 enable old-style debug info
/Zp[n] pack structs on n-byte boundary  /Za disable extensions
/Ze enable extensions (default)         /Zl omit default library name in .OBJ
/Zg generate function prototypes        /Zs syntax check only
/vd{0|1|2} disable/enable vtordisp      /vm<x> type of pointers to members
/Zc:arg1[,arg2] C++ language conformance, where arguments can be:
    forScope[-] - enforce Standard C++ for scoping rules
    wchar_t[-] - wchar_t is the native type, not a typedef
/ZI enable Edit and Continue debug info
/openmp enable OpenMP 2.0 language extensions

                              -MISCELLANEOUS-

@<file> options response file           /?, /help print this help message
/bigobj generate extended object format /c compile only, no link
/errorReport:option Report internal compiler errors to Microsoft
    none - do not send report               
    prompt - prompt to immediately send report
    queue - at next admin logon, prompt to send report (default)
    send - send report automatically         
/FC use full pathnames in diagnostics   /H<num> max external name length
/J default char type is unsigned        /nologo suppress copyright message
/showIncludes show include file names   /Tc<source file> compile file as .c
/Tp<source file> compile file as .cpp   /TC compile all files as .c
/TP compile all files as .cpp           /V<string> set version string
/w disable all warnings                 /wd<n> disable warning n
/we<n> treat warning n as an error      /wo<n> issue warning n once
/w<l><n> set warning level 1-4 for n    /W<n> set warning level (default n=1)
/Wall enable all warnings               /WL enable one line diagnostics
/WX treat warnings as errors            /Yc[file] create .PCH file
/Yd put debug info in every .OBJ        /Yl[sym] inject .PCH ref for debug lib
/Yu[file] use .PCH file                 /Y- disable all PCH options
/Zm<n> max memory alloc (% of default)  /Wp64 enable 64 bit porting warnings

                                -LINKING-

/LD Create .DLL                         /LDd Create .DLL debug library
/LN Create a .netmodule                 /F<num> set stack size
/link [linker options and libraries]    /MD link with MSVCRT.LIB
/MT link with LIBCMT.LIB                /MDd link with MSVCRTD.LIB debug lib
/MTd link with LIBCMTD.LIB debug lib   


Breaking Changes in the Visual C++ 2005 Compiler
Author of Bookmarks Menu Button, Autoclose Bookmark&History Folders and more

Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.19pre) Gecko/20110701 Firefox/3.6.19pre <-- build with MS VC++ 2010 SP1 and PGO on Win 7 x64
mmoy
Posts: 5030
Joined: February 17th, 2004, 9:05 pm
Location: New Hampshire
Contact:

Post by mmoy »

I have all the good ones for SSE2 in a mozconfig on an external drive that's at home right now. I need to do a Windows 64 installation this evening so my machine is still more or less down though maybe I can try getting the data using another machine. After that I plan on installing Linux.
Dell E521 X2 5600+ MacBookPro 17'' 2.5 Ghz Penryn Dell M1330 2.0 Ghz Merom 4 GB Vista x64 Compaq r3000z AMD 64 3200+ (Win 32/64) PowerMac G5 1.8 Ghz MMOY-1.5 (OSX 10) Inspiron 8500, 4100, 4000, Dimension 2300 MacBook Pro 2.2 Ghz HP E6600 HP X2 4400+
User avatar
Sephirot
Posts: 247
Joined: June 15th, 2004, 7:56 am

Post by Sephirot »

This is my mozset.bat

Code: Select all

@echo off

set HOME=L:\building_Mozilla\source\BRANCH_1_5_x\mozilla
set CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:\cvsroot
set MOZCONFIG=L:\building_Mozilla\source\BRANCH_1_5_x\mozilla\mozconfig_ff_vc8.txt

set MOZ_TOOLS=L:/building_Mozilla/apps/moztools
set GLIB_PREFIX=L:/building_Mozilla/apps/vc8
set LIBIDL_PREFIX=L:/building_Mozilla/apps/vc8

set PATH=L:/building_Mozilla/apps/vc8/bin;D:\Programme\Microsoft Visual Studio 8\VC\bin;L:\Microsoft Platform SDK\Bin;L:\Microsoft.NET\SDK\v2.0\Bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%MOZ_TOOLS%\bin;L:\building_Mozilla\apps\cygwin\bin;D:\Programme\Microsoft Visual Studio 8\Common7\IDE;%SystemRoot%\Microsoft.NET\Framework\v2.0.50727;L:\masm32\bin

set LIB=D:\Programme\Microsoft Visual Studio 8\VC\lib;L:\Microsoft Platform SDK\Lib;L:\Microsoft.NET\SDK\v2.0\Lib;L:\masm32\lib;L:\Microsoft Platform SDK\Lib\IA64;L:\Microsoft Platform SDK\Lib\IA64\mfc

set INCLUDE=D:\Programme\Microsoft Visual Studio 8\VC\include;L:\Microsoft Platform SDK\Include;L:\Microsoft.NET\SDK\v2.0\include;L:\masm32\include;L:\Microsoft Platform SDK\Include\atl;L:\Microsoft Platform SDK\Include\mfc;L:\Microsoft Platform SDK\Include\crt;L:\Microsoft Platform SDK\Include\gl


My .mozconfig is almost the same like before, except that I've changed/added the LIBIDL_PREFIX and GLIB_PREFIX.

Code: Select all

GLIB_PREFIX=L:/building_Mozilla/apps/vc8
LIBIDL_PREFIX=L:/building_Mozilla/apps/vc8



Finally, I was able to rebuild glib 1.2.10 and libIDL 0.6.8 for VC8, but xpidl.exe keeps on crashing (error 0x80000003). :(
I think it has something to do with them but I'm not shure.
Author of Bookmarks Menu Button, Autoclose Bookmark&History Folders and more

Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.19pre) Gecko/20110701 Firefox/3.6.19pre <-- build with MS VC++ 2010 SP1 and PGO on Win 7 x64
User avatar
auenf
Posts: 709
Joined: August 28th, 2004, 2:25 am
Contact:

Post by auenf »

Sephirot wrote:Finally, I was able to rebuild glib 1.2.10 and libIDL 0.6.8 for VC8, but xpidl.exe keeps on crashing (error 0x80000003). :(
I think it has something to do with them but I'm not shure.


at least your a little closer than me ;)

xpidl keeps complaining about msvcr80.dll, altho i havent rebuilt glib and libidl for the final cause libidl keeps erroring out, im sure ive got the wrong source of pthreads.

anyone got a workable source of pthreads that i can grab?

Enf...
User avatar
BlueFyre
Posts: 1985
Joined: February 11th, 2004, 4:33 pm

Post by BlueFyre »

mmoy wrote:I have all the good ones for SSE2 in a mozconfig on an external drive that's at home right now. I need to do a Windows 64 installation this evening so my machine is still more or less down though maybe I can try getting the data using another machine. After that I plan on installing Linux.


Hmm... would you mind sharing... I plan on perhaps switching over to VS2005 in the future but still make builds that are just plain SSE...

There ought to be some patches checked in to make it work soon ;)
If you notice this notice you may notice that this notice is not worth noticing.
I6dgzTc7FAMQ4UDm
Posts: 4
Joined: November 8th, 2005, 6:04 pm

Post by I6dgzTc7FAMQ4UDm »

auenf wrote:
Sephirot wrote:Finally, I was able to rebuild glib 1.2.10 and libIDL 0.6.8 for VC8, but xpidl.exe keeps on crashing (error 0x80000003). :(
I think it has something to do with them but I'm not shure.


at least your a little closer than me ;)

xpidl keeps complaining about msvcr80.dll, altho i havent rebuilt glib and libidl for the final cause libidl keeps erroring out, im sure ive got the wrong source of pthreads.

anyone got a workable source of pthreads that i can grab?

Enf...


Try this

https://bugzilla.mozilla.org/show_bug.cgi?id=242870

in this way, pthreads no longer needed.

and apply this patch

https://bugzilla.mozilla.org/show_bug.cgi?id=249782#c44

maybe work.
User avatar
firemonkey
Posts: 950
Joined: March 14th, 2004, 10:57 pm
Location: Down in the basement

Post by firemonkey »

I made a few small changes and was able to run a test build against branch from 10/31 surprisingly without any issue. My only changes were to the paths in my build setup:

--In my PATH removed these:
C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE
and replaced with these (everthing else the same):
C:\Program Files\Microsoft Visual Studio 8\VC\bin;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE

--In my LIB removed these:
C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib;
and replaced with this (everything else the same):
C:\Program Files\Microsoft Visual Studio 8\VC\lib

--In my INCLUDE removed these:
C:\Program Files\Microsoft Visual C++ Toolkit 2003\include;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include;
and replaced with this (everything else the same):
C:\Program Files\Microsoft Visual Studio 8\VC\include

Everything else remained exactly the same as the setup I have for the Visual C++ Toolkit. Installed nothing but the Express Edition. Updating my trunk tree now hoping to be so lucky.
User avatar
auenf
Posts: 709
Joined: August 28th, 2004, 2:25 am
Contact:

Post by auenf »

the patch for the manifest files is only needed for debug builds.

Enf...
User avatar
auenf
Posts: 709
Joined: August 28th, 2004, 2:25 am
Contact:

Post by auenf »

Sephirot wrote:This is my mozset.bat
[code]Finally, I was able to rebuild glib 1.2.10 and libIDL 0.6.8 for VC8, but xpidl.exe keeps on crashing (error 0x80000003). :(
I think it has something to do with them but I'm not shure.


ok, i'm on par with your problems now ;)

altho, did your install put the msvcrt80.dll in the path somewhere? my install seems to have put it in winSxS, but my setup that was working with beta2 now complains about the missing msvcrt80.dll unless i put it somewhere thats in the path?

Enf...
User avatar
auenf
Posts: 709
Joined: August 28th, 2004, 2:25 am
Contact:

Post by auenf »

pasogon wrote:and apply this patch

https://bugzilla.mozilla.org/show_bug.cgi?id=249782#c44

maybe work.


auenf wrote:the patch for the manifest files is only needed for debug builds.

Enf...


actually, it seems that the .manifest files are the culprit, specifically the xpidl.exe.manifest, xpt_link.exe.manifest and xpt_dump.exe.manifest dont get copied with their exe counterparts into dist\bin

now wherever the code is to copy the exe's, it really needs to copy the .manifest files as well ;)

that patch aparently embeds the .manifest files, but the poster reports it causes other problems...

Enf...
Post Reply