Building Pale Moon: SunOS-based Systems

These instructions are for building Pale Moon 31.0.0 and newer and assumes you want to build the latest release.

Prerequisites

  • GCC version 10.x
  • Python 2.7.x
  • Exactly Autoconf 2.13
  • Yasm 1.2.0 or higher
  • GTK 3.x
  • X.Org
  • XZ
  • Motif
  • Sun Workshop/Sunpro libc
  • Audio Header files
  • pkg-config
  • Plenty of free disk space
  • At least 6 GB RAM free depending on number of processor cores (limit using the
    mk_add_options MOZ_MAKE_FLAGS="-jN"
    option)
  • Various distribution specific development packages
  • General system requirements for running the application itself

Getting the source

These instructions assume you are going to create a directory in your home directory (~) called palemoon-source. You can, of course, put the source code anywhere you want as long as the path does not contain any spaces.

Using git

Git is the official way to get the Pale Moon source code from our repository server and to build.

  • Install git and open a Bash prompt, and change directory to the desired source location, e.g.
    cd /location-you-picked/palemoon-source/
  • Execute the following commands:
    git clone https://repo.palemoon.org/MoonchildProductions/Pale-Moon.git ./
    git submodule init && git submodule update
    git checkout release && git submodule update
    
  • Close Bash and proceed to the "Build instructions" below.

Using the source archives

These instructions are for building Pale Moon 29.4.1 to 29.4.6 as well as older versions that were released as source code snapshot archives.

This requires downloading source archives from the Pale Moon Archive Server:

  • Navigate to the source directory on the Archive Server and download the desired version of the source tarball.
  • The archive filename is in the following format (where n.n.n is the Pale Moon version):
    palemoon-n.n.n-source.tar.xz
  • Extract the source code to the desired location.
  • Proceed to the "Build instructions" below.

SunOS Variants

OpenIndiana

Install the required build dependencies by executing the following commands:

pfexec pkg install git gcc-10 yasm pkg-config autoconf-213 header-audio sunpro motif python-27 xz gtk3 xorg

Oracle Solaris 11.x

Install the required build dependencies by executing the following commands:

pfexec pkg install git gcc-10 yasm pkg-config autoconf-213 system/header sunpro motif python-27 xz solaris-desktop

Build instructions

Configure

Create a file called .mozconfig in the source folder you cloned or unpacked the source to. Make sure it contains at least the following for a close-to-official build:

.mozconfig file

# Clear this if not a 64bit build
_BUILD_64=1

# Clear this to build for Solaris
_BUILD_ILLUMOS=1

# Standard build options for Pale Moon
ac_add_options --enable-application=palemoon
ac_add_options --enable-optimize="-O2 -w"
ac_add_options --enable-default-toolkit=cairo-gtk3
ac_add_options --enable-jemalloc
ac_add_options --enable-strip
ac_add_options --enable-devtools
ac_add_options --enable-av1
ac_add_options --enable-jxl
ac_add_options --disable-webrtc
ac_add_options --disable-gamepad
ac_add_options --disable-tests
ac_add_options --disable-debug
ac_add_options --disable-necko-wifi
ac_add_options --disable-updater
ac_add_options --with-pthreads

# SunOS requires this because the GNU toolchain is not the default
ac_add_options --with-toolchain-prefix=g

# Please see https://www.palemoon.org/redist.shtml for restrictions when using the official branding.
ac_add_options --enable-official-branding
export MOZILLA_OFFICIAL=1
export CONFIG_SHELL=/bin/bash

if [ -n "$_BUILD_ILLUMOS" ]; then
  export MOZ_PKG_SPECIAL=illumos
fi

if [ -n "$_BUILD_64" ]; then
  ac_add_options --libdir=/usr/lib/amd64
  ac_add_options --x-libraries=/usr/lib/amd64
  export PKG_CONFIG_PATH=/usr/lib/amd64/pkgconfig
else
  ac_add_options --x-libraries=/usr/lib
fi

Note: less is more! There are some pre-made build configs out there that have a lot of options listed, often with insane resulting build configurations. Do not use those and stick to the instructions here.

Build

Start the build:

./mach build

Be patient. Building could take a long time. Your PC will be fully occupied compiling and linking the browser (you can expect 100% CPU usage throughout and lots of memory use - provide ample cooling) and you should not be using it for anything else that is resource-intensive at this time. Especially memory-intensive applications should be avoided because it can cause issues with the linker (memory fragmentation) resulting in a very unstable browser.

Strip/package

After building is completed, you can take the resulting binaries for a test run in the object directory directly (see the on-screen instructions at the end of the build process) but it will not be complete yet. You need to strip and package the browser to integrate additional code, pack up the resource files, and have a ready-to-use browser. You do this by running:

./mach package
This will create a properly packaged xz compressed tarball in your object folder under the Pale Moon source folder. e.g. for illumos kernel 64bit:
~/palemoon-source/obj-x86_64-pc-solaris2.11/dist/palemoon-{version}.solaris2.11-x86_64-illumos.tar.xz

Site design and Branding © 2024 Moonchild Productions - All rights reserved
Any other content, brand names or logos are copyright or trademark to their respective owners.
Policies: Cookies - User Content - Privacy.

The Pale Moon Developer Site is powered by Project Selene 1.2.1.