xref: /aosp_15_r20/frameworks/base/libs/WindowManager/Shell/Android.bp (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
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    default_team: "trendy_team_multitasking_windowing",
23}
24
25// Begin ProtoLog
26java_library {
27    name: "wm_shell_protolog-groups",
28    srcs: [
29        "src/com/android/wm/shell/protolog/ShellProtoLogGroup.java",
30        ":protolog-common-src",
31    ],
32}
33
34filegroup {
35    name: "wm_shell-sources",
36    srcs: [
37        "src/**/*.java",
38    ],
39    path: "src",
40}
41
42// Aidls which can be used directly downstream of this library
43filegroup {
44    name: "wm_shell-aidls",
45    srcs: [
46        "src/**/*.aidl",
47    ],
48    path: "src",
49}
50
51// TODO(b/168581922) protologtool do not support kotlin(*.kt)
52filegroup {
53    name: "wm_shell-sources-kt",
54    srcs: [
55        "src/**/*.kt",
56    ],
57    path: "src",
58}
59
60java_genrule {
61    name: "wm_shell_protolog_src",
62    srcs: [
63        ":protolog-impl",
64        ":wm_shell_protolog-groups",
65        ":wm_shell-sources",
66    ],
67    tools: ["protologtool"],
68    cmd: "$(location protologtool) transform-protolog-calls " +
69        "--protolog-class com.android.internal.protolog.ProtoLog " +
70        "--loggroups-class com.android.wm.shell.protolog.ShellProtoLogGroup " +
71        "--loggroups-jar $(location :wm_shell_protolog-groups) " +
72        "--viewer-config-file-path /system_ext/etc/wmshell.protolog.pb " +
73        "--legacy-viewer-config-file-path /system_ext/etc/wmshell.protolog.json.gz " +
74        "--legacy-output-file-path /data/misc/wmtrace/shell_log.winscope " +
75        "--output-srcjar $(out) " +
76        "$(locations :wm_shell-sources)",
77    out: ["wm_shell_protolog.srcjar"],
78}
79
80java_genrule {
81    name: "generate-wm_shell_protolog.json",
82    srcs: [
83        ":wm_shell_protolog-groups",
84        ":wm_shell-sources",
85    ],
86    tools: ["protologtool"],
87    cmd: "$(location protologtool) generate-viewer-config " +
88        "--protolog-class com.android.internal.protolog.ProtoLog " +
89        "--loggroups-class com.android.wm.shell.protolog.ShellProtoLogGroup " +
90        "--loggroups-jar $(location :wm_shell_protolog-groups) " +
91        "--viewer-config-type json " +
92        "--viewer-config $(out) " +
93        "$(locations :wm_shell-sources)",
94    out: ["wm_shell_protolog.json"],
95}
96
97java_genrule {
98    name: "gen-wmshell.protolog.pb",
99    srcs: [
100        ":wm_shell_protolog-groups",
101        ":wm_shell-sources",
102    ],
103    tools: ["protologtool"],
104    cmd: "$(location protologtool) generate-viewer-config " +
105        "--protolog-class com.android.internal.protolog.ProtoLog " +
106        "--loggroups-class com.android.wm.shell.protolog.ShellProtoLogGroup " +
107        "--loggroups-jar $(location :wm_shell_protolog-groups) " +
108        "--viewer-config-type proto " +
109        "--viewer-config $(out) " +
110        "$(locations :wm_shell-sources)",
111    out: ["wmshell.protolog.pb"],
112}
113
114java_genrule {
115    name: "protolog.json.gz",
116    srcs: [":generate-wm_shell_protolog.json"],
117    out: ["wmshell.protolog.json.gz"],
118    cmd: "gzip -c < $(in) > $(out)",
119}
120
121prebuilt_etc {
122    name: "wmshell.protolog.json.gz",
123    system_ext_specific: true,
124    src: ":protolog.json.gz",
125    filename_from_src: true,
126}
127
128prebuilt_etc {
129    name: "wmshell.protolog.pb",
130    system_ext_specific: true,
131    src: ":gen-wmshell.protolog.pb",
132    filename_from_src: true,
133}
134
135// End ProtoLog
136
137java_library {
138    name: "WindowManager-Shell-proto",
139
140    srcs: ["proto/*.proto"],
141
142    proto: {
143        type: "nano",
144    },
145}
146
147java_library {
148    name: "WindowManager-Shell-lite-proto",
149
150    srcs: [
151        "src/com/android/wm/shell/desktopmode/education/data/proto/**/*.proto",
152        "src/com/android/wm/shell/desktopmode/persistence/*.proto",
153    ],
154    proto: {
155        type: "lite",
156    },
157}
158
159android_library {
160    name: "WindowManager-Shell",
161    srcs: [
162        "src/com/android/wm/shell/EventLogTags.logtags",
163        ":wm_shell_protolog_src",
164        // TODO(b/168581922) protologtool do not support kotlin(*.kt)
165        ":wm_shell-sources-kt",
166        ":wm_shell-aidls",
167        ":wm_shell-shared-aidls",
168    ],
169    resource_dirs: [
170        "res",
171    ],
172    static_libs: [
173        "androidx.appcompat_appcompat",
174        "androidx.core_core-ktx",
175        "androidx.arch.core_core-runtime",
176        "androidx.datastore_datastore",
177        "androidx.compose.material3_material3",
178        "androidx-constraintlayout_constraintlayout",
179        "androidx.dynamicanimation_dynamicanimation",
180        "androidx.recyclerview_recyclerview",
181        "kotlinx-coroutines-android",
182        "kotlinx-coroutines-core",
183        "//frameworks/libs/systemui:com_android_systemui_shared_flags_lib",
184        "//frameworks/libs/systemui:iconloader_base",
185        "com_android_launcher3_flags_lib",
186        "com_android_wm_shell_flags_lib",
187        "PlatformAnimationLib",
188        "WindowManager-Shell-proto",
189        "WindowManager-Shell-lite-proto",
190        "WindowManager-Shell-shared",
191        "perfetto_trace_java_protos",
192        "dagger2",
193        "jsr330",
194    ],
195    libs: [
196        // Soong fails to automatically add this dependency because all the
197        // *.kt sources are inside a filegroup.
198        "kotlin-annotations",
199    ],
200    flags_packages: [
201        "com_android_wm_shell_flags",
202    ],
203    kotlincflags: ["-Xjvm-default=all"],
204    manifest: "AndroidManifest.xml",
205    plugins: ["dagger2-compiler"],
206    use_resource_processor: true,
207}
208
209java_defaults {
210    name: "wmshell_defaults",
211    required: [
212        "wmshell.protolog.json.gz",
213        "wmshell.protolog.pb",
214    ],
215}
216