// 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",
    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.bluetooth",
        "com.android.media",
        "com.android.media.swcodec",
        "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"],
    },
}
