Microsoft Visual C++ toolkit build instructions

Discussion of third-party/unofficial Firefox/Thunderbird/SeaMonkey builds.
Post Reply
User avatar
TierMann
Posts: 184
Joined: March 29th, 2004, 10:18 am
Location: Sitting here, posting to fourms.
Contact:

Post by TierMann »

Woot!

I think you may be the third successful builder using this setup.

Congrats.
Legenda
Posts: 44
Joined: April 14th, 2004, 4:11 pm
Location: Tampere, Finland

Post by Legenda »

I've also managed to build Firefox using only free tools with the precious instructions by TierMann and Waldo. Thank you!

However, for some reason the Windows program icons haven't been linked to the Firefox.exe binary found in dist\bin directory. Am I in the right directory in the first place? (I'm a total n00b at this as you might notice :))

My .mozconfig was the one from Waldo's help text with ac_add_options --disable-accessibility added. Using optimizations -O2 -G7 -arch:SSE.

EDIT: Do I have to attach all the dependant DLL's (msvcr71.dll, msvcp71.dll, any more?) to the release build myself, or is there a function in the client.mk (or somewhere else) that does this for me?
hvymtl
Posts: 168
Joined: October 2nd, 2003, 7:17 am
Location: Brasilia, Brazil

Post by hvymtl »

Maybe this thread should be made sticky?
Malakai
Posts: 172
Joined: July 15th, 2003, 3:11 pm
Location: Florida
Contact:

Post by Malakai »

Legenda wrote:I've also managed to build Firefox using only free tools with the precious instructions by TierMann and Waldo. Thank you!

However, for some reason the Windows program icons haven't been linked to the Firefox.exe binary found in dist\bin directory. Am I in the right directory in the first place? (I'm a total n00b at this as you might notice :))

My .mozconfig was the one from Waldo's help text with ac_add_options --disable-accessibility added. Using optimizations -O2 -G7 -arch:SSE.

EDIT: Do I have to attach all the dependant DLL's (msvcr71.dll, msvcp71.dll, any more?) to the release build myself, or is there a function in the client.mk (or somewhere else) that does this for me?



Yes, you do need to include these dll's, which is completely legal btw.
Malakai
Posts: 172
Joined: July 15th, 2003, 3:11 pm
Location: Florida
Contact:

Post by Malakai »

Ok, I have successful builds made, info and links to download here:
http://www.genmay.com/showthread.php?s= ... ost8865399
User avatar
TierMann
Posts: 184
Joined: March 29th, 2004, 10:18 am
Location: Sitting here, posting to fourms.
Contact:

Post by TierMann »

When you remove IE Migration, You no longer need to include msvcp71.dll as the program is no longer linked to it.

You will only need to include msvcr71.dll :)

Makes things a little smaller when packaging.

Also. Your icon problem sounds like this bug 171349

Are you using windows 9x?

Are you using the unofficial branding? (if not I recommend checking this out http://scragz.com/tech/mozilla/firefox- ... anding.php )

Update:
It turned out to be Waldo's patch. It was fixed.
Last edited by TierMann on April 24th, 2004, 11:33 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 »

I'm checking out your builds now, Malakai :)
They're good.

One thing I noticed though on your site...
Both Firefox and Thunderbird used the following compiler options:
/O1 (optimize with respect to speed)
/G7 (optimize for Athlon and Pentium 4 CPU's)
/arch:SSE (use the SSE instruction set).


/01 is actually (optimize for smaller code side)
/02 (optimize for speed)

There's a quick way to check on that,
Open a command prompt and type cl /?

That will display the options for your cl compiler.
Legenda
Posts: 44
Joined: April 14th, 2004, 4:11 pm
Location: Tampere, Finland

Post by Legenda »

TierMann wrote:When you remove IE Migration, You no longer need to include msvcp71.dll as the program is no longer linked to it.

You will only need to include msvcr71.dll :)

Makes things a little smaller when packaging.

Also. Your icon problem sounds like this bug 171349

Are you using windows 9x?

Are you using the unofficial branding? (if not I recommend checking this out http://scragz.com/tech/mozilla/firefox- ... anding.php )


I'm using the official CVS branding (i.e. the globe without fox icon). I don't like scragz' branding, and I don't intend to use it.

I'm using Windows XP Pro SP1, and this doesn't seem to be the bug you referred to. It just simply doesn't attach any icons to the firefox.exe binary. The icons are found in dist/branding directory though. Instead I get the default Windows XP's application icon. I've also tried with --enable-official-branding, but without luck.

There's one thing though which might have something to do with this. The directory I used to build was named D:\mozilla-build, which is longer than the standard DOS name length. As a result, some programs referred to the directory as D:\MOZILL~1. Maybe this confuses the build process? I'll have another go with a shorter-named directory...
User avatar
Waldo
Posts: 596
Joined: July 29th, 2003, 8:21 am
Location: Cambridge, MA
Contact:

Post by Waldo »

Legenda wrote:There's one thing though which might have something to do with this. The directory I used to build was named D:\mozilla-build, which is longer than the standard DOS name length. As a result, some programs referred to the directory as D:\MOZILL~1. Maybe this confuses the build process? I'll have another go with a shorter-named directory...

No way the length is a reason. After all, there's mozilla/browser/components, right?
User avatar
TierMann
Posts: 184
Joined: March 29th, 2004, 10:18 am
Location: Sitting here, posting to fourms.
Contact:

Post by TierMann »

It could be a bug in the latest cvs...
I noticed that Malakai's exe also doesn't have an icon.
Let me try a build without using the unofficial artwork.

Update:
It built with the official icons just fine for me.

Differences with Waldos dirs could be it too although I don't know why.
I'm going to try with active perl instead and with applying his patch so that we're in the same boat.

Pulling a fresh tree now...
Legenda
Posts: 44
Joined: April 14th, 2004, 4:11 pm
Location: Tampere, Finland

Post by Legenda »

TierMann: I'm using cygwin perl btw. Some instructions suggest using ActivePerl, others Cygwin Perl. What's the difference?

EDIT: I just picked this up from my build log:

Code: Select all

/cygdrive/d/mozbuild/mozilla/build/cygwin-wrapper link /NOLOGO /OUT:firefox.exe


What the hell is that /NOLOGO doing there?
User avatar
Waldo
Posts: 596
Joined: July 29th, 2003, 8:21 am
Location: Cambridge, MA
Contact:

Post by Waldo »

Legenda wrote:TierMann: I'm using cygwin perl btw. Some instructions suggest using ActivePerl, others Cygwin Perl. What's the difference?

Perl itself does not run on Windows; it's always been geared towards a Unix-style platform. Thus, in order to run it on Windows it must be tweaked and built somewhat differently. The two options for Perl on Windows are ActiveState's ActivePerl and cygwin's perl.

ActivePerl is Perl specifically built for Windows. I assume it has some neat hooks to make it interact with the Windows OS better as well. Cygwin perl is designed for the cygwin environment, which means it's designed to run in an emulated Linux which is compatible with Windows. The differences are obviously minor because each is supposed to be a fully functional version of Perl, but apparently some of the stuff in ActivePerl is not in cygwin. That stuff just coincidentally happens to be required for building the Firefox installer. See the Firefox build instructions and Building the Next Gen App Installer for more details on this.

Cygwin Perl is perl without the little gimmicks of ActivePerl (some of which are used to build the Firefox installer). It's perfectly serviceable if you only want to build ZIPs, but I assumed if someone wanted to build they would be just as likely to want to build the installer, so I used ActivePerl to enable that.

Basically, Cygwin perl works as well as ActivePerl for building a ZIP. For building the Firefox installer, ActivePerl is required.
User avatar
Waldo
Posts: 596
Joined: July 29th, 2003, 8:21 am
Location: Cambridge, MA
Contact:

Post by Waldo »

Waldo wrote:My second attempt at building failed for unknown reasons.

The NSS Build owner has posted a possible fix. I'm running a build right now (from maybe day-old source, tho, as a recent checkin comment mentioned BUSTAGE [caps roc+]), so hopefully soon I'll see whether that fixes it or not.

One other note: I decided to log the building process (using Henrik Gemal's instructions on logging), and it would appear it's working so far. I don't like, however, that his method provides me with no way to see what's happening in the build process at the current time. Building becomes too much of a black box when I do this, and I'd prefer to be able to see what's up even if I don't understand it. How would I go about logging the build process to a log file while still being able to view the build process on the command line?
User avatar
TierMann
Posts: 184
Joined: March 29th, 2004, 10:18 am
Location: Sitting here, posting to fourms.
Contact:

Post by TierMann »

Ok, I was able to duplicate the Icon problem.
I now have a firefox exe with no icon.

I used Active Perl, but If Legenda used Cygwin Perl, then that can't be it.

The only thing we all have in common with getting that bug is using Waldo's patch.

I would suggest you try grabbing fresh files and patching manually with my patch and see if that gets you an icon until it's worked out.


Confirmed :

Just did a clean make with only the 3 Waldo-patched files replaced with my patch using the same source and still with active pearl.
I have an official Icon associated with the exe.
Stick with the manual patch.

On the good side, I built with -O2 G6 so i'll have another build to post :>
Last edited by TierMann on April 24th, 2004, 4:42 pm, edited 2 times in total.
Legenda
Posts: 44
Joined: April 14th, 2004, 4:11 pm
Location: Tampere, Finland

Post by Legenda »

TierMann:

I'll try with your manual patch for now. Will you be releasing a patch that enables the --disable-iemigration switch, or does your current one already use it?
Post Reply