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