Solaris Build Prerequisites

Required Software

OpenSolaris can build Mozilla with a few extra packages installed:

  • OpenSolaris builds before snv_133:
$ pfexec pkg install SUNWhea SUNWmercurial SUNWaudh SUNWxwinc SUNWxorg-headers SUNWgm4 SUNWgnome-common-devel SUNWcvs SUNWgmake sunstudio
  • OpenSolaris builds since snv_133:
$ pfexec pkg install x11/header mercurial header-audio x11/header header-xorg gnu-m4 gnome/gettext cvs gnu-make sunstudio

  • gcc or gcc-43 is required to build js-ctypes
  • autoconf 2.13 is necessary if you get source code from hg repo. Download the source tarball, untar it, ./configure --program-suffix=-2.13; gmake; pfexec gmake install. Autoconf 2.5x will not work. See bug 104642 for details. 

Build Environment

Get source code from hg repo or source tarball.

Sun Studio 12.1 is recommended for building Mozilla project (however there're some bugs you need workarounds).
Sun Studio 12 or gcc-43 is usable but you need some patches.

Set the environment variables as follows:

export PATH=$PATH:/opt/sunstudio12.1/bin:{gcc PATH}:{autoconf-2.13 PATH}
export CC=cc
export CXX=CC

You can use a typical .mozconfig file. For current HEAD these mozconfigs are recommended:

For Firefox debug build:
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-debug
ac_add_options --enable-application=browser
ac_add_options --enable-tests
ac_add_options --disable-jemalloc
ac_add_options --enable-dtrace
ac_add_options --enable-debug
ac_add_options --disable-optimize
ac_add_options --disable-ipc
ac_add_options --disable-libxul
ac_add_options --disable-crashreporter
For Firefox release build:
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-release
ac_add_options --enable-application=browser
ac_add_options --enable-tests
ac_add_options --disable-jemalloc
ac_add_options --enable-dtrace
ac_add_options --disable-debug
ac_add_options --enable-optimize
ac_add_options --disable-ipc
ac_add_options --disable-crashreporter
For Thunderbird debug build:
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-debug
ac_add_options --enable-application=mail
ac_add_options --enable-calendar
ac_add_options --enable-tests
ac_add_options --disable-jemalloc
ac_add_options --enable-dtrace
ac_add_options --enable-debug
ac_add_options --disable-optimize
ac_add_options --disable-ipc
ac_add_options --disable-libxul
ac_add_options --enable-shared
ac_add_options --disable-static
ac_add_options --disable-crashreporter
For Thunderbird release build:
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-release
ac_add_options --enable-application=mail
ac_add_options --enable-calendar
ac_add_options --enable-tests
ac_add_options --disable-jemalloc
ac_add_options --enable-dtrace
ac_add_options --disable-debug
ac_add_options --enable-optimize
ac_add_options --disable-ipc
ac_add_options --disable-shared
ac_add_options --enable-static
ac_add_options --disable-crashreporter

 Then run gmake -f client.mk to start to build.

Note that the standard Solaris make tool doesn't work. Use gmake instead. (For OpenSolaris, /usr/gnu/bin/make is gmake.)

Patches

See attached files for patches needed to build with Sun Studio 12.1.

Troubleshooting

  • You'll get an error if you use make instead of gmake.
$ make -f client.mk build
make: Fatal error in reader: client.mk, line 126: Unexpected end of line seen

$ gmake -f client.mk build
(this one works!)
  • If the build fails due to missing Makefile.in files check that you unpacked the archive with gtar (/usr/sfw/bin/gtar on Solaris 10) rather than the Solaris tar command.
  • If configure complains about your compiler, ensure you set CC and CXX correctly.
  • If you met a crash when start/close your build of Firefox/Thunderbird with MOZ_gdk_display_close in core stack, you hit defect 12024 . Set GTK_IM_MODULE=xim to get around.
  • If you want to remote display from SPARC to x86 or x86 to SPARC, please apply the patch in Bug 526977.
  • If configure tells you the x11 package is missing, save the following text to /usr/lib/pkgconfig/x11.pc (Sun bug 6571762). Alternatively, you can create x11.pc in an arbitrary location and set the PKG_CONFIG_PATH environment variable to the directory containing it.
prefix=/usr/openwin
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

xthreadlib=

Name: X11
Description: X Library
Version: 0.0
Requires: xproto kbproto inputproto
Requires.private: xau xdmcp
Cflags: -I${includedir} -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DXTHREADS -DXUSE_MTSAFE_API
Libs: -L${libdir} -R${libdir} -lX11
Libs.private:
  • If you're building on OpenSolaris 2008.05, and configure tells you the xrandr package is missing, save the following text to /usr/lib/pkgconfig/xrandr.pc . Alternatively, you can create xrandr.pc in an arbitrary location and set the PKG_CONFIG_PATH environment variable to the directory containing it.
prefix=/usr/X11
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: Xrandr
Description: X Randr Library
Version: 0.9.4
Requires: xproto renderproto >= 0.9 x11

Cflags: -I${includedir}
Libs: -L${libdir} -R${libdir} -lXrandr
  • If you're building Firefox 2, and mkdepend takes forever on nsIconChannel.cpp, disable automatic dependencies in your mozconfig file to work around bug 296653 (which is fixed on the trunk but not on the branch):
ac_add_options --disable-auto-deps
  • If you're building on a recent development version of OpenSolaris (snv_130 - snv_132, possibly prior) with the included SunStudio compiler, you may see the a C++ compiler error when running 'gmake -f client.mk build'.  This can be worked around by setting the C++ compiler flags:
export CXXFLAGS="-xannotate=no"

Document Tags and Contributors

Last updated by: Sheppy,