# SeaMonkey Building & Source Code

Even though we are independent from Mozilla, as we're based on the same framework as Firefox, most of the mozilla.org developer pages also apply to SeaMonkey. You will need to read the source code section for information on how to download all the relevant code.

For getting into contact with the SeaMonkey development community, for example if you want to help us and have questions, try the development group/list and IRC chat as listed on the community page.

The SeaMonkey project and source code is divided into several areas, we have a list of SeaMonkey project areas available that also contains people ("owners" and "peers") responsible for those.

If you have already submitted patches to Bugzilla, you might be interested in our review and flag policies that apply to such patches.

## Build Prerequisites

You will need to complete the relevant instructions for preparing your OS for building SeaMonkey.

- Windows Build Prerequisites
- Linux Build Prerequisites
The following packages are required:
autoconf-2.13, python-2.7.18, nasm-2.14.x, rustc-1.38.0 (or 1.37.0 for 2.57), unzip-6.0 and zip-3.0
Note: For 2.53.x even though 1.38.0 is the minimum rustc version, 1.47.0 is the prefered one.
The following development packages are required:
alsa-lib, dbus-glib, GConf2, gtk+-2.24.x, gtk+-3.24.x, libXt, pulseaudio-libs and yasm-1.3.0
- macOS Build Prerequisites

## Getting the Source Code

There are currently three branches being worked on:

- 2.53.x
- 2.57
- Central

### 2.53.x Branch

2.53.x is considered to be the stable branch, Betas and Releases come from here. Anything that lands on this branch, either has to be a stability/security fix or a backport from one of the other branches. Any new features need to have landed on the other two branches.

The latest version of the released code can be downloaded using the following commands:

       git clone https://gitlab.com/seamonkey-project/seamonkey-2.53-mozilla.git mozilla-253

       cd mozilla-253

       git clone https://gitlab.com/seamonkey-project/seamonkey-2.53-comm.git comm

### 2.57 Branch

2.57 is potentially the next major release. Any new features need to land on this branch and not break building or running of SeaMonkey.

The latest version of the code from this branch can be downloaded using the following commands:

       hg clone https://hg.mozilla.org/releases/mozilla-esr60/ mozilla-esr60

       cd mozilla-esr60

       hg clone https://hg.mozilla.org/releases/comm-esr60/ comm

### Central Branch

Central is the very latest code. There is frequent build bustage here from linked code but we try to keep it building. Work is ongoing to have the built code running but needs lots of work. Any new features need to land on this branch and not break building.

The latest version of the code for the central branch can be downloaded using the following commands:

       hg clone https://hg.mozilla.org/mozilla-central/ mozilla-central

       cd mozilla-central

       hg clone https://hg.mozilla.org/comm-central/ comm

## Building SeaMonkey

Once you have downloaded the source code, you can move onto building SeaMonkey. You will need to create a basic .mozconfig file in the root of your source code (e.g. in mozilla-253).

    export CC=clang

    export CXX=clang++

    ac_add_options --enable-application=comm/suite

    ac_add_options --enable-calendar

    ac_add_options --enable-irc

    ac_add_options --enable-dominspector

    mk_add_options MOZ_OBJDIR=/path/to/objdir-sm253

    ac_add_options --enable-optimize

    ac_add_options --enable-js-shell

    ac_add_options --enable-elf-hack

    ac_add_options --disable-debug-symbols

    ac_add_options --disable-tests

    # Disable checking that add-ons are signed by the trusted root

    MOZ_ADDON_SIGNING=0

    # Disable enforcing that add-ons are signed by the trusted root

    MOZ_REQUIRE_SIGNING=0

    # Package js shell

    export MOZ_PACKAGE_JSSHELL=1

On the Linux platform you can also make use of ccache by adding to your .mozconfig file:

    # Use ccache

    ac_add_options --with-ccache=/usr/bin/ccache

The build can then be started by typing the following command in the root of your source code:

    ./mach build