summaryrefslogtreecommitdiffstats
path: root/mobile/android/moz.configure
blob: 66c3a7c8eb56058f3d0d41d473473f3d0fa8c36c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# -*- 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")

imply_option("MOZ_NORMANDY", False)
imply_option("MOZ_SERVICES_HEALTHREPORT", True)
imply_option("MOZ_ANDROID_HISTORY", True)
imply_option("--enable-small-chunk-size", True)


@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("../../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),
)