Description of makefile rules
=============================


torbrowser-release
------------------
Build Tor Browser for the release channel, for all supported platforms.
The resulting build can be found in directory torbrowser/release/$version.

torbrowser-release-{linux-x86_64,linux-i686,windows-i686,macos,
                    android-armv7, android-x86,android-x86_64,
                    android-aarch64,desktop,android}
--------------------------------------------------------------------
Same as torbrowser-release, for the selected platform only. The "desktop"
platform means Linux, Windows and macOS. The "android" platform means
android for all architectures we support.

torbrowser-alpha
----------------
Build Tor Browser for the alpha channel, for all supported platforms.
The resulting build can be found in directory torbrowser/alpha/$version.

torbrowser-alpha-{linux-x86_64,linux-i686,windows-i686,macos,
                  android-armv7,android-x86,android-x86_64,
                  android-aarch64,desktop,android}
------------------------------------------------------------------
Same as torbrowser-alpha, for the selected platform only.

torbrowser-nightly
------------------
Build Tor Browser for the nightly channel, for all supported platforms.
Many of the components will be based on the main branch. You might
want to run "make fetch" before, to fetch the latest commits from all
components.

The resulting build can be found in directory torbrowser/nightly/$date

torbrowser-nightly-{linux-x86_64,linux-i686,windows-i686,macos,
                    android-armv7,android-x86,android-x86_64,
                    android-aarch64,desktop,android}
--------------------------------------------------------------------
Same as torbrowser-nightly, for the selected platform only.

torbrowser-testbuild
--------------------
Build a Tor Browser test build. To make the build faster, only the en-US
locale is created, without mar files, and without the source tarballs.
By default it is based on the alpha channel, but you can change that by
editing rbm.local.conf. The resulting build can be found in directory
testbuild.

torbrowser-testbuild-{linux-x86_64,linux-i686,windows-i686,macos,
                    android-armv7,android-x86,android-x86_64,
                    android-aarch64,desktop,android}
-----------------------------------------------------------------
Same as torbrowser-testbuild, for the selected platform only.


torbrowser-testbuild-macos-{x86_64,aarch64}
-------------------------------------------
By default, macos builds are universal (targeting x86_64 and aarch64).
With this special testbuild target, you can do a build for a specific
arch only.

torbrowser-{release,alpha,nightly,testbuild}-linux-x86_64-asan
--------------------------------------------------------------
Create a build for Linux x86_64 with Address Sanitizer enabled.

torbrowser-{release,alpha,nightly,testbuild}-src
------------------------------------------------
Create source tarballs for firefox and torbutton.

basebrowser-*
-------------
The same rules for building Tor Browser also exist for building
Base Browser.

privacybrowser-*
----------------
The same rules for building Tor Browser also exist for building
Privacy Browser.

fetch
-----
Fetch new commits from all components. This is useful when you want to
build the nightly channel.

clean
-----
Clean files created during previous builds that are no longer used in
current builds. Before using this command, you first need to configure
in rbm.local.conf the channel(s) that you are building.

In other software, the clean rule is used to remove all build files,
but this is not the case here, where only obsolete build files are
removed. It is usually not necessary to remove all build files before
starting a new build as the need for rebuilding components is detected
automatically. If you want to remove all build files, you can remove
the out/ directory.

clean-dry-run
-------------
Print the files that would be removed when running 'make clean'.

signtag-{release,alpha}
-----------------------
Create a git signed tag for the selected channel, using the version and
build number defined as var/torbrowser_version and var/torbrowser_build.

incrementals-{release,alpha}
----------------------------
Create incremental mar files for an unsigned build in the release or
alpha channel. The list of versions we create incrementals from is
defined as var/torbrowser_incremental_from in rbm.conf.

incrementals-nightly
--------------------
Create incremental mar files for the current nightly build. The number
of previous versions we should generate incremental mars from is defined
as var/max_torbrowser_incremental_from in rbm.conf.

If you want to create incremental mars for a version that is not the
current one, you can define the environment variable
TORBROWSER_NIGHTLY_VERSION to the version you want to generate
incremental mars for.

dmg2mar-{release,alpha)
-----------------------
Generate updated mar files for the OSX bundles, from the dmg files, then
regenerate the OSX incremental mar files. You should run this after
signing the OSX dmg files.

update_responses-{release,alpha}
--------------------------------
Create update responses xml files for a signed build in the release or
alpha channel. The files can be found in a tar in the directory
{release,alpha}/update-responses.

