xref: /aosp_15_r20/external/cronet/build/android/BUILD.gn (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker# Copyright 2014 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Workerimport("//build/config/android/build_vars.gni")
6*6777b538SAndroid Build Coastguard Workerimport("//build/config/android/config.gni")
7*6777b538SAndroid Build Coastguard Workerimport("//build/config/android/rules.gni")
8*6777b538SAndroid Build Coastguard Workerimport("//build/config/clang/clang.gni")
9*6777b538SAndroid Build Coastguard Workerimport("//build/config/coverage/coverage.gni")
10*6777b538SAndroid Build Coastguard Workerimport("//build/config/gclient_args.gni")
11*6777b538SAndroid Build Coastguard Workerimport("//build/config/python.gni")
12*6777b538SAndroid Build Coastguard Workerimport("//build_overrides/build.gni")
13*6777b538SAndroid Build Coastguard Worker
14*6777b538SAndroid Build Coastguard Workerif (build_with_chromium) {
15*6777b538SAndroid Build Coastguard Worker  import("//base/allocator/partition_allocator/partition_alloc.gni")
16*6777b538SAndroid Build Coastguard Worker}
17*6777b538SAndroid Build Coastguard Worker
18*6777b538SAndroid Build Coastguard Workerif (enable_java_templates) {
19*6777b538SAndroid Build Coastguard Worker  # Create or update the API versions cache if necessary by running a
20*6777b538SAndroid Build Coastguard Worker  # functionally empty lint task. This prevents racy creation of the
21*6777b538SAndroid Build Coastguard Worker  # cache while linting java targets in android_lint.
22*6777b538SAndroid Build Coastguard Worker  android_lint("prepare_android_lint_cache") {
23*6777b538SAndroid Build Coastguard Worker    create_cache = true
24*6777b538SAndroid Build Coastguard Worker  }
25*6777b538SAndroid Build Coastguard Worker
26*6777b538SAndroid Build Coastguard Worker  generate_build_config_srcjar("build_config_gen") {
27*6777b538SAndroid Build Coastguard Worker    use_final_fields = false
28*6777b538SAndroid Build Coastguard Worker  }
29*6777b538SAndroid Build Coastguard Worker
30*6777b538SAndroid Build Coastguard Worker  generate_build_config_srcjar("build_config_for_testing_gen") {
31*6777b538SAndroid Build Coastguard Worker    use_final_fields = false
32*6777b538SAndroid Build Coastguard Worker    testonly = true
33*6777b538SAndroid Build Coastguard Worker  }
34*6777b538SAndroid Build Coastguard Worker
35*6777b538SAndroid Build Coastguard Worker  write_native_libraries_java("native_libraries_gen") {
36*6777b538SAndroid Build Coastguard Worker    use_final_fields = false
37*6777b538SAndroid Build Coastguard Worker  }
38*6777b538SAndroid Build Coastguard Worker
39*6777b538SAndroid Build Coastguard Worker  java_library("build_java") {
40*6777b538SAndroid Build Coastguard Worker    supports_android = true
41*6777b538SAndroid Build Coastguard Worker    srcjar_deps = [
42*6777b538SAndroid Build Coastguard Worker      ":build_config_gen",
43*6777b538SAndroid Build Coastguard Worker      ":native_libraries_gen",
44*6777b538SAndroid Build Coastguard Worker    ]
45*6777b538SAndroid Build Coastguard Worker    sources = [
46*6777b538SAndroid Build Coastguard Worker      "java/src/org/chromium/build/annotations/AlwaysInline.java",
47*6777b538SAndroid Build Coastguard Worker      "java/src/org/chromium/build/annotations/AssumeNonNull.java",
48*6777b538SAndroid Build Coastguard Worker      "java/src/org/chromium/build/annotations/CheckDiscard.java",
49*6777b538SAndroid Build Coastguard Worker      "java/src/org/chromium/build/annotations/DoNotClassMerge.java",
50*6777b538SAndroid Build Coastguard Worker      "java/src/org/chromium/build/annotations/DoNotInline.java",
51*6777b538SAndroid Build Coastguard Worker      "java/src/org/chromium/build/annotations/DoNotStripLogs.java",
52*6777b538SAndroid Build Coastguard Worker      "java/src/org/chromium/build/annotations/IdentifierNameString.java",
53*6777b538SAndroid Build Coastguard Worker      "java/src/org/chromium/build/annotations/MockedInTests.java",
54*6777b538SAndroid Build Coastguard Worker      "java/src/org/chromium/build/annotations/UsedByReflection.java",
55*6777b538SAndroid Build Coastguard Worker    ]
56*6777b538SAndroid Build Coastguard Worker
57*6777b538SAndroid Build Coastguard Worker    jar_excluded_patterns = [ "*/build/BuildConfig.class" ]
58*6777b538SAndroid Build Coastguard Worker
59*6777b538SAndroid Build Coastguard Worker    # New version of NativeLibraries.java (with the actual correct values) will
60*6777b538SAndroid Build Coastguard Worker    # be created when creating an apk.
61*6777b538SAndroid Build Coastguard Worker    jar_excluded_patterns += [ "*/NativeLibraries.class" ]
62*6777b538SAndroid Build Coastguard Worker
63*6777b538SAndroid Build Coastguard Worker    proguard_configs = [ "chromium_annotations.flags" ]
64*6777b538SAndroid Build Coastguard Worker  }
65*6777b538SAndroid Build Coastguard Worker
66*6777b538SAndroid Build Coastguard Worker  # Not all //build embedders pull in junit_binary deps that live in //third_party.
67*6777b538SAndroid Build Coastguard Worker  if (build_with_chromium) {
68*6777b538SAndroid Build Coastguard Worker    android_assets("junit_test_assets") {
69*6777b538SAndroid Build Coastguard Worker      testonly = true
70*6777b538SAndroid Build Coastguard Worker
71*6777b538SAndroid Build Coastguard Worker      # We just need any file here, so use the test itself.
72*6777b538SAndroid Build Coastguard Worker      sources = [ "junit/src/org/chromium/build/AndroidAssetsTest.java" ]
73*6777b538SAndroid Build Coastguard Worker    }
74*6777b538SAndroid Build Coastguard Worker    android_resources("junit_test_resources") {
75*6777b538SAndroid Build Coastguard Worker      testonly = true
76*6777b538SAndroid Build Coastguard Worker      sources = [ "junit/res/values/strings.xml" ]
77*6777b538SAndroid Build Coastguard Worker      mergeable_android_manifests = [ "junit/AndroidManifest_mergetest.xml" ]
78*6777b538SAndroid Build Coastguard Worker    }
79*6777b538SAndroid Build Coastguard Worker    robolectric_binary("build_junit_tests") {
80*6777b538SAndroid Build Coastguard Worker      # Test has no JNI, so skip JNI Generator step.
81*6777b538SAndroid Build Coastguard Worker      resources_package = "org.chromium.build"
82*6777b538SAndroid Build Coastguard Worker      sources = [
83*6777b538SAndroid Build Coastguard Worker        "junit/src/org/chromium/build/AndroidAssetsTest.java",
84*6777b538SAndroid Build Coastguard Worker        "junit/src/org/chromium/build/IncrementalJavacTest.java",
85*6777b538SAndroid Build Coastguard Worker      ]
86*6777b538SAndroid Build Coastguard Worker      deps = [
87*6777b538SAndroid Build Coastguard Worker        ":junit_test_assets",
88*6777b538SAndroid Build Coastguard Worker        ":junit_test_resources",
89*6777b538SAndroid Build Coastguard Worker        "//build/android/test/incremental_javac_gn:no_signature_change_prebuilt_java",
90*6777b538SAndroid Build Coastguard Worker        "//third_party/junit",
91*6777b538SAndroid Build Coastguard Worker      ]
92*6777b538SAndroid Build Coastguard Worker    }
93*6777b538SAndroid Build Coastguard Worker  }
94*6777b538SAndroid Build Coastguard Worker}
95*6777b538SAndroid Build Coastguard Worker
96*6777b538SAndroid Build Coastguard Worker# TODO(go/turn-down-test-results): Remove once we turn down
97*6777b538SAndroid Build Coastguard Worker# test-results.appspot.com
98*6777b538SAndroid Build Coastguard Workerpython_library("test_result_presentations_py") {
99*6777b538SAndroid Build Coastguard Worker  pydeps_file = "pylib/results/presentation/test_results_presentation.pydeps"
100*6777b538SAndroid Build Coastguard Worker  data = [
101*6777b538SAndroid Build Coastguard Worker    "//build/android/pylib/results/presentation/template",
102*6777b538SAndroid Build Coastguard Worker    "//build/android/pylib/results/presentation/javascript/main_html.js",
103*6777b538SAndroid Build Coastguard Worker    "//third_party/catapult/third_party/gsutil/",
104*6777b538SAndroid Build Coastguard Worker    "//third_party/jinja2/debug.py",
105*6777b538SAndroid Build Coastguard Worker    "//third_party/six",
106*6777b538SAndroid Build Coastguard Worker  ]
107*6777b538SAndroid Build Coastguard Worker}
108*6777b538SAndroid Build Coastguard Worker
109*6777b538SAndroid Build Coastguard Workerpython_library("devil_chromium_py") {
110*6777b538SAndroid Build Coastguard Worker  pydeps_file = "devil_chromium.pydeps"
111*6777b538SAndroid Build Coastguard Worker  data = [
112*6777b538SAndroid Build Coastguard Worker    "devil_chromium.py",
113*6777b538SAndroid Build Coastguard Worker    "devil_chromium.json",
114*6777b538SAndroid Build Coastguard Worker    "//third_party/catapult/third_party/gsutil/",
115*6777b538SAndroid Build Coastguard Worker    "//third_party/catapult/devil/devil/devil_dependencies.json",
116*6777b538SAndroid Build Coastguard Worker
117*6777b538SAndroid Build Coastguard Worker    # Read by gn_helpers.BuildWithChromium()
118*6777b538SAndroid Build Coastguard Worker    "//build/config/gclient_args.gni",
119*6777b538SAndroid Build Coastguard Worker  ]
120*6777b538SAndroid Build Coastguard Worker}
121*6777b538SAndroid Build Coastguard Worker
122*6777b538SAndroid Build Coastguard Worker# Contains runtime deps for installing apks.
123*6777b538SAndroid Build Coastguard Worker# E.g. from test_runner.py or from apk_operations.py.
124*6777b538SAndroid Build Coastguard Workergroup("apk_installer_data") {
125*6777b538SAndroid Build Coastguard Worker  # Other //build users let devil library fetch these from Google Storage.
126*6777b538SAndroid Build Coastguard Worker  if (build_with_chromium) {
127*6777b538SAndroid Build Coastguard Worker    if (is_component_build) {
128*6777b538SAndroid Build Coastguard Worker      data_deps = [
129*6777b538SAndroid Build Coastguard Worker        "//build/android/pylib/device/commands",
130*6777b538SAndroid Build Coastguard Worker        "//tools/android/md5sum",
131*6777b538SAndroid Build Coastguard Worker      ]
132*6777b538SAndroid Build Coastguard Worker    }
133*6777b538SAndroid Build Coastguard Worker    data = [ "//third_party/android_build_tools/bundletool/bundletool.jar" ]
134*6777b538SAndroid Build Coastguard Worker  }
135*6777b538SAndroid Build Coastguard Worker}
136*6777b538SAndroid Build Coastguard Worker
137*6777b538SAndroid Build Coastguard Workerpython_library("apk_operations_py") {
138*6777b538SAndroid Build Coastguard Worker  pydeps_file = "apk_operations.pydeps"
139*6777b538SAndroid Build Coastguard Worker  deps = [ ":apk_installer_data" ]
140*6777b538SAndroid Build Coastguard Worker}
141*6777b538SAndroid Build Coastguard Worker
142*6777b538SAndroid Build Coastguard Workergroup("test_runner_py") {
143*6777b538SAndroid Build Coastguard Worker  testonly = true
144*6777b538SAndroid Build Coastguard Worker  deps = [
145*6777b538SAndroid Build Coastguard Worker    ":test_runner_core_py",
146*6777b538SAndroid Build Coastguard Worker    ":test_runner_device_support",
147*6777b538SAndroid Build Coastguard Worker  ]
148*6777b538SAndroid Build Coastguard Worker}
149*6777b538SAndroid Build Coastguard Worker
150*6777b538SAndroid Build Coastguard Workerpython_library("test_runner_core_py") {
151*6777b538SAndroid Build Coastguard Worker  testonly = true
152*6777b538SAndroid Build Coastguard Worker  pydeps_file = "test_runner.pydeps"
153*6777b538SAndroid Build Coastguard Worker  data = [
154*6777b538SAndroid Build Coastguard Worker    "pylib/gtest/filter/",
155*6777b538SAndroid Build Coastguard Worker    "pylib/instrumentation/render_test.html.jinja",
156*6777b538SAndroid Build Coastguard Worker    "pylib/local/machine/local_machine_hostside_tradefed_config.xml",
157*6777b538SAndroid Build Coastguard Worker    "test_wrapper/logdog_wrapper.py",
158*6777b538SAndroid Build Coastguard Worker    "//third_party/requests/",
159*6777b538SAndroid Build Coastguard Worker  ]
160*6777b538SAndroid Build Coastguard Worker  data_deps = [ ":logdog_wrapper_py" ]
161*6777b538SAndroid Build Coastguard Worker  if (use_clang_coverage && checkout_clang_coverage_tools) {
162*6777b538SAndroid Build Coastguard Worker    # Test runner script may use `llvm-profdata` (if exists) to merge
163*6777b538SAndroid Build Coastguard Worker    # clang code coverage data after each instrumentation test to
164*6777b538SAndroid Build Coastguard Worker    # save space. The tool only exists when `checkout_clang_coverage_tools`
165*6777b538SAndroid Build Coastguard Worker    # gclient custom_var is true.
166*6777b538SAndroid Build Coastguard Worker    data += [ "${clang_base_path}/bin/llvm-profdata" ]
167*6777b538SAndroid Build Coastguard Worker  }
168*6777b538SAndroid Build Coastguard Worker}
169*6777b538SAndroid Build Coastguard Worker
170*6777b538SAndroid Build Coastguard Workergroup("test_runner_device_support") {
171*6777b538SAndroid Build Coastguard Worker  testonly = true
172*6777b538SAndroid Build Coastguard Worker
173*6777b538SAndroid Build Coastguard Worker  # We hardcode using these tools from the public sdk in devil_chromium.json and
174*6777b538SAndroid Build Coastguard Worker  # in pylib's constants.
175*6777b538SAndroid Build Coastguard Worker  data = [
176*6777b538SAndroid Build Coastguard Worker    "${public_android_sdk_build_tools}/aapt",
177*6777b538SAndroid Build Coastguard Worker    "${public_android_sdk_build_tools}/aapt2",
178*6777b538SAndroid Build Coastguard Worker    "${public_android_sdk_build_tools}/dexdump",
179*6777b538SAndroid Build Coastguard Worker    "${public_android_sdk_build_tools}/lib64/libc++.so",
180*6777b538SAndroid Build Coastguard Worker    "${public_android_sdk_build_tools}/split-select",
181*6777b538SAndroid Build Coastguard Worker    "${public_android_sdk_root}/platform-tools/adb",
182*6777b538SAndroid Build Coastguard Worker  ]
183*6777b538SAndroid Build Coastguard Worker  data_deps = [
184*6777b538SAndroid Build Coastguard Worker    ":apk_installer_data",
185*6777b538SAndroid Build Coastguard Worker    ":devil_chromium_py",
186*6777b538SAndroid Build Coastguard Worker    ":stack_tools",
187*6777b538SAndroid Build Coastguard Worker  ]
188*6777b538SAndroid Build Coastguard Worker
189*6777b538SAndroid Build Coastguard Worker  # Other //build users let devil library fetch these from Google Storage.
190*6777b538SAndroid Build Coastguard Worker  if (build_with_chromium) {
191*6777b538SAndroid Build Coastguard Worker    if (!is_component_build) {
192*6777b538SAndroid Build Coastguard Worker      data_deps += [ "//tools/android/forwarder2" ]
193*6777b538SAndroid Build Coastguard Worker    }
194*6777b538SAndroid Build Coastguard Worker    data += [ "//tools/android/avd/proto/" ]
195*6777b538SAndroid Build Coastguard Worker    if (enable_chrome_android_internal) {
196*6777b538SAndroid Build Coastguard Worker      data += [ "//clank/tools/android/avd/proto/" ]
197*6777b538SAndroid Build Coastguard Worker    }
198*6777b538SAndroid Build Coastguard Worker    if (is_asan) {
199*6777b538SAndroid Build Coastguard Worker      data_deps += [ "//tools/android/asan/third_party:asan_device_setup" ]
200*6777b538SAndroid Build Coastguard Worker    }
201*6777b538SAndroid Build Coastguard Worker    if (use_full_mte) {
202*6777b538SAndroid Build Coastguard Worker      data_deps += [ "//tools/android/mte:mte_device_setup" ]
203*6777b538SAndroid Build Coastguard Worker    }
204*6777b538SAndroid Build Coastguard Worker  }
205*6777b538SAndroid Build Coastguard Worker
206*6777b538SAndroid Build Coastguard Worker  # Proguard is needed only when using apks (rather than native executables).
207*6777b538SAndroid Build Coastguard Worker  if (enable_java_templates) {
208*6777b538SAndroid Build Coastguard Worker    data_deps += [ "//build/android/stacktrace:java_deobfuscate" ]
209*6777b538SAndroid Build Coastguard Worker  }
210*6777b538SAndroid Build Coastguard Worker}
211*6777b538SAndroid Build Coastguard Worker
212*6777b538SAndroid Build Coastguard Workerpython_library("logdog_wrapper_py") {
213*6777b538SAndroid Build Coastguard Worker  pydeps_file = "test_wrapper/logdog_wrapper.pydeps"
214*6777b538SAndroid Build Coastguard Worker}
215*6777b538SAndroid Build Coastguard Worker
216*6777b538SAndroid Build Coastguard Workerpython_library("resource_sizes_py") {
217*6777b538SAndroid Build Coastguard Worker  pydeps_file = "resource_sizes.pydeps"
218*6777b538SAndroid Build Coastguard Worker  data_deps = [
219*6777b538SAndroid Build Coastguard Worker    ":devil_chromium_py",
220*6777b538SAndroid Build Coastguard Worker    "//third_party/catapult/tracing:convert_chart_json",
221*6777b538SAndroid Build Coastguard Worker  ]
222*6777b538SAndroid Build Coastguard Worker
223*6777b538SAndroid Build Coastguard Worker  data = [
224*6777b538SAndroid Build Coastguard Worker    build_vars_file,
225*6777b538SAndroid Build Coastguard Worker    "//third_party/llvm-build/Release+Asserts/bin/llvm-readobj",
226*6777b538SAndroid Build Coastguard Worker  ]
227*6777b538SAndroid Build Coastguard Worker}
228*6777b538SAndroid Build Coastguard Worker
229*6777b538SAndroid Build Coastguard Worker# Tools necessary for symbolizing tombstones or stack traces that are output to
230*6777b538SAndroid Build Coastguard Worker# logcat.
231*6777b538SAndroid Build Coastguard Worker# Hidden behind build_with_chromium because some third party repos that use
232*6777b538SAndroid Build Coastguard Worker# //build don't pull in //third_party/android_platform.
233*6777b538SAndroid Build Coastguard Worker# TODO(crbug.com/1120190): Move stack script into //build/third_party
234*6777b538SAndroid Build Coastguard Worker#     and enable unconditionally.
235*6777b538SAndroid Build Coastguard Workergroup("stack_tools") {
236*6777b538SAndroid Build Coastguard Worker  if (build_with_chromium) {
237*6777b538SAndroid Build Coastguard Worker    data = [
238*6777b538SAndroid Build Coastguard Worker      "tombstones.py",
239*6777b538SAndroid Build Coastguard Worker      "pylib/symbols/",
240*6777b538SAndroid Build Coastguard Worker      "stacktrace/",
241*6777b538SAndroid Build Coastguard Worker    ]
242*6777b538SAndroid Build Coastguard Worker
243*6777b538SAndroid Build Coastguard Worker    data_deps =
244*6777b538SAndroid Build Coastguard Worker        [ "//third_party/android_platform/development/scripts:stack_py" ]
245*6777b538SAndroid Build Coastguard Worker  }
246*6777b538SAndroid Build Coastguard Worker}
247*6777b538SAndroid Build Coastguard Worker
248*6777b538SAndroid Build Coastguard Worker# GN evaluates each .gn file once per toolchain, so restricting to default
249*6777b538SAndroid Build Coastguard Worker# toolchain will ensure write_file() is called only once.
250*6777b538SAndroid Build Coastguard Workerassert(current_toolchain == default_toolchain)
251*6777b538SAndroid Build Coastguard Worker
252*6777b538SAndroid Build Coastguard Worker# NOTE: If other platforms would benefit from exporting variables, we should
253*6777b538SAndroid Build Coastguard Worker# move this to a more top-level place.
254*6777b538SAndroid Build Coastguard Worker# It is currently here (instead of //BUILD.gn) to ensure that the file is
255*6777b538SAndroid Build Coastguard Worker# written even for non-chromium embedders of //build.
256*6777b538SAndroid Build Coastguard Worker_build_vars_json = {
257*6777b538SAndroid Build Coastguard Worker  # Underscore prefix so that it appears at the top.
258*6777b538SAndroid Build Coastguard Worker  _HEADER = "Generated during 'gn gen' by //build/android/BUILD.gn."
259*6777b538SAndroid Build Coastguard Worker  forward_variables_from(android_build_vars_json, "*")
260*6777b538SAndroid Build Coastguard Worker}
261*6777b538SAndroid Build Coastguard Worker
262*6777b538SAndroid Build Coastguard Workerwrite_file(build_vars_file, _build_vars_json, "json")
263