|  | // Copyright (C) 2019 The Android Open Source Project | 
|  | // | 
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | // you may not use this file except in compliance with the License. | 
|  | // You may obtain a copy of the License at | 
|  | // | 
|  | //      http://www.apache.org/licenses/LICENSE-2.0 | 
|  | // | 
|  | // Unless required by applicable law or agreed to in writing, software | 
|  | // distributed under the License is distributed on an "AS IS" BASIS, | 
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | // See the License for the specific language governing permissions and | 
|  | // limitations under the License. | 
|  |  | 
|  | package { | 
|  | // See: http://go/android-license-faq | 
|  | // A large-scale-change added 'default_applicable_licenses' to import | 
|  | // all of the 'license_kinds' from "frameworks_base_license" | 
|  | // to get the below license kinds: | 
|  | //   SPDX-license-identifier-Apache-2.0 | 
|  | default_applicable_licenses: ["frameworks_base_license"], | 
|  | default_team: "trendy_team_multitasking_windowing", | 
|  | } | 
|  |  | 
|  | // Begin ProtoLog | 
|  | java_library { | 
|  | name: "wm_shell_protolog-groups", | 
|  | srcs: [ | 
|  | "src/com/android/wm/shell/protolog/ShellProtoLogGroup.java", | 
|  | ":protolog-common-src", | 
|  | ], | 
|  | } | 
|  |  | 
|  | filegroup { | 
|  | name: "wm_shell-sources", | 
|  | srcs: [ | 
|  | "src/**/*.java", | 
|  | ], | 
|  | path: "src", | 
|  | } | 
|  |  | 
|  | // Sources that have no dependencies that can be used directly downstream of this library | 
|  | // TODO(b/322791067): move these sources to WindowManager-Shell-shared | 
|  | filegroup { | 
|  | name: "wm_shell_util-sources", | 
|  | srcs: [ | 
|  | "src/com/android/wm/shell/animation/Interpolators.java", | 
|  | "src/com/android/wm/shell/common/bubbles/*.kt", | 
|  | "src/com/android/wm/shell/common/bubbles/*.java", | 
|  | "src/com/android/wm/shell/common/magnetictarget/MagnetizedObject.kt", | 
|  | "src/com/android/wm/shell/common/split/SplitScreenConstants.java", | 
|  | "src/com/android/wm/shell/common/TransactionPool.java", | 
|  | "src/com/android/wm/shell/common/TriangleShape.java", | 
|  | "src/com/android/wm/shell/common/desktopmode/*.kt", | 
|  | "src/com/android/wm/shell/draganddrop/DragAndDropConstants.java", | 
|  | "src/com/android/wm/shell/pip/PipContentOverlay.java", | 
|  | "src/com/android/wm/shell/startingsurface/SplashScreenExitAnimationUtils.java", | 
|  | "src/com/android/wm/shell/sysui/ShellSharedConstants.java", | 
|  | "src/com/android/wm/shell/util/**/*.java", | 
|  | ], | 
|  | path: "src", | 
|  | } | 
|  |  | 
|  | // Aidls which can be used directly downstream of this library | 
|  | filegroup { | 
|  | name: "wm_shell-aidls", | 
|  | srcs: [ | 
|  | "src/**/*.aidl", | 
|  | ], | 
|  | path: "src", | 
|  | } | 
|  |  | 
|  | // TODO(b/168581922) protologtool do not support kotlin(*.kt) | 
|  | filegroup { | 
|  | name: "wm_shell-sources-kt", | 
|  | srcs: [ | 
|  | "src/**/*.kt", | 
|  | ], | 
|  | path: "src", | 
|  | } | 
|  |  | 
|  | genrule { | 
|  | name: "wm_shell_protolog_src", | 
|  | srcs: [ | 
|  | ":protolog-impl", | 
|  | ":wm_shell_protolog-groups", | 
|  | ":wm_shell-sources", | 
|  | ], | 
|  | tools: ["protologtool"], | 
|  | cmd: "$(location protologtool) transform-protolog-calls " + | 
|  | "--protolog-class com.android.internal.protolog.ProtoLog " + | 
|  | "--loggroups-class com.android.wm.shell.protolog.ShellProtoLogGroup " + | 
|  | "--loggroups-jar $(location :wm_shell_protolog-groups) " + | 
|  | "--viewer-config-file-path /system_ext/etc/wmshell.protolog.pb " + | 
|  | "--legacy-viewer-config-file-path /system_ext/etc/wmshell.protolog.json.gz " + | 
|  | "--legacy-output-file-path /data/misc/wmtrace/shell_log.winscope " + | 
|  | "--output-srcjar $(out) " + | 
|  | "$(locations :wm_shell-sources)", | 
|  | out: ["wm_shell_protolog.srcjar"], | 
|  | } | 
|  |  | 
|  | genrule { | 
|  | name: "generate-wm_shell_protolog.json", | 
|  | srcs: [ | 
|  | ":wm_shell_protolog-groups", | 
|  | ":wm_shell-sources", | 
|  | ], | 
|  | tools: ["protologtool"], | 
|  | cmd: "$(location protologtool) generate-viewer-config " + | 
|  | "--protolog-class com.android.internal.protolog.ProtoLog " + | 
|  | "--loggroups-class com.android.wm.shell.protolog.ShellProtoLogGroup " + | 
|  | "--loggroups-jar $(location :wm_shell_protolog-groups) " + | 
|  | "--viewer-config-type json " + | 
|  | "--viewer-config $(out) " + | 
|  | "$(locations :wm_shell-sources)", | 
|  | out: ["wm_shell_protolog.json"], | 
|  | } | 
|  |  | 
|  | genrule { | 
|  | name: "gen-wmshell.protolog.pb", | 
|  | srcs: [ | 
|  | ":wm_shell_protolog-groups", | 
|  | ":wm_shell-sources", | 
|  | ], | 
|  | tools: ["protologtool"], | 
|  | cmd: "$(location protologtool) generate-viewer-config " + | 
|  | "--protolog-class com.android.internal.protolog.ProtoLog " + | 
|  | "--loggroups-class com.android.wm.shell.protolog.ShellProtoLogGroup " + | 
|  | "--loggroups-jar $(location :wm_shell_protolog-groups) " + | 
|  | "--viewer-config-type proto " + | 
|  | "--viewer-config $(out) " + | 
|  | "$(locations :wm_shell-sources)", | 
|  | out: ["wmshell.protolog.pb"], | 
|  | } | 
|  |  | 
|  | genrule { | 
|  | name: "protolog.json.gz", | 
|  | srcs: [":generate-wm_shell_protolog.json"], | 
|  | out: ["wmshell.protolog.json.gz"], | 
|  | cmd: "gzip -c < $(in) > $(out)", | 
|  | } | 
|  |  | 
|  | prebuilt_etc { | 
|  | name: "wmshell.protolog.json.gz", | 
|  | system_ext_specific: true, | 
|  | src: ":protolog.json.gz", | 
|  | filename_from_src: true, | 
|  | } | 
|  |  | 
|  | prebuilt_etc { | 
|  | name: "wmshell.protolog.pb", | 
|  | system_ext_specific: true, | 
|  | src: ":gen-wmshell.protolog.pb", | 
|  | filename_from_src: true, | 
|  | } | 
|  |  | 
|  | // End ProtoLog | 
|  |  | 
|  | java_library { | 
|  | name: "WindowManager-Shell-proto", | 
|  |  | 
|  | srcs: ["proto/*.proto"], | 
|  |  | 
|  | proto: { | 
|  | type: "nano", | 
|  | }, | 
|  | } | 
|  |  | 
|  | filegroup { | 
|  | name: "wm_shell-shared-aidls", | 
|  |  | 
|  | srcs: [ | 
|  | "shared/**/*.aidl", | 
|  | ], | 
|  |  | 
|  | path: "shared/src", | 
|  | } | 
|  |  | 
|  | java_library { | 
|  | name: "WindowManager-Shell-shared", | 
|  |  | 
|  | srcs: [ | 
|  | "shared/**/*.java", | 
|  | "shared/**/*.kt", | 
|  | ":wm_shell-shared-aidls", | 
|  | ], | 
|  | static_libs: [ | 
|  | "androidx.dynamicanimation_dynamicanimation", | 
|  | "jsr330", | 
|  | ], | 
|  | } | 
|  |  | 
|  | java_library { | 
|  | name: "WindowManager-Shell-shared-desktopMode", | 
|  |  | 
|  | srcs: [ | 
|  | "shared/**/desktopmode/*.java", | 
|  | "shared/**/desktopmode/*.kt", | 
|  | ], | 
|  | } | 
|  |  | 
|  | android_library { | 
|  | name: "WindowManager-Shell", | 
|  | srcs: [ | 
|  | ":wm_shell_protolog_src", | 
|  | // TODO(b/168581922) protologtool do not support kotlin(*.kt) | 
|  | ":wm_shell-sources-kt", | 
|  | ":wm_shell-aidls", | 
|  | ], | 
|  | resource_dirs: [ | 
|  | "res", | 
|  | ], | 
|  | static_libs: [ | 
|  | "androidx.appcompat_appcompat", | 
|  | "androidx.core_core-animation", | 
|  | "androidx.core_core-ktx", | 
|  | "androidx.arch.core_core-runtime", | 
|  | "androidx.compose.material3_material3", | 
|  | "androidx-constraintlayout_constraintlayout", | 
|  | "androidx.dynamicanimation_dynamicanimation", | 
|  | "androidx.recyclerview_recyclerview", | 
|  | "kotlinx-coroutines-android", | 
|  | "kotlinx-coroutines-core", | 
|  | "//frameworks/libs/systemui:com_android_systemui_shared_flags_lib", | 
|  | "//frameworks/libs/systemui:iconloader_base", | 
|  | "com_android_wm_shell_flags_lib", | 
|  | "WindowManager-Shell-proto", | 
|  | "WindowManager-Shell-shared", | 
|  | "perfetto_trace_java_protos", | 
|  | "dagger2", | 
|  | "jsr330", | 
|  | ], | 
|  | libs: [ | 
|  | // Soong fails to automatically add this dependency because all the | 
|  | // *.kt sources are inside a filegroup. | 
|  | "kotlin-annotations", | 
|  | ], | 
|  | required: [ | 
|  | "wmshell.protolog.json.gz", | 
|  | "wmshell.protolog.pb", | 
|  | ], | 
|  | flags_packages: [ | 
|  | "com_android_wm_shell_flags", | 
|  | ], | 
|  | kotlincflags: ["-Xjvm-default=all"], | 
|  | manifest: "AndroidManifest.xml", | 
|  | plugins: ["dagger2-compiler"], | 
|  | use_resource_processor: true, | 
|  | } |