155 lines
4.5 KiB
Python
155 lines
4.5 KiB
Python
# -*- 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,
|
|
)
|
|
|
|
isIsolatedProcessEnabled = depends_if("MOZ_ANDROID_CONTENT_SERVICE_ISOLATED_PROCESS")(
|
|
lambda _: True
|
|
)
|
|
set_config(
|
|
"MOZ_ANDROID_CONTENT_SERVICE_ISOLATED_PROCESS",
|
|
isIsolatedProcessEnabled,
|
|
)
|
|
set_define(
|
|
"MOZ_ANDROID_CONTENT_SERVICE_ISOLATED_PROCESS",
|
|
isIsolatedProcessEnabled,
|
|
)
|
|
|
|
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)
|
|
|
|
|
|
# The android:debuggable flag controls if a debugger can be attached on to the
|
|
# running app. Default this setting to follow `--enable-debug`. Use this flag to
|
|
# allow attaching debugging to app compiled in an optimized / release
|
|
# configuration.
|
|
#
|
|
# NOTE: There are numerous performance implications for a package marked as
|
|
# android:debuggable versus a similar one that isn't. Particularly around
|
|
# AOT compilation heuristics and caches.
|
|
|
|
option(
|
|
"--enable-android-debuggable",
|
|
default=moz_debug,
|
|
help="{Enable|Disable} the android:debuggable flag in AndroidManifest.xml",
|
|
)
|
|
|
|
|
|
@depends("--enable-android-debuggable")
|
|
def android_debuggable(value):
|
|
if value:
|
|
return True
|
|
|
|
|
|
set_config("MOZ_ANDROID_DEBUGGABLE", android_debuggable)
|
|
|
|
|
|
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(
|
|
"See https://developer.mozilla.org/docs/Mozilla/Developer_guide/"
|
|
"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),
|
|
)
|