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