Firefox 2.0 Optimized for Mac G3

Written by rob on October 28, 2006 – 2:54 pm -

Neil over on Beatnikpad has been posting optimized Firefox builds for Mac for a while now. The latest Firefox release, 2.0, was officially released to the public earlier this week. The optimized builds for Firefox 2.0 are now up on his blog. There are many people who swear by his optimized builds and claim they yield a major speed increase. However, there is one little problem… he only offers builds for G4, G5, and Intel processors. That leaves me and my iBook G3 700mhz stuck without any optimization. So, what to do?

I decided to make my own optimized build. Firefox is an open source browser, so any old person can go download the source code. They have scripts that make it easy to build, so all you really need is a good development environment (meaning you have Perl, GCC, etc., which OSX users can get with the Developer Tools included on the Tiger DVD) and enough time to let it compile. Compiling the libIDL, which is a prerequisite for Firefox compilation, took about three hours. Firefox then took about five. The good part is I will only have to go through the five-hour process next time, since libIDL is already on my system.

To spare anyone else from going through the eight-hour process, I used the friendly installer-maker script to create a compressed dmg file ready for download and use. Keep in mind that this will only work on G3 processors. Without further ado, you may click here to download Firefox 2.0 Optimized for G3 processors.

Note: During the build process, I did come in contact with one little issue. However, the Firefox developers helped me resolve it quickly. The error I got was “‘kCGBitmapByteOrder32Host’ undeclared” in the file mozilla/gfx/cairo/cairo/src/cairo-quartz-surface.c. The developers informed me that in the header file for the problematic source file, there were three particular lines that checked to see if the SDK installed was version 10.4 or higher. If so, it did nothing. However, if it was a lesser version, it would define the kCGBitmapByteOrder32Host constant to 0. This is because Tiger implements the constant somewhere on its own, and doesn’t need the Firefox source code to do it. For whatever reason, my system registered as 10.4 or higher (I am using Tiger), but did not have that constant defined by the OS, and therefore errored out since it wasn’t defined by anything. I fixed this by commenting out the if statement in the header file so the constant would be defined as 0 for my system as well.

For those interested in a more technical representation of what I did, here is the diff file between the original and patched version of cairo-quartz.h.

Posted in Optimized Firefox | 3 Comments »

3 Comments to “Firefox 2.0 Optimized for Mac G3”

  1. dan13l Says:

    Nice work – FF2 has been totally unstable on my G3 since first installing it. Your build, so far, has been running like a dream.

    Any plans to release future G3 updates? I found another site online that’s producing them, but theirs don’t work.

  2. rob Says:

    I recognized the same thing. FF2 used to crash often, now it never does. It’s funny what a little recompilation does.

    I’m glad the builds are helping you, so I will try to put more out. is out, so I will try to build that and see how long it takes. I know there is probably an easy way for me to just update for whatever changes were made and not completely redo the 5-hour-build, but who knows.

    Just out of curiosity, how did you find my site? Google or some other search engine? I’m just wondering, so that I can hope to expose it to more people.

  3. Ryan Schmidt Says:

    I searched all over for the solution to kCGBitmapByteOrder32Host being undefined on Tiger and didn’t find it, so I’m posting it here: It’s caused by using an old version of Xcode, such as Xcode 2.0. If you use the current version of Xcode for Tiger (2.5 as of this writing) the problem goes away. kCGBitmapByteOrder32Host is defined in /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Headers/CGImage.h