/*
 * 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 {
    default_team: "trendy_team_aaos_framework",
    default_applicable_licenses: ["Android-Apache-2.0"],
}

cc_binary {
    name: "android.hardware.automotive.vehicle@V3-default-service",
    vendor: true,
    defaults: [
        "FakeVehicleHardwareDefaults",
        "VehicleHalDefaults",
        "android-automotive-large-parcelable-defaults",
    ],
    vintf_fragments: ["vhal-default-service.xml"],
    init_rc: ["vhal-default-service.rc"],
    relative_install_path: "hw",
    srcs: ["src/VehicleService.cpp"],
    static_libs: [
        "DefaultVehicleHal",
        "FakeVehicleHardware",
        "VehicleHalUtils",
    ],
    header_libs: [
        "IVehicleHardware",
    ],
    shared_libs: [
        "libbinder_ndk",
    ],
}

cc_library {
    name: "DefaultVehicleHal",
    vendor: true,
    defaults: [
        "VehicleHalDefaults",
    ],
    local_include_dirs: ["include"],
    export_include_dirs: ["include"],
    srcs: [
        "src/ConnectedClient.cpp",
        "src/DefaultVehicleHal.cpp",
        "src/SubscriptionManager.cpp",
        // A target to check whether the file
        // android.hardware.automotive.vehicle-types-meta.json needs update.
        // The output is just an empty cpp file and not actually used.
        ":check_generated_enum_metadata_json",
    ],
    static_libs: [
        "VehicleHalUtils",
    ],
    header_libs: [
        "IVehicleHardware",
    ],
    shared_libs: [
        "libbinder_ndk",
    ],
}

cc_fuzz {
    name: "android.hardware.automotive.vehicle-default-service_fuzzer",
    vendor: true,
    defaults: [
        "FakeVehicleHardwareDefaults",
        "VehicleHalDefaults",
        "android-automotive-large-parcelable-defaults",
        "service_fuzzer_defaults",
    ],
    static_libs: [
        "DefaultVehicleHal",
        "FakeVehicleHardware",
        "VehicleHalUtils",
    ],
    srcs: ["src/fuzzer.cpp"],
    fuzz_config: {
        cc: [
            "keithmok@google.com",
        ],
    },
}
