Microsoft Visual C++ toolkit build instructions

Discussion of third-party/unofficial Firefox/Thunderbird/SeaMonkey builds.
Post Reply
hvymtl
Posts: 168
Joined: October 2nd, 2003, 7:17 am
Location: Brasilia, Brazil

Microsoft Visual C++ toolkit build instructions

Post by hvymtl »

As we now have a sucessfull build using Microsoft's free VC++ toolkit, I think it would be a good idea to start a thread with instructions on how to make a good build with it.

For detailed step-by-step instructions on how to setup your system with the necessary tools needed I recomend going to TierMann's site.
Last edited by hvymtl on April 27th, 2004, 1:46 pm, edited 2 times in total.
User avatar
TierMann
Posts: 184
Joined: March 29th, 2004, 10:18 am
Location: Sitting here, posting to fourms.
Contact:

Post by TierMann »

Oops.. I posted here http://forums.mozillazine.org/viewtopic ... 844#490844

Update:
Instructions on how I successfully built with only free tools eventually are on page 3 of this thread or here.

Waldo's instructions are on page 4.

But read on for troubleshooting.
Last edited by TierMann on April 25th, 2004, 12:21 pm, edited 1 time in total.
aebrahim
Posts: 1234
Joined: November 10th, 2002, 2:47 am
Location: Hong Kong
Contact:

Re: Microsoft Visual C++ toolkit build instructions

Post by aebrahim »

hvymtl wrote:As we now have a sucessfull buildusing Microsoft's free C++ toolkit, I think it would be a good idea to start a post with instructions on how to a good build with it.

So, people who have been able to build it, please tell us how you did it. Thanks in advance.

It's not really a 'success' because he used libraries from MSVC++ .NET 2002, which are not available for free anywhere. If anyone can get Firefox to compile using ONLY free, legally available tools using the MSVC++ .NET 2003 Toolkit then the real win.

Right now, Mozilla builds using the MSVC++ .NET 2003 Toolkit (plus Platform SDK, .NET 1.1 SDK, and MASM32 8.2) with ActiveX disabled, but Firefox doesn't because of an issue in the IE profile migration code at linking time.
User avatar
TierMann
Posts: 184
Joined: March 29th, 2004, 10:18 am
Location: Sitting here, posting to fourms.
Contact:

Re: Microsoft Visual C++ toolkit build instructions

Post by TierMann »

aebrahim wrote:Right now, Mozilla builds using the MSVC++ .NET 2003 Toolkit (plus Platform SDK, .NET 1.1 SDK, and MASM32 8.2) with ActiveX disabled, but Firefox doesn't because of an issue in the IE profile migration code at linking time.


So it would just take a patch to fix this and make Firefox able to compile under the free tools, right?
aebrahim
Posts: 1234
Joined: November 10th, 2002, 2:47 am
Location: Hong Kong
Contact:

Re: Microsoft Visual C++ toolkit build instructions

Post by aebrahim »

TierMann wrote:
aebrahim wrote:Right now, Mozilla builds using the MSVC++ .NET 2003 Toolkit (plus Platform SDK, .NET 1.1 SDK, and MASM32 8.2) with ActiveX disabled, but Firefox doesn't because of an issue in the IE profile migration code at linking time.


So it would just take a patch to fix this and make Firefox able to compile under the free tools, right?

I think so, yes. Although you still wouldn't be able to get ActiveX support.
User avatar
TierMann
Posts: 184
Joined: March 29th, 2004, 10:18 am
Location: Sitting here, posting to fourms.
Contact:

Post by TierMann »

Small price to pay for a free compiler.
I disable activex on my builds anyhow :)

If we could figure out what needs to be patched we'd be set.

I could get rid of .NET 2002 completely and just use the free tools.
MozJF
Posts: 2007
Joined: July 14th, 2003, 10:07 am
Location: Near Atlantic Ocean

Post by MozJF »

Why not trying to do a 1.7 branch build, far stable than trunk builds ?

Also, mozilla 1.7rc1 is going to be out soon ;o)
MozJF
sasquatch
Posts: 6022
Joined: November 25th, 2003, 8:56 am

Re: Microsoft Visual C++ toolkit build instructions

Post by sasquatch »

aebrahim wrote:...

Right now, Mozilla builds using the MSVC++ .NET 2003 Toolkit (plus Platform SDK, .NET 1.1 SDK, and MASM32 8.2) with ActiveX disabled, but Firefox doesn't because of an issue in the IE profile migration code at linking time.



How about Thunderbird?


Didn't you used to start your posts off with an explanation how you did it with a combo of things?

;-)
aebrahim
Posts: 1234
Joined: November 10th, 2002, 2:47 am
Location: Hong Kong
Contact:

Re: Microsoft Visual C++ toolkit build instructions

Post by aebrahim »

sasquatch wrote:
aebrahim wrote:...

Right now, Mozilla builds using the MSVC++ .NET 2003 Toolkit (plus Platform SDK, .NET 1.1 SDK, and MASM32 8.2) with ActiveX disabled, but Firefox doesn't because of an issue in the IE profile migration code at linking time.



How about Thunderbird?


Didn't you used to start your posts off with an explanation how you did it with a combo of things?

;-)

No idea about TB. The explanation was for the full version of MSVS .NET 2003, and that could be successfully used. AFAIK, right now, without code hacks, this can't.
User avatar
TierMann
Posts: 184
Joined: March 29th, 2004, 10:18 am
Location: Sitting here, posting to fourms.
Contact:

Post by TierMann »

Using only VC++ Toolkit and SDK's now...
Took out all paths to retail libraries and apps.

-.Net Framework 1.1
-.Net Framework SDK
-Microsoft SDK (32 and 64bit core) (I went with all packages available)
-Microsoft VC++ 2003 Toolkit
-VC7.1 build versions of Glib and LibIdl (in c:\vc7\bin)
-msam32v8 (Do not copy anything to toolkit, it will all be determined by the environment)

Here's my environment:
Path=c:/vc7/bin;C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;c:\Program files\Microsoft SDK\bin;C:\Program Files\Microsoft.NET\SDK\v1.1\Bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;
c:\moztools\bin;c:\cygwin\bin;C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE;C:\Program Files\Microsoft SDK\Bin\Win64;C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322;c:\masm32\bin

Lib=C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib;c:\program files\microsoft sdk\lib;C:\Program Files\Microsoft.NET\SDK\v1.1\Lib;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib;c:\masm32\lib;C:\Program Files\Microsoft SDK\Lib\IA64

Include=C:\Program Files\Microsoft Visual C++ Toolkit 2003\include;c:\Program Files\Microsoft SDK\Include;c:\Program Files\Microsoft.NET\SDK\v1.1\include;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include;C:\Program Files\Microsoft SDK\include\Win64\crt;c:\masm32\include

The order of these paths are very important or else it will error on nspr4.dll.

---------------------------

Soooo Close!

Code: Select all

   Creating library firefox.lib and object firefox.exp
brwsrcmp.lib(nsIEProfileMigrator.obj) : error LNK2019: unresolved external symbo
l "void __stdcall _com_issue_error(long)" (?_com_issue_error@@YGXJ@Z) referenced
 in function "public: __thiscall _bstr_t::Data_t::Data_t(unsigned short const *)
" (??0Data_t@_bstr_t@@QAE@PBG@Z)
brwsrcmp.lib(nsIEProfileMigrator.obj) : error LNK2019: unresolved external symbo
l "char * __stdcall _com_util::ConvertBSTRToString(unsigned short *)" (?ConvertB
STRToString@_com_util@@YGPADPAG@Z) referenced in function "public: char const *
__thiscall _bstr_t::Data_t::GetString(void)const " (?GetString@Data_t@_bstr_t@@Q
BEPBDXZ)
brwsrcmp.lib(nsIEProfileMigrator.obj) : error LNK2019: unresolved external symbo
l "void __stdcall _com_issue_errorex(long,struct IUnknown *,struct _GUID const &
)" (?_com_issue_errorex@@YGXJPAUIUnknown@@ABU_GUID@@@Z) referenced in function "
public: long __thiscall PSTORECLib::IPStore::ReadItem(unsigned long,struct _GUID
 *,struct _GUID *,unsigned short *,unsigned long *,unsigned char * *,struct PSTO
RECLib::_PST_PROMPTINFO *,unsigned long)" (?ReadItem@IPStore@PSTORECLib@@QAEJKPA
U_GUID@@0PAGPAKPAPAEPAU_PST_PROMPTINFO@2@K@Z)
firefox.exe : fatal error LNK1120: 3 unresolved externals
make[4]: *** [firefox.exe] Error 96
make[4]: Leaving directory `/cygdrive/c/mozilla/browser/app'
make[3]: *** [libs] Error 2
make[3]: Leaving directory `/cygdrive/c/mozilla/browser'
make[2]: *** [tier_99] Error 2
make[2]: Leaving directory `/cygdrive/c/mozilla'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/cygdrive/c/mozilla'
make: *** [build] Error 2


I'm either missing a path or there has to be a way to manually patch it.

Basically what I'm looking for is a way to either disable profile migration OR get it to work with these free libraries.

Any input would be helpful.
Last edited by TierMann on April 21st, 2004, 8:53 pm, edited 1 time in total.
User avatar
TierMann
Posts: 184
Joined: March 29th, 2004, 10:18 am
Location: Sitting here, posting to fourms.
Contact:

Re: Microsoft Visual C++ toolkit build instructions

Post by TierMann »

sasquatch wrote:How about Thunderbird?


Compiling the latest TBird CVS right now using the environment shown above.

I'll update this when it finishes and let you know.

I know for a fact that Mozilla's latest CVS compiles fine because I accidently forgot to add the mail/config/mozconfig in and did a full mozilla build. :P
No wonder it took so long.

Update:

Sigh...

Code: Select all

make[1]: Entering directory `/cygdrive/c/TB/mozilla/mail/app'
/cygdrive/c/TB/mozilla/build/cygwin-wrapper link /NOLOGO /OUT:thunderbird.exe /PDB:thunderbird.pdb /
SUBSYSTEM:WINDOWS    /HEAP:0x40000 nsMailApp.obj ./module.res ../../dist/lib/xulapp_s.lib ../../dist
/lib/js3250.lib ../../dist/lib/xpcom.lib ../../dist/lib/nspr4.lib ../../dist/lib/plc4.lib ../../dist
/lib/plds4.lib     kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib comctl32.lib
 comdlg32.lib uuid.lib shell32.lib ole32.lib oleaut32.lib version.lib winspool.lib gdi32.lib
xulapp_s.lib(nsAppRunner.obj) : error LNK2019: unresolved external symbol "unsigned int __cdecl app_
getModuleInfo(struct nsStaticModuleInfo * *,unsigned int *)" (?app_getModuleInfo@@YAIPAPAUnsStaticMo
duleInfo@@PAI@Z) referenced in function "int __cdecl xre_main(int,char * * const,class nsXREAppData
const &)" (?xre_main@@YAHHQAPADABVnsXREAppData@@@Z)
thunderbird.exe : fatal error LNK1120: 1 unresolved externals
make[1]: *** [thunderbird.exe] Error 96
make[1]: Leaving directory `/cygdrive/c/TB/mozilla/mail/app'
make: *** [all] Error 2


TBird won't build with the free tools either from the current code. :(
That answers that anyway.

It makes me sad that there's only 1 error stopping it.
And only 3 on FF from 1 file used for IE profile migration. Kinda ironic.

Edit:
We found out later that it does indeed build with no problem. I just had static enabled.
Last edited by TierMann on April 24th, 2004, 8:49 pm, edited 1 time in total.
User avatar
Goldzilla
Posts: 2579
Joined: November 22nd, 2002, 6:52 pm

Post by Goldzilla »

You could try adding back stuff from .net 2003 until it works. That could identify the missing pieces.
Dell Inspiron 8500 P4 M 2.0 Ghz 1 GB 40 GB XP Pro NVidia 64 MB WUXGA CME, CH, TBE , EZS Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7b) Gecko/20040325 Firefox/0.8.0+ (mmoy-O2-GL7-SSE2-crc32-Zp16-quek013)
User avatar
TierMann
Posts: 184
Joined: March 29th, 2004, 10:18 am
Location: Sitting here, posting to fourms.
Contact:

Post by TierMann »

Heh, sounds like a plan, but I don't have .Net 2003.

My builds were a mix of the VC++ 2003 Toolkit and VStudio .NET 2002 Enterprise so they compiled with the 7.1 CL.exe with optimizations but still needed the 7.0 dll's instead of the 7.1's to run.

It works but it's sloppy.
aebrahim
Posts: 1234
Joined: November 10th, 2002, 2:47 am
Location: Hong Kong
Contact:

Post by aebrahim »

TierMann wrote:Soooo Close!

Code: Select all

   Creating library firefox.lib and object firefox.exp
brwsrcmp.lib(nsIEProfileMigrator.obj) : error LNK2019: unresolved external symbo
l "void __stdcall _com_issue_error(long)" (?_com_issue_error@@YGXJ@Z) referenced
 in function "public: __thiscall _bstr_t::Data_t::Data_t(unsigned short const *)
" (??0Data_t@_bstr_t@@QAE@PBG@Z)
brwsrcmp.lib(nsIEProfileMigrator.obj) : error LNK2019: unresolved external symbo
l "char * __stdcall _com_util::ConvertBSTRToString(unsigned short *)" (?ConvertB
STRToString@_com_util@@YGPADPAG@Z) referenced in function "public: char const *
__thiscall _bstr_t::Data_t::GetString(void)const " (?GetString@Data_t@_bstr_t@@Q
BEPBDXZ)
brwsrcmp.lib(nsIEProfileMigrator.obj) : error LNK2019: unresolved external symbo
l "void __stdcall _com_issue_errorex(long,struct IUnknown *,struct _GUID const &
)" (?_com_issue_errorex@@YGXJPAUIUnknown@@ABU_GUID@@@Z) referenced in function "
public: long __thiscall PSTORECLib::IPStore::ReadItem(unsigned long,struct _GUID
 *,struct _GUID *,unsigned short *,unsigned long *,unsigned char * *,struct PSTO
RECLib::_PST_PROMPTINFO *,unsigned long)" (?ReadItem@IPStore@PSTORECLib@@QAEJKPA
U_GUID@@0PAGPAKPAPAEPAU_PST_PROMPTINFO@2@K@Z)
firefox.exe : fatal error LNK1120: 3 unresolved externals
make[4]: *** [firefox.exe] Error 96
make[4]: Leaving directory `/cygdrive/c/mozilla/browser/app'
make[3]: *** [libs] Error 2
make[3]: Leaving directory `/cygdrive/c/mozilla/browser'
make[2]: *** [tier_99] Error 2
make[2]: Leaving directory `/cygdrive/c/mozilla'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/cygdrive/c/mozilla'
make: *** [build] Error 2


I'm either missing a path or there has to be a way to manually patch it.

Basically what I'm looking for is a way to either disable profile migration OR get it to work with these free libraries.

Any input would be helpful.

Yep, that's where I got stuck too. Looks like nsIEProfileMigrator.obj requires something that the free tools don't provide. One workaround would be to switch off the IE migration code via a patch.
User avatar
TierMann
Posts: 184
Joined: March 29th, 2004, 10:18 am
Location: Sitting here, posting to fourms.
Contact:

Post by TierMann »

aebrahim wrote:One workaround would be to switch off the IE migration code via a patch.


Does one exist?
Post Reply