// 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 {
    default_applicable_licenses: ["system_libhidl_license"],
}

// Added automatically by a large-scale-change
// See: http://go/android-license-faq
license {
    name: "system_libhidl_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
    ],
    license_text: [
        "NOTICE",
    ],
}

cc_defaults {
    name: "libhidl-defaults",
    cflags: [
        "-Wall",
        "-Wdocumentation", // since some users use this
        "-Werror",
        "-Wextra-semi",
    ],
}

phony {
    name: "libhidl",
    required: [
        "libhidlbase",
    ],
}

cc_library_headers {
    name: "libhidl_gtest_helper",
    vendor_available: true,
    host_supported: true,
    export_include_dirs: ["gtest_helper"],
}

cc_test {
    name: "libhidl_test",
    host_supported: true,
    defaults: ["libhidl-defaults"],
    gtest: false,
    tidy_timeout_srcs: ["test_main.cpp"],
    srcs: ["test_main.cpp"],
    test_suites: ["device-tests"],

    shared_libs: [
        "android.hidl.memory@1.0",
        "libbase",
        "libhidlbase",
        "liblog",
        "libutils",
        "libcutils",
    ],
    static_libs: [
        "libgtest",
        "libgmock",
    ],

    cflags: [
        "-O0",
        "-g",
    ],
}

cc_library {
    name: "libhidlbase",
    defaults: ["libhidlbase-combined-impl"],
    host_supported: true,
    // TODO(b/153609531): remove when no longer needed.
    native_bridge_supported: true,
    recovery_available: true,
    vendor_available: true,
    product_available: true,
    apex_available: [
        // TODO(b/137948090): not fully supported in APEX for certain usecases
        // - large dependency sizes
        // - VINTF manifest cannot be read from APEX
        // - no testing story/infra for deprecation schedule
        "//apex_available:platform",
        "com.android.neuralnetworks",
        "test_com.android.neuralnetworks",
        "com.android.btservices",
        "com.android.media",
        "com.android.media.swcodec",
        "com.android.nfcservices",
        "com.android.tethering",
    ],
    vndk: {
        enabled: true,
        support_system_process: true,
    },
    whole_static_libs: [
        "libhwbinder-impl-internal",
    ],
    min_sdk_version: "29",
    afdo: true,
}

// WARNING: deprecated
// This library is no longer required, and dependencies should be taken on libhidlbase instead.
// This is automatically removed by bpfix. Once there are no makefiles, fixes can be automatically applied, and this can be removed.
cc_library {
    name: "libhidltransport",
    vendor_available: true,

    visibility: [
        ":__subpackages__",
        "//hardware:__subpackages__",
        "//test/sts:__subpackages__",
        "//vendor:__subpackages__",
    ],
}

cc_defaults {
    name: "libhidlbase-combined-impl",

    defaults: [
        "hidl-module-defaults",
        "libhidl-defaults",
        "libhwbinder-impl-shared-libs",
    ],

    shared_libs: [
        "libbase",
        "liblog",
        "libutils",
        "libcutils",
    ],
    export_shared_lib_headers: [
        "libcutils", // for native_handle.h
        "libutils",
    ],
    static_libs: [
        "libhwbinder-impl-internal",
    ],

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

    export_include_dirs: [
        "base/include",
        "transport/include",
    ],

    header_libs: [
        "libfmq-base",
    ],
    export_header_lib_headers: [
        "libfmq-base",
    ],

    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: [
        "base/HidlInternal.cpp",
        "base/HidlSupport.cpp",
        "base/Status.cpp",
        "base/TaskRunner.cpp",
        "transport/HidlBinderSupport.cpp",
        "transport/HidlLazyUtils.cpp",
        "transport/HidlPassthroughSupport.cpp",
        "transport/HidlTransportSupport.cpp",
        "transport/HidlTransportUtils.cpp",
        "transport/LegacySupport.cpp",
        "transport/ServiceManagement.cpp",
        "transport/Static.cpp",
    ],

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

    sanitize: {
        misc_undefined: ["integer"],
    },
}
