// 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.

hidl_package_root {
    name: "android.hidl",
}

cc_library {
    name: "libhidltransport",
    recovery_available: true,
    vendor_available: true,
    vndk: {
        enabled: true,
        support_system_process: true,
    },
    defaults: [
        "libhidl-defaults",
        "hidl-module-defaults",
    ],
    shared_libs: [
        "libbase",
        "liblog",
        "libutils",
        "libhidlbase",
        "libhwbinder",
        "libcutils",
        "libvndksupport",
    ],
    export_shared_lib_headers: [
        "libutils",
        "libhidlbase",
    ],

    export_include_dirs: ["include"],

    generated_sources: [
        "android.hidl.manager@1.0_genc++",
        "android.hidl.manager@1.1_genc++",
        "android.hidl.manager@1.2_genc++",
        "android.hidl.base@1.0_genc++"
    ],
    generated_headers: [
        "android.hidl.manager@1.0_genc++_headers",
        "android.hidl.manager@1.1_genc++_headers",
        "android.hidl.manager@1.2_genc++_headers",
        "android.hidl.base@1.0_genc++_headers"
    ],
    export_generated_headers: [
        "android.hidl.manager@1.0_genc++_headers",
        "android.hidl.manager@1.1_genc++_headers",
        "android.hidl.manager@1.2_genc++_headers",
        "android.hidl.base@1.0_genc++_headers"
    ],

    srcs: [
        "HidlBinderSupport.cpp",
        "HidlPassthroughSupport.cpp",
        "HidlTransportSupport.cpp",
        "HidlTransportUtils.cpp",
        "ServiceManagement.cpp",
        "Static.cpp"
    ],

    product_variables: {
        debuggable: {
            cflags: ["-DLIBHIDL_TARGET_DEBUGGABLE"],
        },
        enforce_vintf_manifest: {
            cflags: ["-DENFORCE_VINTF_MANIFEST"]
        },
    },

    target: {
        recovery: {
            exclude_shared_libs: ["libvndksupport"],
        },
    },
}
