blob: 739e4d2a963d10affbe6443ea637fcf8b8a07ec1 [file] [log] [blame]
load("//tools/base/bazel:bazel.bzl", "iml_module")
load("//tools/base/common:version.bzl", "BASE_VERSION")
load("//tools/base/bazel:kotlin.bzl", "kotlin_library", "kotlin_test")
load("//tools/base/bazel:maven.bzl", "maven_library")
load("//tools/base/bazel:proto.bzl", "android_java_proto_library", "java_proto_library")
load("//tools/base/bazel/avd:avd.bzl", "avd")
# managed by go/iml_to_build
iml_module(
name = "studio.android.sdktools.ddmlib",
srcs = ["src/main/java"],
iml_files = ["android.sdktools.ddmlib.iml"],
lint_baseline = "lint_baseline.xml",
test_data = ["//prebuilts/studio/sdk:platform-tools"],
test_resources = ["src/test/resources"],
test_srcs = ["src/test/java"],
visibility = ["//visibility:public"],
# do not sort: must match IML order
exports = [
"//tools/base/common:studio.android.sdktools.common",
"//tools/adt/idea/.idea/libraries:kxml2",
],
# do not sort: must match IML order
deps = [
"//prebuilts/studio/intellij-sdk:studio-sdk",
"//tools/base/common:studio.android.sdktools.common[module]",
"//tools/adt/idea/.idea/libraries:kxml2",
"//tools/adt/idea/.idea/libraries:easymock[test]",
"//tools/base/testutils:studio.android.sdktools.testutils[module, test]",
"//tools/adt/idea/.idea/libraries:mockito[test]",
"//tools/adt/idea/.idea/libraries:truth[test]",
"//tools/base/fakeadbserver:studio.android.sdktools.fakeadbserver[module, test]",
"//tools/adt/idea/.idea/libraries:libam-instrumentation-data-proto",
"//tools/adt/idea/.idea/libraries:libapp-processes-proto",
],
)
# Compile ddmlib without any add-ons to ensure it builds on it's own. Once the AGP - ddmlib
# dependency is reworked, we can move the code around to properly represent the separation.
kotlin_library(
name = "ddmlib-base",
srcs = glob([
"src/main/java/com/android/ddmlib/**/*.java",
"src/main/java/com/android/ddmlib/**/*.kt",
]),
resource_strip_prefix = "tools/base/ddmlib",
visibility = ["//visibility:public"],
deps = [
":am-instrumentation-data-proto",
":app-processes-proto",
"//tools/base/annotations",
"//tools/base/common:tools.common",
"@maven//:com.google.guava.guava",
"@maven//:com.google.protobuf.protobuf-java",
"@maven//:net.sf.kxml.kxml2",
],
)
# Incremental library in ddmlib is standalone
java_library(
name = "incfs",
srcs = glob(["src/main/java/com/android/incfs/**/*.java"]),
resource_strip_prefix = "tools/base/ddmlib",
visibility = ["//visibility:public"],
deps = [
":ddmlib-base",
"//tools/base/annotations",
"//tools/base/common:tools.common",
"@maven//:com.google.guava.guava",
],
)
java_library(
name = "tools.ddmlib.resources",
resource_strip_prefix = "tools/base/ddmlib/src/main/proto/",
resources = [
"src/main/proto/app_processes.proto",
"src/main/proto/instrumentation-data.proto",
],
)
# For now instead of combining ddmlib-base and its add-ons, we recompile all together
# until we sort out the AGP - ddmlib dependency. This matches what is done in build.gradle.
# Note that this target is released via go/ab studio_linux, for its usage in the platform.
# Kotlin is not enabled in ddmlib module but here we use kotlin_library rule
# for bundled_deps support.
maven_library(
name = "tools.ddmlib",
srcs = glob([
"src/main/java/**/*.kt",
"src/main/java/**/*.java",
]),
bundled_deps = [
":am-instrumentation-data-proto",
":app-processes-proto",
":tools.ddmlib.resources",
],
coordinates = "com.android.tools.ddms:ddmlib:" + BASE_VERSION,
description = "Library providing APIs to talk to Android devices",
module_name = "ddmlib",
notice = "NOTICE",
pom_name = "Android Tools ddmlib",
resource_strip_prefix = "tools/base/ddmlib",
visibility = ["//visibility:public"],
exports = [
"@maven//:org.jetbrains.kotlin.kotlin-stdlib-jdk8",
],
deps = [
"//tools/base/common:tools.common",
"@maven//:com.google.protobuf.protobuf-java",
"@maven//:net.sf.kxml.kxml2",
],
)
kotlin_test(
name = "tools.tests",
srcs = glob([
"src/test/java/**/*.kt",
"src/test/java/**/*.java",
]),
data = ["//prebuilts/studio/sdk:platform-tools"],
jvm_flags = ["-Dtest.suite.jar=tools.tests.jar"],
resources = glob(["src/test/resources/**"]),
test_class = "com.android.testutils.JarTestSuite",
deps = [
":tools.ddmlib",
"//tools/base/annotations",
"//tools/base/common:tools.common",
"//tools/base/fakeadbserver:tools.fakeadbserver",
"//tools/base/testutils:tools.testutils",
"@maven//:com.google.guava.guava",
"@maven//:com.google.protobuf.protobuf-java",
"@maven//:com.google.truth.truth",
"@maven//:junit.junit",
"@maven//:org.easymock.easymock",
"@maven//:org.mockito.mockito-core",
],
)
avd(name = "avd")
java_proto_library(
name = "am-instrumentation-data-proto",
srcs = glob(["src/main/proto/instrumentation-data.proto"]),
visibility = ["//visibility:public"],
)
java_proto_library(
name = "app-processes-proto",
srcs = glob(["src/main/proto/app_processes.proto"]),
visibility = ["//visibility:public"],
)
# managed by go/iml_to_build
iml_module(
name = "studio.android.sdktools.ddmlib.integration.tests",
iml_files = ["android.sdktools.ddmlib.integration.tests.iml"],
tags = [
"no_mac",
"no_windows",
],
test_data = [
":avd",
"//prebuilts/studio/sdk:platform-tools",
],
test_srcs = ["src/integration/test/java"],
visibility = ["//visibility:public"],
# do not sort: must match IML order
deps = [
"//tools/base/common:studio.android.sdktools.common[module, test]",
"//tools/base/testutils:studio.android.sdktools.testutils[module, test]",
"//tools/base/bazel/avd:studio.android.sdktools.base.bazel.avd[module, test]",
"//tools/adt/idea/.idea/libraries:truth[test]",
"//tools/base/ddmlib:studio.android.sdktools.ddmlib[module, test]",
"//prebuilts/studio/intellij-sdk:studio-sdk[test]",
],
)