1// Copyright (C) 2019 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package {
16    // See: http://go/android-license-faq
17    // A large-scale-change added 'default_applicable_licenses' to import
18    // all of the 'license_kinds' from "frameworks_base_license"
19    // to get the below license kinds:
20    //   SPDX-license-identifier-Apache-2.0
21    default_applicable_licenses: ["frameworks_base_license"],
22}
23
24// Begin ProtoLog
25java_library {
26    name: "wm_shell_protolog-groups",
27    srcs: [
28        "src/com/android/wm/shell/protolog/ShellProtoLogGroup.java",
29        ":protolog-common-src",
30    ],
31}
32
33filegroup {
34    name: "wm_shell-sources",
35    srcs: [
36        "src/**/*.java",
37    ],
38    path: "src",
39}
40
41// Sources that have no dependencies that can be used directly downstream of this library
42filegroup {
43    name: "wm_shell_util-sources",
44    srcs: [
45        "src/com/android/wm/shell/util/**/*.java",
46        "src/com/android/wm/shell/common/split/SplitScreenConstants.java"
47    ],
48    path: "src",
49}
50
51// Aidls which can be used directly downstream of this library
52filegroup {
53    name: "wm_shell-aidls",
54    srcs: [
55        "src/**/*.aidl",
56    ],
57    path: "src",
58}
59
60// TODO(b/168581922) protologtool do not support kotlin(*.kt)
61filegroup {
62    name: "wm_shell-sources-kt",
63    srcs: [
64        "src/**/*.kt",
65    ],
66    path: "src",
67}
68
69genrule {
70    name: "wm_shell_protolog_src",
71    srcs: [
72        ":wm_shell_protolog-groups",
73        ":wm_shell-sources",
74    ],
75    tools: ["protologtool"],
76    cmd: "$(location protologtool) transform-protolog-calls " +
77      "--protolog-class com.android.internal.protolog.common.ProtoLog " +
78      "--protolog-impl-class com.android.wm.shell.protolog.ShellProtoLogImpl " +
79      "--protolog-cache-class com.android.wm.shell.protolog.ShellProtoLogCache " +
80      "--loggroups-class com.android.wm.shell.protolog.ShellProtoLogGroup " +
81      "--loggroups-jar $(location :wm_shell_protolog-groups) " +
82      "--output-srcjar $(out) " +
83      "$(locations :wm_shell-sources)",
84    out: ["wm_shell_protolog.srcjar"],
85}
86
87genrule {
88    name: "generate-wm_shell_protolog.json",
89    srcs: [
90        ":wm_shell_protolog-groups",
91        ":wm_shell-sources",
92    ],
93    tools: ["protologtool"],
94    cmd: "$(location protologtool) generate-viewer-config " +
95      "--protolog-class com.android.internal.protolog.common.ProtoLog " +
96      "--loggroups-class com.android.wm.shell.protolog.ShellProtoLogGroup " +
97      "--loggroups-jar $(location :wm_shell_protolog-groups) " +
98      "--viewer-conf $(out) " +
99      "$(locations :wm_shell-sources)",
100    out: ["wm_shell_protolog.json"],
101}
102// End ProtoLog
103
104java_library {
105    name: "WindowManager-Shell-proto",
106
107    srcs: ["proto/*.proto"],
108
109    proto: {
110        type: "nano",
111    },
112}
113
114android_library {
115    name: "WindowManager-Shell",
116    srcs: [
117        ":wm_shell_protolog_src",
118        // TODO(b/168581922) protologtool do not support kotlin(*.kt)
119        ":wm_shell-sources-kt",
120        ":wm_shell-aidls",
121    ],
122    resource_dirs: [
123        "res",
124    ],
125    java_resources: [
126        ":generate-wm_shell_protolog.json"
127    ],
128    static_libs: [
129        "androidx.appcompat_appcompat",
130        "androidx.arch.core_core-runtime",
131        "androidx.dynamicanimation_dynamicanimation",
132        "androidx.recyclerview_recyclerview",
133        "kotlinx-coroutines-android",
134        "kotlinx-coroutines-core",
135        "iconloader_base",
136        "protolog-lib",
137        "WindowManager-Shell-proto",
138        "dagger2",
139        "jsr330",
140    ],
141    kotlincflags: ["-Xjvm-default=enable"],
142    manifest: "AndroidManifest.xml",
143    plugins: ["dagger2-compiler"],
144}
145