Development:Building:Mac OS X 10.6

From Camino Wiki
Revision as of 21:58, 15 May 2010 by Sardisson (talk | contribs) (→‎Local patches: Patches, not patches)
Jump to navigation Jump to search

Building on Mac OS X 10.6 is unfortunately rather complicated. Gecko 1.9.2 is not 10.6-build-friendly (and, alas, becomes less so over time). This page contains a full list of supplemental instructions to help you complete a Cm2.1-M1.9.2 build on Mac OS X 10.6 (please be sure you follow all of the other instructions on Development:Building:Mozilla 1.9.2 Branch).

.mozconfig

To build Gecko on Mac OS X 10.6, you must include the following lines in your .mozconfig (in addition to those already listed in Pulling Source and Building Gecko and Camino).

CC="gcc-4.0 -arch i386"
CXX="g++-4.0 -arch i386"
ac_add_options --target=i386-apple-darwin8.0.0

HOST_CC="gcc-4.0"
HOST_CXX="g++-4.0"
RANLIB=ranlib
AR=ar
AS=$CC
LD=ld
STRIP="strip -x -S"
CROSS_COMPILE=1

# gecko crashreporter doesn't build on 10.6
ac_add_options --disable-crashreporter

If you need to hack on about:crashes, you can test your changes by loading chrome://global/content/crashes.xhtml instead.

Local Patches

Currently, additional build failures must be worked around by applying local patches. Apply these patches before beginning your build.

run-mozilla.sh

The run-mozilla.sh script is used in several places during the Gecko build and packaging (regenerating some JavaScript test code, signing NSS libraries), but due to the SQLite linking debacle (Bug ), run-mozilla.sh sets an incompatible dyld path.

Note: this is the only patch that is required in all 10.6/1.9.2 build configurations.

Sparkle’s SUStatus.nib

Beginning with Xcode 3.2.2, all nibs are automatically stripped. Sparkle’s SUStatus.nib can’t be stripped for some reason, so the build fails. Patching Sparkle’s ConfigCommon.xcconfig to turn off stripping works around this problem.

unify vs. osacompile and Camino’s feedhandlers

osacompile on Mac OS X 10.6 will only produce 3-way ppc7400-i386-x86_64 binaries, despite being instructed to generate single-architecture binaries when building our feedhandlers. Mozilla’s unify script can only handle ppc and i386 binaries, so it must be patched in order to properly process the feedhandlers in Universal builds.