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

filegroup {
    name: "VehicleHalProtoFiles",
    srcs: ["**/*.proto"],
    visibility: ["//hardware/interfaces/automotive/vehicle:__subpackages__"],
}

genrule {
    name: "VehicleProtoStub_h",
    tools: [
        "aprotoc",
        "protoc-gen-grpc-cpp-plugin",
    ],
    cmd: "$(location aprotoc) -Ihardware/interfaces/automotive/vehicle/aidl/impl/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(in) --grpc_out=$(genDir) --cpp_out=$(genDir)",
    srcs: [
        ":VehicleHalProtoFiles",
    ],
    out: [
        "android/hardware/automotive/vehicle/DumpResult.pb.h",
        "android/hardware/automotive/vehicle/StatusCode.pb.h",
        "android/hardware/automotive/vehicle/VehicleAreaConfig.pb.h",
        "android/hardware/automotive/vehicle/VehiclePropConfig.pb.h",
        "android/hardware/automotive/vehicle/VehiclePropertyAccess.pb.h",
        "android/hardware/automotive/vehicle/VehiclePropertyChangeMode.pb.h",
        "android/hardware/automotive/vehicle/VehiclePropertyStatus.pb.h",
        "android/hardware/automotive/vehicle/VehiclePropValue.pb.h",
        "android/hardware/automotive/vehicle/VehiclePropValueRequest.pb.h",
    ],
}

genrule {
    name: "VehicleProtoStub_cc",
    tools: [
        "aprotoc",
        "protoc-gen-grpc-cpp-plugin",
    ],
    cmd: "$(location aprotoc) -Ihardware/interfaces/automotive/vehicle/aidl/impl/proto -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(in) --grpc_out=$(genDir) --cpp_out=$(genDir)",
    srcs: [
        ":VehicleHalProtoFiles",
    ],
    out: [
        "android/hardware/automotive/vehicle/DumpResult.pb.cc",
        "android/hardware/automotive/vehicle/StatusCode.pb.cc",
        "android/hardware/automotive/vehicle/VehicleAreaConfig.pb.cc",
        "android/hardware/automotive/vehicle/VehiclePropConfig.pb.cc",
        "android/hardware/automotive/vehicle/VehiclePropertyAccess.pb.cc",
        "android/hardware/automotive/vehicle/VehiclePropertyChangeMode.pb.cc",
        "android/hardware/automotive/vehicle/VehiclePropertyStatus.pb.cc",
        "android/hardware/automotive/vehicle/VehiclePropValue.pb.cc",
        "android/hardware/automotive/vehicle/VehiclePropValueRequest.pb.cc",
    ],
}

cc_library_static {
    name: "VehicleHalProtos",
    vendor: true,
    host_supported: true,
    include_dirs: [
        "external/protobuf/src",
    ],
    generated_headers: [
        "VehicleProtoStub_h",
    ],
    export_generated_headers: [
        "VehicleProtoStub_h",
    ],
    generated_sources: [
        "VehicleProtoStub_cc",
    ],
    shared_libs: [
        "libgrpc++_unsecure",
    ],
    cflags: [
        "-Wno-unused-parameter",
    ],
}
