Cannot build using VC++ .NET 2003 / vc7.1

RESOLVED WORKSFORME

Status

SeaMonkey
Build Config
RESOLVED WORKSFORME
15 years ago
12 years ago

People

(Reporter: Eric Murphy, Assigned: Chase Phillips)

Tracking

Trunk
x86
Windows XP
Dependency tree / graph

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment)

(Reporter)

Description

15 years ago
ftp://ftp.mozilla.org/pub/mozilla/libraries/win32/vc7-glib-1.2.10-bin.zip
ftp://ftp.mozilla.org/pub/mozilla/libraries/win32/vc7-libIDL-0.6.8-bin.zip

These do not seem to work building with 2003. That is because 2003 is now
considered vc7.1 and there is no longer msvcr70.dll, which is replaced by
msvcr71.dll.

I have built a new glib using 2003, but I am having troubles building libIDL.
This might be because of changes in the 2003 C compiler (which is more strict,
from what I have read). I am getting a lot of syntax errors, and I have no clue
why. *I NEED HELP WITH THIS*

Also see: http://bugzilla.mozilla.org/show_bug.cgi?id=208314 Note: The patch
here has also forgotten to make a needed change to configure.

It would be cool if we could get 1.5 to build with VC++ .NET 2003. If I can
somehow get libIDL to compile, get the files online and docs updated, and we get
the other patch in... should be good to go.

I hope someone can get in contact with me so I can compile libIDL. It may
involve updating its C code. All of the errors I have seen so far are coming
from util.c.
(Reporter)

Comment 1

15 years ago
Adding Daniel Nunes as a CC. He wrote: 
http://www.mozilla.org/build/win32.html

This document will need to be updated.
Most of the issues in comment 0 are covered in bug 208345, but this seems like a
good bug to turn into a meta-bug (especially since bug 208314 comment 7
suggested this bug should cover all remaining isssues).

Comment 3

15 years ago
http://bugzilla.mozilla.org/show_bug.cgi?id=208461#c7 is Hixie's meta VC7.1
patch, if you could call it a meta patch, that has the configure.in changes.
Patches to configure aren't generally attached because of the
sometimes-auto-updating script that checks in the configure changes when
configure.in is touched, and most people hacking configure.in will just run
'autoconf' to generate the new configure.

dbaron/leaf, do you want the new libIDL/glib uploaded to ftp.m.o eventually so
people won't need to build them or do you agree with what cls said in
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&safe=off&selm=ba9isr%24cec2%40ripley.netscape.com?

Updated

15 years ago
Depends on: 213313

Updated

15 years ago
Depends on: 215347
No longer depends on: 213313

Comment 4

15 years ago
Using the updated libIDL/glib, applying Hixie's patch from bug 208461 (you'll
get easy to fix conflicts when updating after applying the patch), adding the
-D_WIN32_WINNT=0x400 to mapihook\build\Makefile.in as Pauli commented, applying
bsmedberg's patch from bug 212919, and applying jpierre's patch from bug 215347
an opt Thunderbird build compiles.  I didn't try building any other apps, but
they *should* work.
(Reporter)

Comment 5

15 years ago
I am building now using ALL of the patches to the attached bugs, and it seems to
be working. I had some initial trouble because I didn't have
ac_add_options --disable-tests

Here is the first error I got from that:
c:/mozilla\xpcom\tests\TestObserverService.cpp(49) : fatal error C1083: Cannot
open include file: 'iomanip.h': No such file or directory

Comment 6

15 years ago
VC7.1 went to the <iomanip> version of that header.
(Reporter)

Comment 7

15 years ago
OK, now I got an error:
c:/mozilla\mailnews\mapi\mapihook\build\msgMapi_p.c(85) : fatal error C1189:
#error :  You need a Windows NT 4.0 or later to run this stub because it uses
these features:

My Makefile looks fine, and I did a make clean on the mapi stuff to be sure, but
still get it.

Comment 8

15 years ago
If anyone runs into other header problems, the headers that changed are listed
at
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_Differences_in_iostream_implementation.asp

Eric, I ran into that as well. -D_WIN32_WINNT=0x400 needs to be added to the
mapihook\build\Makefile.in define line.  The line should look like:

DEFINES += -DREGISTER_PROXY_DLL -DUNICODE -D_UNICODE -D_WIN32_WINNT=0x400
(Reporter)

Comment 9

15 years ago
Created attachment 132563 [details]
In Cygwin, do 'source vsvars7.sh' to setup environment variables to compile with VS.NET 2003

This vsvars7.sh could be added to some documentation to make things easier for
developers to compile from Cygwin with VS.NET 2003.

Comment 10

15 years ago
Setting environment variables in vsvars7.sh is a BAD idea, mainly because not
everybody will have installed VS .NET 2003 in the default location.  When it is
installed, VS .NET 2003 creates a VS .NET 2003 Command Prompt under VS .NET
Tools on the Start Menu that does everything vsvars7.sh does, with the paths
that are correct for that system, even if it is not installed in the default
location.  If we want to document something, we should tell people to use the VS
.NET 2003 Command Prompt.
Mass reassign of Build/Config bugs to Leaf.
Assignee: mozbugs-build → leaf
(Reporter)

Comment 12

15 years ago
If you are familiar with .NET, please check out this bug I have opened:
http://bugzilla.mozilla.org/show_bug.cgi?id=221446

It's about building Mozilla with the /clr switch (which I was able to do).

Comment 13

15 years ago
I was building just fine with vc7.1 until a few days ago.  Now, my non-debug 
build works, but my debug build crashes on startup.  Has anyone else seen this?

I guess I need to go back all those iostream.h -> iostream changes and see if 
I missed some important checkin. In any case, when will this compiler be 
supported?

Comment 14

15 years ago
Magically, the crash is gone after I pulled a new system this morning.
So, except for the libIDL issue (which can be worked around), this seems fixed.
 Does someone have the resources to set up a tinderbox?

Updated

15 years ago
Depends on: 236956

Comment 16

14 years ago
All dependencies have been fixed.  According to cls in Bug 208345, the build
page ( http://www.mozilla.org/build/win32.html ) needs to be updated.

After that is done, this bug can be closed.

Updated

14 years ago
Depends on: 240629
(Reporter)

Comment 17

14 years ago
I just seen on Slashdot that Microsoft is now offering Microsoft Visual C++
Toolkit 2003 for free.

http://msdn.microsoft.com/visualc/vctoolkit2003/

This is worth documenting and linking to on the build documentation page.

Comment 18

14 years ago
Another problem with VC 7.1:

Operator new() now throws an exception instead of returning NULL, so mozilla
exits instead of handling out of memory gracefully.
To have the "old" new() behaviour, you can include <new.h> and not <new>

It works for me:

Index: configure.in
===================================================================
RCS file: /cvsroot/mozilla/configure.in,v
retrieving revision 1.1344
diff -u -r1.1344 configure.in
--- configure.in        13 May 2004 03:12:47 -0000      1.1344
+++ configure.in        13 May 2004 10:16:28 -0000
@@ -1187,7 +1190,7 @@
     AC_DEFINE(HW_THREADS)
     AC_DEFINE_UNQUOTED(WINVER,0x400)
     AC_DEFINE(STDC_HEADERS)
-    AC_DEFINE(NEW_H, <new>)
+    AC_DEFINE(NEW_H, <new.h>)
     AC_DEFINE(WIN32_LEAN_AND_MEAN)
     TARGET_MD_ARCH=win32
     _PLATFORM_DEFAULT_TOOLKIT='windows'

Comment 19

14 years ago
Compiling with only the free toolkit won't always work. If XPC_IDISPATCH_SUPPORT
is defined, then js/src/xpconnect/src/xpcprivate.h includes atlbase.h, one of
the ATL (Active Template Library) headers. This library is NOT shipped with the
free toolkit. XPConnect fails to compile with XPC_IDISPATCH_SUPPORT (the default).
the _real_ solution for the OOM crashes is using something like new
(std::nothrow) instead of just new; that way, all platforms will benefit...

Updated

14 years ago
Assignee: leaf → cmp
Product: Browser → Seamonkey

Comment 21

13 years ago
For what it's worth VC++'s "new" has thrown exceptions since version 6 and 
probably earlier. Mozilla is built without exceptions enabled for VC++ so new 
never throws exceptions in those cases. I would think Mozilla should be built 
without exceptions under VS .Net 2003 as well.

Comment 22

13 years ago
I've been building pretty much all of our code with VC7.1 for a while now. The Free toolkit compiler has issues out of the box, but the profession-edition compiler works. Please file new bugs for new issues that come up.
Status: NEW → RESOLVED
Last Resolved: 13 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.