// Bluetooth main HW module / shared library for target
package {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "system_bt_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["system_bt_license"],
}

filegroup {
    name: "LibBluetoothSources",
    srcs: [
        "bte_conf.cc",
        "bte_init_cpp_logging.cc",
        "bte_logmsg.cc",
        "bte_main.cc",
        "stack_config.cc",
    ]
}

cc_library_static {
    name: "libbte",
    defaults: ["fluoride_basic_defaults"],
    srcs: [
        ":LibBluetoothSources",
        ":LibBluetoothShimSources",
    ],
    include_dirs: [
        "packages/modules/Bluetooth/system",
        "packages/modules/Bluetooth/system/gd",
        "packages/modules/Bluetooth/system/gd/rust/shim",
        "packages/modules/Bluetooth/system/bta/include",
        "packages/modules/Bluetooth/system/bta/sys",
        "packages/modules/Bluetooth/system/bta/dm",
        "packages/modules/Bluetooth/system/internal_include",
        "packages/modules/Bluetooth/system/stack/include",
        "packages/modules/Bluetooth/system/stack/l2cap",
        "packages/modules/Bluetooth/system/stack/a2dp",
        "packages/modules/Bluetooth/system/stack/btm",
        "packages/modules/Bluetooth/system/stack/avdt",
        "packages/modules/Bluetooth/system/udrv/include",
        "packages/modules/Bluetooth/system/btif/include",
        "packages/modules/Bluetooth/system/btif/co",
        "packages/modules/Bluetooth/system/vnd/include",
        "packages/modules/Bluetooth/system/embdrv/sbc/encoder/include",
        "packages/modules/Bluetooth/system/embdrv/sbc/decoder/include",
        "packages/modules/Bluetooth/system/utils/include",
        "system/security/keystore/include",
        "hardware/interfaces/keymaster/4.0/support/include",
    ],
    generated_headers: [
        "BluetoothGeneratedBundlerSchema_h_bfbs",
        "BluetoothGeneratedDumpsysDataSchema_h",
        "BluetoothGeneratedPackets_h",
    ],
    header_libs: ["libbt_callbacks_cxx_headers"],
    host_supported: true,
    min_sdk_version: "Tiramisu"
}

cc_library {
    name: "libbluetooth",
    visibility: [
        "//cts/hostsidetests:__subpackages__",
        "//packages/modules/Bluetooth:__subpackages__",
        "//vendor:__subpackages__",
    ],
    defaults: ["fluoride_full_defaults"],
    header_libs: ["libbluetooth_headers"],
    export_header_lib_headers: ["libbluetooth_headers"],
    include_dirs: [
        "packages/modules/Bluetooth/system",
        "packages/modules/Bluetooth/system/bta/include",
        "packages/modules/Bluetooth/system/bta/sys",
        "packages/modules/Bluetooth/system/bta/dm",
        "packages/modules/Bluetooth/system/internal_include",
        "packages/modules/Bluetooth/system/stack/include",
        "packages/modules/Bluetooth/system/stack/l2cap",
        "packages/modules/Bluetooth/system/stack/a2dp",
        "packages/modules/Bluetooth/system/stack/btm",
        "packages/modules/Bluetooth/system/stack/avdt",
        "packages/modules/Bluetooth/system/udrv/include",
        "packages/modules/Bluetooth/system/btif/include",
        "packages/modules/Bluetooth/system/btif/co",
        "packages/modules/Bluetooth/system/vnd/include",
        "packages/modules/Bluetooth/system/embdrv/sbc/encoder/include",
        "packages/modules/Bluetooth/system/embdrv/sbc/decoder/include",
        "packages/modules/Bluetooth/system/utils/include",
        "system/security/keystore/include",
        "hardware/interfaces/keymaster/4.0/support/include",
    ],
    logtags: ["../../EventLogTags.logtags"],
    // Shared library link options.
    // References to global symbols and functions should bind to the library
    // itself. This is to avoid issues with some of the unit/system tests
    // that might link statically with some of the code in the library, and
    // also dlopen(3) the shared library.
    ldflags: ["-Wl,-Bsymbolic,-Bsymbolic-functions"],
    cflags: [
        "-DBUILDCFG",
    ],
    sanitize: {
        scs: true,
    },
    apex_available: [
        "com.android.bluetooth",
    ],
    host_supported: true,
    min_sdk_version: "30",
}

cc_library_static {
    name: "libbluetooth-for-tests",
    defaults: ["fluoride_defaults"],

    srcs: [
        ":LibBluetoothSources",
        ":LibBluetoothShimSources",
    ],
    host_supported: true,
    include_dirs: [
        "packages/modules/Bluetooth/system",
        "packages/modules/Bluetooth/system/gd",
        "packages/modules/Bluetooth/system/gd/rust/shim",
        "packages/modules/Bluetooth/system/bta/include",
        "packages/modules/Bluetooth/system/btif/include",
        "packages/modules/Bluetooth/system/internal_include",
        "packages/modules/Bluetooth/system/stack/include",
        "packages/modules/Bluetooth/system/utils/include",
    ],
    generated_headers: [
        "BluetoothGeneratedBundlerSchema_h_bfbs",
        "BluetoothGeneratedPackets_h",
        "BluetoothGeneratedDumpsysDataSchema_h",
    ],
    cflags: [
        "-DBUILDCFG",
    ],
    shared_libs: [
        "libflatbuffers-cpp",
    ],
    whole_static_libs: [
        "libbluetooth_gd", // Gabeldorsche
    ],
}

cc_test {
    name: "net_test_main_shim",
    test_suites: ["device-tests"],
    host_supported: true,
    test_options: {
        unit_test: true,
    },
    defaults: [
        "fluoride_defaults",
        "mts_defaults",
    ],
    include_dirs: [
        "packages/modules/Bluetooth/system",
        "packages/modules/Bluetooth/system/gd",
        "packages/modules/Bluetooth/system/stack/include",
    ],
    srcs: [
        ":TestCommonMainHandler",
        ":TestCommonMockFunctions",
        ":TestMockBta",
        ":TestMockBtif",
        ":TestMockLegacyHciCommands",
        ":TestMockLegacyHciInterface",
        ":TestMockMainShimEntry",
        ":TestMockStack",
        ":BluetoothOsSources_host",
        "shim/acl_api.cc",
        "shim/acl.cc",
        "shim/acl_legacy_interface.cc",
        "shim/btm_api.cc",
        "shim/btm.cc",
        "shim/config.cc",
        "shim/controller.cc",
        "shim/dumpsys.cc",
        "shim/hci_layer.cc",
        "shim/l2c_api.cc",
        "shim/le_advertising_manager.cc",
        "shim/le_scanning_manager.cc",
        "shim/link_policy.cc",
        "shim/metric_id_api.cc",
        "shim/metrics_api.cc",
        "shim/shim.cc",
        "shim/stack.cc",
        "test/common_stack_test.cc",
        "test/main_shim_dumpsys_test.cc",
        "test/main_shim_test.cc",
    ],
    static_libs: [
        "libbluetooth-dumpsys",
        "libbt-common",
        "libbt-protos-lite",
        "libflatbuffers-cpp",
        "libgmock",
        "liblog",
        "libosi",
        "libbtdevice",
    ],
    shared_libs: [
        "libcrypto",
        "libprotobuf-cpp-lite",
    ],
    sanitize: {
        address: true,
        all_undefined: true,
        cfi: true,
        integer_overflow: true,
        scs: true,
        diag: {
            undefined : true
        },
    },
    generated_headers: [
        "BluetoothGeneratedBundlerSchema_h_bfbs",
        "BluetoothGeneratedDumpsysDataSchema_h",
        "BluetoothGeneratedPackets_h",
    ],
    min_sdk_version: "Tiramisu"
}
