blob: cfca168cbaba1f609461d0c260161793872bcc21 [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/android/rules.gni")
if (enable_java_templates) {
import("//third_party/ijar/ijar.gni")
sun_tools_jar_path = "$root_gen_dir/sun_tools_jar/tools.jar"
# Create or update the API versions cache if necessary by running a
# functionally empty lint task. This prevents racy creation of the
# cache while linting java targets in android_lint.
android_lint("prepare_android_lint_cache") {
android_manifest = "//build/android/AndroidManifest.xml"
create_cache = true
}
action("find_sun_tools_jar") {
script = "//build/android/gyp/find_sun_tools_jar.py"
depfile = "$target_gen_dir/$target_name.d"
outputs = [
depfile,
sun_tools_jar_path,
]
args = [
"--depfile",
rebase_path(depfile, root_build_dir),
"--output",
rebase_path(sun_tools_jar_path, root_build_dir),
]
}
java_prebuilt("sun_tools_java") {
jar_path = sun_tools_jar_path
jar_dep = ":find_sun_tools_jar"
}
generate_interface_jar("android_ijar") {
input_jar = android_sdk_jar
output_jar = "$root_out_dir/lib.java/android.interface.jar"
}
_rebased_android_sdk_root = rebase_path(android_sdk_root, root_build_dir)
# Record GN vars that are needed by generate_gradle.py.
# One statement per-line to make GN's formatter leave it alone.
CR = "$0x0A"
_json = "{$CR"
_json += " \"android_sdk_root\": \"$_rebased_android_sdk_root\",$CR"
_json += " \"android_sdk_root\": \"$_rebased_android_sdk_root\",$CR"
_json += " \"compile_sdk_version\": \"$android_sdk_version\",$CR"
_json += " \"build_tools_version\": \"$android_sdk_build_tools_version\"$CR"
_json += "}$CR"
write_file("$root_build_dir/gradle/config.json", _json)
}
# Copy to the lib.unstripped directory so that gdb can easily find it.
copy("cpplib_unstripped") {
_soname = "libc++_shared.so"
sources = [
"${android_libcpp_lib_dir}/${_soname}",
]
outputs = [
"${root_out_dir}/lib.unstripped/${_soname}",
]
}
action("cpplib_stripped") {
_strip_bin = "${android_tool_prefix}strip"
_soname = "libc++_shared.so"
_input_so = "${root_shlib_dir}/lib.unstripped/${_soname}"
_output_so = "${root_shlib_dir}/${_soname}"
deps = [
":cpplib_unstripped",
]
script = "//build/gn_run_binary.py"
inputs = [
_strip_bin,
]
sources = [
_input_so,
]
outputs = [
_output_so,
]
data = [
_output_so,
]
_rebased_strip_bin = rebase_path(_strip_bin, root_build_dir)
_rebased_input_so = rebase_path(_input_so, root_build_dir)
_rebased_output_so = rebase_path(_output_so, root_build_dir)
args = [
_rebased_strip_bin,
"--strip-unneeded",
"-o",
_rebased_output_so,
_rebased_input_so,
]
}
group("test_runner_py") {
_py_files = read_file("test_runner.pydeps", "list lines")
# Filter out comments.
set_sources_assignment_filter([ "#*" ])
sources = _py_files
data = sources + [
"devil_chromium.json",
"pylib/gtest/filter/",
"test_wrapper/logdog_wrapper.py",
"//third_party/android_tools/sdk/build-tools/23.0.1/aapt",
"//third_party/android_tools/sdk/build-tools/23.0.1/dexdump",
"//third_party/android_tools/sdk/build-tools/23.0.1/lib/libc++.so",
"//third_party/android_tools/sdk/build-tools/23.0.1/split-select",
"//third_party/android_tools/sdk/platform-tools/adb",
"//third_party/catapult/third_party/gsutil/",
"//third_party/catapult/devil/devil/devil_dependencies.json",
"//third_party/proguard/lib/proguard.jar",
]
data_deps = [
"//tools/swarming_client:isolate_py",
]
}
# Create wrapper scripts in out/bin that takes care of setting the
# --output-directory.
_scripts_to_wrap = [
# TODO(agrieve): Once GYP is no more, delete the checked-in adb_gdb_* scripts
# and generated a script for each android_apk() that has a native library.
"adb_gdb_android_webview_shell",
"adb_gdb_blimp_client",
"adb_gdb_chrome_public",
"adb_gdb_content_shell",
"adb_gdb_cronet_sample",
"adb_gdb_mojo_shell",
"asan_symbolize.py",
"tombstones.py",
]
_wrapper_targets = []
foreach(script, _scripts_to_wrap) {
_target_name = get_path_info(script, "name") + "_wrapper"
_wrapper_targets += [ ":$_target_name" ]
wrapper_script(_target_name) {
target = script
}
}
group("wrapper_scripts") {
deps = _wrapper_targets
}