// Copyright (C) 2016 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_packages_SystemUI_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["frameworks_base_packages_SystemUI_license"],
}

java_library {

    name: "SystemUIPluginLib",

    srcs: [
        "bcsmartspace/src/**/*.java",
        "bcsmartspace/src/**/*.kt",
        "src/**/*.java",
        "src/**/*.kt",
    ],

    optimize: {
        proguard_flags_files: [
            "proguard_plugins.flags",
        ],
        export_proguard_flags_files: true,
    },

    // If you add a static lib here, you may need to also add the package to the ClassLoaderFilter
    // in PluginInstance. That will ensure that loaded plugins have access to the related classes.
    // You should also add it to proguard_common.flags so that proguard does not remove the portions
    // of the library which are used by the plugins but not by systemui itself.
    static_libs: [
        "androidx.annotation_annotation",
        "androidx-constraintlayout_constraintlayout",
        "PluginCoreLib",
        "SystemUIAnimationLib",
        "SystemUICommon",
        "SystemUILogLib",
        "androidx.annotation_annotation",
    ],

}

android_app {

    // Dummy to generate .toc files.
    name: "PluginDummyLib",
    use_resource_processor: true,
    platform_apis: true,
    srcs: ["src/**/*.java"],

    libs: ["SystemUIPluginLib"],

    optimize: {
        enabled: false,
    },

}
