Source code

Revision control

Copy as Markdown

Other Tools

# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
project_flag(
"MOZ_ANDROID_EXCLUDE_FONTS",
help="Whether to exclude font files from the build",
default=True,
)
project_flag(
"MOZ_ANDROID_HLS_SUPPORT",
help="Enable HLS (HTTP Live Streaming) support (currently using the ExoPlayer library)",
default=True,
)
option(
"--num-content-services",
default="40",
help="The number of content process services to generate in the GeckoView manifest",
)
@depends("--num-content-services")
def num_content_services(value):
strValue = value[0]
intValue = int(strValue)
acceptableRange = range(1, 41)
if intValue not in acceptableRange:
die(
"Unacceptable value, must be within range [%d,%d)"
% (acceptableRange.start, acceptableRange.stop)
)
return strValue
set_config("MOZ_ANDROID_CONTENT_SERVICE_COUNT", num_content_services)
set_define("MOZ_ANDROID_CONTENT_SERVICE_COUNT", num_content_services)
option(
"--enable-isolated-process",
env="MOZ_ANDROID_CONTENT_SERVICE_ISOLATED_PROCESS",
help="Enable generating content process services with isolatedProcess=true",
default=False,
)
set_config(
"MOZ_ANDROID_CONTENT_SERVICE_ISOLATED_PROCESS",
depends_if("MOZ_ANDROID_CONTENT_SERVICE_ISOLATED_PROCESS")(lambda x: True),
)
option(
"--enable-geckoview-lite",
help="Build GeckoView in Lite mode. Lite mode removes all unnecessary dependencies like Glean",
)
set_config("MOZ_ANDROID_GECKOVIEW_LITE", True, when="--enable-geckoview-lite")
option(
"--enable-android-subproject",
choices=(
"fenix",
"focus",
"geckoview_example",
),
nargs="?",
help="Build a subproject of android. Possible options: fenix/focus/geckoview_example",
)
@depends("--enable-android-subproject")
def android_subproject(value):
if value:
return value[0]
set_config("MOZ_ANDROID_SUBPROJECT", android_subproject)
imply_option("MOZ_NORMANDY", False)
imply_option("MOZ_SERVICES_HEALTHREPORT", True)
imply_option("MOZ_GECKOVIEW_HISTORY", True)
imply_option("MOZ_APP_UA_NAME", "Firefox")
imply_option("MOZ_APP_VENDOR", "Mozilla")
imply_option("MOZ_APP_ID", "{aa3c5121-dab2-40e2-81ca-7ea25febc110}")
imply_option("BROWSER_CHROME_URL", "chrome://geckoview/content/geckoview.xhtml")
@depends(target)
def check_target(target):
if target.os != "Android":
log.error(
"You must specify --target=arm-linux-androideabi (or some "
"other valid Android target) when building mobile/android."
)
die(
"Build_Instructions/Simple_Firefox_for_Android_build "
"for more information about the necessary options."
)
include("../shared/moz.configure")
include("../../toolkit/moz.configure")
include("../../build/moz.configure/android-sdk.configure")
include("../../build/moz.configure/java.configure")
include("gradle.configure")
# Automation will set this via the TC environment.
option(
env="MOZ_ANDROID_FAT_AAR_ARCHITECTURES",
nargs="*",
choices=("armeabi-v7a", "arm64-v8a", "x86", "x86_64"),
help='Comma-separated list of Android CPU architectures like "armeabi-v7a,arm64-v8a,x86,x86_64"',
)
set_config(
"MOZ_ANDROID_FAT_AAR_ARCHITECTURES",
depends("MOZ_ANDROID_FAT_AAR_ARCHITECTURES")(lambda x: x),
)