//
// Copyright (C) 2020 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.
//

// The below module imports the Netty shaded binary from the Maven repository
// since it's not trivial to build from source due to the large number of
// external dependencies and missing build-system support.
//
// WARNING: The artifact version must match the source to avoid runtime issues.
package {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "external_grpc-grpc-java_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["external_grpc-grpc-java_license"],
}

java_library_host {
    name: "grpc-java-netty-shaded",
    // Dependencies below match Maven runtime dependencies of
    // the prebuilt "grpc-netty-shaded-1.56.0-jar" library.
    static_libs: [
        "error_prone_annotations",
        "grpc-netty-shaded-1.56.0-jar",
        "guava",
        "perfmark-api-lib",
    ],
    target: {
        windows: {
            enabled: true,
        },
    },
}

java_library {
    name: "grpc-java-netty-shaded-test",
    // Dependencies below match Maven runtime dependencies of
    // the prebuilt "grpc-netty-shaded-1.56.0-jar" library.
    static_libs: [
        "error_prone_annotations",
        "grpc-netty-shaded-1.56.0-jar",
        "guava",
        "perfmark-api-lib",
    ],
    visibility: ["//packages/modules/Bluetooth/android/pandora/server"],
}
