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 // SPDX-license-identifier-BSD default_applicable_licenses: ["system_bt_license"], } crypto_toolbox_srcs = [ "crypto_toolbox/aes.cc", "crypto_toolbox/aes_cmac.cc", "crypto_toolbox/crypto_toolbox.cc", ] cc_test_library { name: "crypto_toolbox_for_tests", defaults: ["fluoride_defaults"], host_supported: true, include_dirs: [ "system/bt", ], srcs: crypto_toolbox_srcs } // Bluetooth stack static library for target // ======================================================== cc_library_static { name: "libbt-stack", defaults: ["fluoride_defaults"], local_include_dirs: [ "include", "avct", "btm", "avrc", "l2cap", "avdt", "eatt", "gatt", "gap", "pan", "bnep", "hid", "metrics", "sdp", "smp", "srvc", ], header_libs: [ "libbluetooth_headers", ], include_dirs: [ "external/aac/libAACenc/include", "external/aac/libAACdec/include", "external/aac/libSYS/include", "external/libldac/inc", "external/libldac/abr/inc", "system/bt", "system/bt/btcore/include", "system/bt/vnd/include", "system/bt/vnd/ble", "system/bt/btif/include", "system/bt/hci/include", "system/bt/internal_include", "system/bt/udrv/include", "system/bt/bta/include", "system/bt/bta/sys", "system/bt/utils/include", "system/bt/gd/rust/shim", ], srcs: crypto_toolbox_srcs + [ "a2dp/a2dp_aac.cc", "a2dp/a2dp_aac_decoder.cc", "a2dp/a2dp_aac_encoder.cc", "a2dp/a2dp_api.cc", "a2dp/a2dp_codec_config.cc", "a2dp/a2dp_sbc.cc", "a2dp/a2dp_sbc_decoder.cc", "a2dp/a2dp_sbc_encoder.cc", "a2dp/a2dp_sbc_up_sample.cc", "a2dp/a2dp_vendor.cc", "a2dp/a2dp_vendor_aptx.cc", "a2dp/a2dp_vendor_aptx_hd.cc", "a2dp/a2dp_vendor_aptx_encoder.cc", "a2dp/a2dp_vendor_aptx_hd_encoder.cc", "a2dp/a2dp_vendor_ldac.cc", "a2dp/a2dp_vendor_ldac_abr.cc", "a2dp/a2dp_vendor_ldac_decoder.cc", "a2dp/a2dp_vendor_ldac_encoder.cc", "avct/avct_api.cc", "avct/avct_bcb_act.cc", "avct/avct_ccb.cc", "avct/avct_l2c.cc", "avct/avct_l2c_br.cc", "avct/avct_lcb.cc", "avct/avct_lcb_act.cc", "avdt/avdt_ad.cc", "avdt/avdt_api.cc", "avdt/avdt_ccb.cc", "avdt/avdt_ccb_act.cc", "avdt/avdt_l2c.cc", "avdt/avdt_msg.cc", "avdt/avdt_scb.cc", "avdt/avdt_scb_act.cc", "avrc/avrc_api.cc", "avrc/avrc_bld_ct.cc", "avrc/avrc_bld_tg.cc", "avrc/avrc_opt.cc", "avrc/avrc_pars_ct.cc", "avrc/avrc_pars_tg.cc", "avrc/avrc_sdp.cc", "avrc/avrc_utils.cc", "bnep/bnep_api.cc", "bnep/bnep_main.cc", "bnep/bnep_utils.cc", "btm/ble_advertiser_hci_interface.cc", "acl/acl.cc", "acl/btm_acl.cc", "acl/ble_acl.cc", "btm/ble_scanner_hci_interface.cc", "btm/btm_ble.cc", "btm/btm_ble_addr.cc", "btm/btm_ble_adv_filter.cc", "btm/btm_ble_batchscan.cc", "btm/btm_ble_bgconn.cc", "acl/btm_ble_connection_establishment.cc", "btm/btm_ble_cont_energy.cc", "btm/btm_ble_gap.cc", "btm/btm_ble_multi_adv.cc", "btm/btm_ble_privacy.cc", "btm/btm_client_interface.cc", "btm/btm_dev.cc", "btm/btm_devctl.cc", "btm/btm_inq.cc", "btm/btm_main.cc", "acl/btm_pm.cc", "btm/btm_sco.cc", "btm/btm_iso.cc", "btm/btm_sec.cc", "btm/btm_scn.cc", "btu/btu_hcif.cc", "btu/btu_task.cc", "eatt/eatt.cc", "gap/gap_ble.cc", "gap/gap_conn.cc", "gatt/att_protocol.cc", "gatt/connection_manager.cc", "gatt/gatt_api.cc", "gatt/gatt_attr.cc", "gatt/gatt_auth.cc", "gatt/gatt_cl.cc", "gatt/gatt_db.cc", "gatt/gatt_main.cc", "gatt/gatt_sr.cc", "gatt/gatt_sr_hash.cc", "gatt/gatt_utils.cc", "hcic/hciblecmds.cc", "hcic/hcicmds.cc", "hid/hidh_api.cc", "hid/hidh_conn.cc", "hid/hidd_api.cc", "hid/hidd_conn.cc", "l2cap/l2c_api.cc", "l2cap/l2c_ble.cc", "l2cap/l2c_csm.cc", "l2cap/l2c_fcr.cc", "l2cap/l2c_link.cc", "l2cap/l2c_main.cc", "l2cap/l2c_utils.cc", "metrics/stack_metrics_logging.cc", "pan/pan_api.cc", "pan/pan_main.cc", "pan/pan_utils.cc", "rfcomm/port_api.cc", "rfcomm/port_rfc.cc", "rfcomm/port_utils.cc", "rfcomm/rfc_l2cap_if.cc", "rfcomm/rfc_mx_fsm.cc", "rfcomm/rfc_port_fsm.cc", "rfcomm/rfc_port_if.cc", "rfcomm/rfc_ts_frames.cc", "rfcomm/rfc_utils.cc", "sdp/sdp_api.cc", "sdp/sdp_db.cc", "sdp/sdp_discovery.cc", "sdp/sdp_main.cc", "sdp/sdp_server.cc", "sdp/sdp_utils.cc", "smp/p_256_curvepara.cc", "smp/p_256_ecc_pp.cc", "smp/p_256_multprecision.cc", "smp/smp_act.cc", "smp/smp_api.cc", "smp/smp_br_main.cc", "smp/smp_keys.cc", "smp/smp_l2c.cc", "smp/smp_main.cc", "smp/smp_utils.cc", "srvc/srvc_dis.cc", "srvc/srvc_eng.cc", ], static_libs: [ "libbt-hci", "libFraunhoferAAC", ], shared_libs: [ "libcutils", "liblog", "libcrypto", ], required: [ "libldacBT_enc", "libldacBT_abr", ], host_supported: true, } // Bluetooth stack unit tests for target // ======================================================== cc_test { name: "net_test_stack", defaults: ["fluoride_defaults"], test_suites: ["device-tests"], local_include_dirs: [ "include", ], include_dirs: [ "system/bt", "system/bt/internal_include", ], srcs: [ "test/stack_a2dp_test.cc", "test/stack_avrcp_test.cc", ], shared_libs: [ "android.hardware.bluetooth@1.0", "android.hardware.bluetooth@1.1", "android.hardware.bluetooth.a2dp@1.0", "android.hardware.bluetooth.audio@2.0", "android.hardware.bluetooth.audio@2.1", "android.system.suspend.control-V1-ndk", "libaaudio", "libbinder_ndk", "libcutils", "libdl", "libfmq", "libhidlbase", "liblog", "libprocessgroup", "libprotobuf-cpp-lite", "libutils", "libtinyxml2", "libz", "libcrypto", ], static_libs: [ "libbt-audio-hal-interface", "libbtcore", "libbt-bta", "libbt-stack", "libbt-common", "libbt-sbc-decoder", "libbt-sbc-encoder", "libbt-utils", "libbtif", "libFraunhoferAAC", "libbt-hci", "libbtdevice", "libg722codec", "libosi", "libudrv-uipc", "libbt-protos-lite", ], whole_static_libs: [ "libbluetooth-for-tests", ], } cc_test { name: "net_test_stack_rfcomm", defaults: ["fluoride_defaults"], test_suites: ["device-tests"], host_supported: true, local_include_dirs: [ "include", "btm", "l2cap", "smp", "rfcomm", "test/common", ], include_dirs: [ "system/bt", "system/bt/internal_include", "system/bt/btcore/include", "system/bt/hci/include", "system/bt/utils/include", ], srcs: [ "rfcomm/port_api.cc", "rfcomm/port_rfc.cc", "rfcomm/port_utils.cc", "rfcomm/rfc_l2cap_if.cc", "rfcomm/rfc_mx_fsm.cc", "rfcomm/rfc_port_fsm.cc", "rfcomm/rfc_port_if.cc", "rfcomm/rfc_ts_frames.cc", "rfcomm/rfc_utils.cc", "test/common/mock_btm_layer.cc", "test/common/mock_btsnoop_module.cc", "test/common/mock_btu_layer.cc", "test/common/mock_l2cap_layer.cc", "test/common/stack_test_packet_utils.cc", "test/rfcomm/stack_rfcomm_test.cc", "test/rfcomm/stack_rfcomm_test_main.cc", "test/rfcomm/stack_rfcomm_test_utils.cc", "test/rfcomm/stack_rfcomm_test_utils_test.cc", ], shared_libs: [ "libcutils", "libprotobuf-cpp-lite", "libcrypto", ], static_libs: [ "liblog", "libgmock", "libosi", "libbt-common", "libbt-protos-lite", ], sanitize: { cfi: false, }, } // Bluetooth stack smp unit tests for target // ======================================================== cc_test { name: "net_test_stack_smp", defaults: ["fluoride_defaults"], test_suites: ["device-tests"], local_include_dirs: [ "include", "btm", "l2cap", "smp", ], include_dirs: [ "system/bt", "system/bt/internal_include", "system/bt/btcore/include", "system/bt/hci/include", "system/bt/utils/include", ], srcs: crypto_toolbox_srcs + [ "smp/smp_keys.cc", "smp/p_256_curvepara.cc", "smp/p_256_ecc_pp.cc", "smp/p_256_multprecision.cc", "smp/smp_api.cc", "smp/smp_main.cc", "smp/smp_utils.cc", "test/crypto_toolbox_test.cc", "test/stack_smp_test.cc", ], shared_libs: [ "libcutils", "libcrypto", ], static_libs: [ "liblog", "libgmock", "libosi", ], } // Bluetooth stack multi-advertising unit tests for target // ======================================================== cc_test { name: "net_test_stack_multi_adv", defaults: ["fluoride_defaults"], test_suites: ["device-tests"], local_include_dirs: [ "include", "btm", ], include_dirs: [ "system/bt", "system/bt/internal_include", "system/bt/btcore/include", "system/bt/hci/include", "system/bt/internal_include", "system/bt/utils/include", ], srcs: [ "btm/btm_ble_multi_adv.cc", "test/ble_advertiser_test.cc", ], shared_libs: [ "libcutils", ], static_libs: [ "libbluetooth-types", "liblog", "libgmock", ], sanitize: { cfi: false, }, } // Bluetooth stack advertise data parsing unit tests for target // ============================================================= cc_test { name: "net_test_stack_ad_parser", defaults: ["fluoride_defaults"], test_suites: ["device-tests"], local_include_dirs: [ "include", ], srcs: [ "test/ad_parser_unittest.cc", ], static_libs: [ "libbluetooth-types", "liblog", "libgmock", ], } // Bluetooth stack connection multiplexing // ======================================================== cc_test { name: "net_test_gatt_conn_multiplexing", defaults: ["fluoride_defaults"], local_include_dirs: [ "include", "btm", ], include_dirs: [ "system/bt", "system/bt/internal_include", "system/bt/btcore/include", "system/bt/hci/include", "system/bt/internal_include", "system/bt/utils/include", ], srcs: [ "gatt/connection_manager.cc", "test/gatt_connection_manager_test.cc", ], shared_libs: [ "libcutils", ], static_libs: [ "libbluetooth-types", "liblog", "libgmock", ], sanitize: { cfi: false, }, } cc_test { name: "net_test_stack_gatt_native", defaults: ["fluoride_defaults"], test_suites: ["device-tests"], host_supported: true, test_options: { unit_test: true, }, include_dirs: [ "system/bt", "system/bt/stack/include", "system/bt/stack/eatt", "system/bt/stack/l2cap", "system/bt/stack/btm", "system/bt/utils/include", ], srcs: [ "gatt/gatt_utils.cc", "test/common/mock_acl.cc", "test/common/mock_eatt.cc", "test/common/mock_gatt_layer.cc", "test/common/mock_main_shim.cc", "test/gatt/gatt_sr_test.cc", ], shared_libs: [ "libcutils", "libprotobuf-cpp-lite", "libcrypto", ], static_libs: [ "liblog", "libosi", "libbt-common", "libbt-protos-lite", "libgmock", "libosi-AllocationTestHarness", ], sanitize: { address: true, cfi: true, misc_undefined: ["bounds"], }, } cc_test { name: "net_test_stack_avdtp", defaults: ["fluoride_defaults"], test_suites: ["device-tests"], host_supported: true, test_options: { unit_test: true, }, include_dirs: [ "external/libldac/inc", "system/bt", "system/bt/stack/include", "system/bt/utils/include", ], srcs: [ "test/stack_avdtp_test.cc", "avdt/avdt_ad.cc", "avdt/avdt_api.cc", "avdt/avdt_ccb.cc", "avdt/avdt_ccb_act.cc", "avdt/avdt_l2c.cc", "avdt/avdt_scb.cc", "avdt/avdt_scb_act.cc", "test/common/mock_btu_layer.cc", "test/common/mock_stack_avdt_msg.cc", ":TestMockStackL2cap", ":TestMockStackAcl", ":TestMockStackA2dp", ":TestMockBta", ":TestMockDevice", ], shared_libs: [ "libcrypto", "libcutils", "libprotobuf-cpp-lite", ], static_libs: [ "libbt-common", "libbt-protos-lite", "liblog", "libosi", "libosi-AllocationTestHarness", ], sanitize: { address: true, cfi: true, misc_undefined: ["bounds"], }, } cc_test { name: "net_test_stack_a2dp_native", defaults: ["fluoride_defaults"], test_suites: ["device-tests"], host_supported: true, test_options: { unit_test: true, }, include_dirs: [ "external/libldac/inc", "system/bt", "system/bt/stack/include", ], srcs: [ "test/a2dp/a2dp_vendor_ldac_decoder_test.cc", "test/a2dp/misc_fake.cc", ], shared_libs: [ "libcrypto", "libcutils", "libprotobuf-cpp-lite", ], static_libs: [ "libbt-common", "libbt-protos-lite", "liblog", "libosi", "libosi-AllocationTestHarness", ], sanitize: { address: true, cfi: true, misc_undefined: ["bounds"], }, } // gatt sr hash test cc_test { name: "net_test_stack_gatt_sr_hash_native", defaults: ["fluoride_defaults"], test_suites: ["device-tests"], host_supported: true, include_dirs: [ "system/bt", "system/bt/stack/btm", "system/bt/stack/eatt", "system/bt/stack/include", "system/bt/utils/include", ], srcs: crypto_toolbox_srcs + [ "gatt/gatt_db.cc", "gatt/gatt_sr_hash.cc", "gatt/gatt_utils.cc", "test/common/mock_acl.cc", "test/common/mock_eatt.cc", "test/common/mock_gatt_layer.cc", "test/common/mock_main_shim.cc", "test/gatt/mock_gatt_utils_ref.cc", "test/stack_gatt_sr_hash_test.cc", ], shared_libs: [ "libcutils", "libcrypto", "libprotobuf-cpp-lite", ], static_libs: [ "libbt-common", "libbt-protos-lite", "liblog", "libgmock", "libosi", ], } // Iso manager unit tests cc_test { name: "net_test_btm_iso", test_suites: ["device-tests"], host_supported: true, test_options: { unit_test: true, }, defaults: ["fluoride_defaults"], local_include_dirs: [ "btm", "include", "test/common", ], include_dirs: [ "system/bt", "system/bt/btcore/include", ], srcs: [ "btm/btm_iso.cc", "test/btm_iso_test.cc", "test/common/mock_controller.cc", "test/common/mock_gatt_layer.cc", "test/common/mock_hcic_layer.cc", ], static_libs: [ "libbt-common", "libgmock", "liblog", "libosi", ], sanitize: { cfi: true, scs: true, address: true, all_undefined: true, integer_overflow: true, diag: { undefined : true }, }, } // EATT unit tests cc_test { name: "net_test_eatt", test_suites: ["device-tests"], host_supported: true, test_options: { unit_test: true, }, defaults: [ "fluoride_defaults", "clang_coverage_bin", ], local_include_dirs: [ "include", "btm", "eatt", "gatt", "l2cap", "test/common", ], include_dirs:[ "system/bt", "system/bt/btcore/include", ], srcs: [ "eatt/eatt.cc", "test/common/mock_btm_api_layer.cc", "test/common/mock_btif_storage.cc", "test/common/mock_controller.cc", "test/common/mock_gatt_layer.cc", "test/common/mock_l2cap_layer.cc", "test/gatt/mock_gatt_utils_ref.cc", "test/eatt/eatt_test.cc", ], shared_libs: [ "libcutils", "libcrypto", "libprotobuf-cpp-lite", ], static_libs: [ "libbt-common", "libbt-protos-lite", "liblog", "libgmock", "libosi", ], sanitize: { cfi: false, }, } cc_test { name: "net_test_stack_btm", test_suites: ["device-tests"], host_supported: true, test_options: { unit_test: true, }, defaults: ["fluoride_defaults"], local_include_dirs: [ "include", "btm", "test/common", ], include_dirs: [ "system/bt", "system/bt/gd", "system/bt/vnd/ble", ], generated_headers: [ "BluetoothGeneratedBundlerSchema_h_bfbs", "BluetoothGeneratedDumpsysDataSchema_h", "BluetoothGeneratedPackets_h", ], srcs: crypto_toolbox_srcs + [ ":BluetoothBtaaSources_host", ":BluetoothHalSources_hci_host", ":BluetoothOsSources_host", ":TestMockBta", ":TestMockBtif", ":TestMockDevice", ":TestMockLegacyHciCommands", ":TestMockMainBte", ":TestMockMainShim", ":TestMockStackBtu", ":TestMockStackGap", ":TestMockStackGatt", ":TestMockStackSmp", ":TestStackL2cap", "acl/acl.cc", "acl/ble_acl.cc", "acl/btm_acl.cc", "acl/btm_ble_connection_establishment.cc", "acl/btm_pm.cc", "btm/ble_advertiser_hci_interface.cc", "btm/btm_ble.cc", "btm/btm_ble_addr.cc", "btm/btm_ble_adv_filter.cc", "btm/btm_ble_batchscan.cc", "btm/btm_ble_bgconn.cc", "btm/btm_ble_cont_energy.cc", "btm/btm_ble_gap.cc", "btm/btm_ble_multi_adv.cc", "btm/btm_ble_privacy.cc", "btm/btm_client_interface.cc", "btm/btm_dev.cc", "btm/btm_devctl.cc", "btm/btm_inq.cc", "btm/btm_iso.cc", "btm/btm_main.cc", "btm/btm_sco.cc", "btm/btm_scn.cc", "btm/btm_sec.cc", "metrics/stack_metrics_logging.cc", "test/btm/stack_btm_test.cc", "test/btm/stack_btm_regression_tests.cc", "test/btm/peer_packet_types_test.cc", ], static_libs: [ "libbt-common", "libbt-protos-lite", "libbtdevice", "libgmock", "liblog", "libosi", ], shared_libs: [ "libcrypto", "libflatbuffers-cpp", "libprotobuf-cpp-lite", ], sanitize: { address: true, all_undefined: true, cfi: true, integer_overflow: true, scs: true, diag: { undefined : true }, }, } cc_test { name: "net_test_stack_hci", test_suites: ["device-tests"], host_supported: true, defaults: ["fluoride_defaults"], local_include_dirs: [ "include", "btm", "test/common", ], include_dirs: [ "system/bt", "system/bt/vnd/ble", ], srcs: crypto_toolbox_srcs + [ "test/hci/stack_hci_test.cc", ], static_libs: [ "libbt-common", "libbt-protos-lite", "libbte", "libgmock", "liblog", "libosi", "libbtdevice", ], shared_libs: [ "libprotobuf-cpp-lite", "libcrypto", ], sanitize: { address: true, all_undefined: true, cfi: true, integer_overflow: true, scs: true, diag: { undefined : true }, }, } cc_test { name: "net_test_stack_hid", test_suites: ["device-tests"], host_supported: true, defaults: ["fluoride_defaults"], local_include_dirs: [ "include", "test/common", ], include_dirs: [ "system/bt", ], srcs: crypto_toolbox_srcs + [ ":TestStackL2cap", ":TestStackSdp", ":TestStackBtm", ":TestStubLegacyTrace", "hid/hidd_api.cc", "hid/hidd_conn.cc", "hid/hidh_api.cc", "hid/hidh_conn.cc", "test/hid/stack_hid_test.cc", ], static_libs: [ "libbt-common", "libbt-protos-lite", "libbtdevice", "libbte", "libgmock", "liblog", "libosi", ], shared_libs: [ "libcrypto", "libprotobuf-cpp-lite", ], sanitize: { address: true, all_undefined: true, cfi: true, integer_overflow: true, scs: true, diag: { undefined : true }, }, } cc_test { name: "net_test_stack_btu", test_suites: ["device-tests"], host_supported: true, defaults: ["fluoride_defaults"], local_include_dirs: [ "include", "test/common", ], include_dirs: [ "system/bt", "system/bt/gd", ], generated_headers: [ "BluetoothGeneratedBundlerSchema_h_bfbs", "BluetoothGeneratedDumpsysDataSchema_h", "BluetoothGeneratedPackets_h", ], srcs: [ ":TestMockBta", ":TestMockBtif", ":TestMockHci", ":TestMockLegacyHciCommands", ":TestMockMainShim", ":TestMockStackAcl", ":TestMockStackSmp", ":TestStackBtm", ":TestStackL2cap", ":TestMockStackMetrics", "btu/btu_hcif.cc", "btu/btu_task.cc", "test/stack_btu_test.cc", ], static_libs: [ "libbt-common", "libbt-protos-lite", "libbtdevice", "libgmock", "liblog", "libosi", ], shared_libs: [ "libbinder_ndk", "libcrypto", "libflatbuffers-cpp", "libprotobuf-cpp-lite", ], sanitize: { address: true, all_undefined: true, cfi: true, integer_overflow: true, scs: true, diag: { undefined : true }, }, } cc_test { name: "net_test_stack_gatt", test_suites: ["device-tests"], host_supported: true, defaults: ["fluoride_defaults"], local_include_dirs: [ "include", "test/common", ], include_dirs: [ "system/bt", "system/bt/gd", "system/bt/utils/include", ], generated_headers: [ "BluetoothGeneratedBundlerSchema_h_bfbs", "BluetoothGeneratedDumpsysDataSchema_h", "BluetoothGeneratedPackets_h", ], srcs: [ ":TestMockBta", ":TestMockBtif", ":TestMockHci", ":TestMockLegacyHciCommands", ":TestMockMainShim", ":TestMockStackAcl", ":TestMockStackCryptotoolbox", ":TestMockStackSmp", ":TestStackBtm", ":TestStackL2cap", ":TestStackSdp", "eatt/eatt.cc", "gatt/att_protocol.cc", "gatt/connection_manager.cc", "gatt/gatt_api.cc", "gatt/gatt_attr.cc", "gatt/gatt_auth.cc", "gatt/gatt_cl.cc", "gatt/gatt_db.cc", "gatt/gatt_main.cc", "gatt/gatt_sr.cc", "gatt/gatt_sr_hash.cc", "gatt/gatt_utils.cc", "test/gatt/stack_gatt_test.cc", ], static_libs: [ "libbt-common", "libbt-protos-lite", "libbtdevice", "libgmock", "liblog", "libosi", ], shared_libs: [ "libbinder_ndk", "libcrypto", "libflatbuffers-cpp", "libprotobuf-cpp-lite", ], sanitize: { address: true, all_undefined: true, cfi: true, integer_overflow: true, scs: true, diag: { undefined : true }, }, }