| cc_defaults { |
| name: "gd_defaults", |
| target: { |
| android: { |
| test_config_template: "AndroidTestTemplate.xml", |
| cflags: [ |
| "-DOS_ANDROID", |
| "-DOS_LINUX_GENERIC", |
| ], |
| shared_libs: [ |
| "liblog", |
| ], |
| }, |
| host: { |
| cflags: [ |
| "-DOS_LINUX", |
| "-DOS_LINUX_GENERIC", |
| ], |
| }, |
| darwin: { |
| enabled: false, |
| }, |
| }, |
| cpp_std: "c++17", |
| cflags: [ |
| "-DEXPORT_SYMBOL=__attribute__((visibility(\"default\")))", |
| "-fvisibility=hidden", |
| "-DLOG_NDEBUG=1", |
| "-DGOOGLE_PROTOBUF_NO_RTTI", |
| "-Wno-unused-parameter", |
| "-Wno-unused-result", |
| ], |
| conlyflags: [ |
| "-std=c99", |
| ], |
| header_libs: ["jni_headers"], |
| sanitize: { |
| misc_undefined: ["bounds"], |
| }, |
| } |
| |
| // Enables code coverage for a set of source files. Must be combined with |
| // "clang_coverage_bin" in order to work. See //test/gen_coverage.py for more information |
| // on generating code coverage. |
| cc_defaults { |
| name: "gd_clang_file_coverage", |
| target: { |
| host: { |
| clang_cflags: [ |
| "-fprofile-instr-generate", |
| "-fcoverage-mapping", |
| ], |
| }, |
| }, |
| } |
| |
| // Enabled code coverage on a binary. These flags allow libraries that were |
| // compiled with "clang_file_coverage" to be properly linked together in |
| // order to create a binary that will create a profraw file when ran. Note |
| // these flags themselves don't enable code coverage for the source files |
| // compiled in the binary. See //test/gen_coverage.py for more information |
| // on generating code coverage. |
| cc_defaults { |
| name: "gd_clang_coverage_bin", |
| target: { |
| host: { |
| ldflags: [ |
| "-fprofile-instr-generate", |
| "-fcoverage-mapping", |
| ], |
| }, |
| }, |
| } |
| |
| cc_defaults { |
| name: "gd_clang_tidy", |
| tidy: true, |
| tidy_checks: [ |
| "clang-analyzer-core.CallAndMessage", |
| "clang-analyzer-optin.cplusplus.UninitializedObject", |
| "-google*", |
| "-performance*", |
| "-bugprone*", |
| ], |
| tidy_checks_as_errors: [ |
| "cppcoreguidelines-pro-type-member-init", |
| "clang-analyzer-core.CallAndMessage", |
| "clang-analyzer-optin.cplusplus.UninitializedObject", |
| ], |
| tidy_flags: [ |
| "--header-filter=^.*packages/modules/Bluetooth/system/.*.h$", |
| "--extra-arg-before=-Xclang", |
| "--extra-arg-before=-analyzer-config", |
| "--extra-arg-before=-Xclang", |
| "--extra-arg-before=optin.cplusplus.UninitializedObject:Pedantic=true", |
| "--extra-arg-before=-Xclang", |
| "--extra-arg-before=-analyzer-config", |
| "--extra-arg-before=-Xclang", |
| "--extra-arg-before=optin.cplusplus.UninitializedObject:CheckPointeeInitialization=true", |
| ], |
| } |
| |
| cc_defaults { |
| name: "libbluetooth_gd_defaults", |
| defaults: [ |
| "gd_defaults", |
| "gd_clang_file_coverage", |
| ], |
| host_supported: true, |
| target: { |
| linux: { |
| srcs: [ |
| ":BluetoothOsSources_linux_generic", |
| ], |
| }, |
| host: { |
| srcs: [ |
| ":BluetoothHalSources_hci_rootcanal", |
| ":BluetoothOsSources_host", |
| ], |
| }, |
| android: { |
| srcs: [ |
| ":BluetoothHalSources_hci_android_hidl", |
| ":BluetoothOsSources_android", |
| ], |
| shared_libs: [ |
| "android.hardware.bluetooth@1.0", |
| "libhidlbase", |
| "libutils", |
| "libcutils", |
| ], |
| }, |
| }, |
| srcs: [ |
| "stack_manager.cc", |
| "module.cc", |
| ":BluetoothAttSources", |
| ":BluetoothCommonSources", |
| ":BluetoothCryptoToolboxSources", |
| ":BluetoothDumpsysSources", |
| ":BluetoothHalSources", |
| ":BluetoothHciSources", |
| ":BluetoothL2capSources", |
| ":BluetoothNeighborSources", |
| ":BluetoothPacketSources", |
| ":BluetoothShimSources", |
| ":BluetoothSecuritySources", |
| ":BluetoothStorageSources", |
| ], |
| generated_headers: [ |
| "BluetoothGeneratedBundlerSchema_h_bfbs", |
| "BluetoothGeneratedDumpsysDataSchema_h", |
| "BluetoothGeneratedDumpsysBundledSchema_h", |
| "BluetoothGeneratedPackets_h", |
| ], |
| shared_libs: [ |
| "libchrome", |
| "libcrypto", |
| "libflatbuffers-cpp", |
| ], |
| static_libs: [ |
| "libbluetooth-protos", |
| "libbluetooth_rust_interop", |
| "libbt_shim_ffi", |
| "libcxxbridge05", |
| ], |
| export_static_lib_headers: [ "libbluetooth_rust_interop" ], |
| } |
| |
| cc_library { |
| name: "libbluetooth_gd", |
| defaults: [ |
| "libbluetooth_gd_defaults", |
| ], |
| } |
| |
| cc_library { |
| name: "libbluetooth_gd_fuzzing", |
| defaults: [ |
| "libbluetooth_gd_defaults", |
| ], |
| srcs: [ |
| ":BluetoothOsSources_fuzz", |
| ], |
| cflags: [ |
| "-DFUZZ_TARGET", |
| ], |
| } |
| |
| cc_binary { |
| name: "bluetooth_stack_with_facade", |
| defaults: [ |
| "gd_defaults", |
| "gd_clang_coverage_bin", |
| ], |
| host_supported: true, |
| srcs: [ |
| "facade/facade_main.cc", |
| "facade/grpc_root_server.cc", |
| "facade/read_only_property_server.cc", |
| "grpc/grpc_module.cc", |
| ":BluetoothFacade_hci_hal", |
| ":BluetoothFacade_hci_layer", |
| ":BluetoothFacade_l2cap_layer", |
| ":BluetoothFacade_neighbor", |
| ":BluetoothFacade_security_layer", |
| ":BluetoothFacade_shim_layer", |
| ], |
| generated_headers: [ |
| "BluetoothFacadeGeneratedStub_h", |
| "BluetoothGeneratedBundlerSchema_h_bfbs", |
| "BluetoothGeneratedDumpsysDataSchema_h", |
| "BluetoothGeneratedPackets_h", |
| // Needed here to guarantee that generated zip file is created before |
| // bluetooth_cert_tests.zip is packaged |
| "BluetoothFacadeAndCertGeneratedStub_py", |
| ], |
| generated_sources: [ |
| "BluetoothFacadeGeneratedStub_cc", |
| ], |
| static_libs: [ |
| "breakpad_client", |
| "libbluetooth-protos", |
| "libbluetooth_gd", |
| "libflatbuffers-cpp", |
| "libbluetooth_rust_interop", |
| "libbt_shim_ffi", |
| "libcxxbridge05", |
| ], |
| shared_libs: [ |
| "libbacktrace", |
| "libchrome", |
| "libcrypto", |
| "libgrpc++_unsecure", |
| "libprotobuf-cpp-full", |
| ], |
| target: { |
| android: { |
| shared_libs: [ |
| "android.hardware.bluetooth@1.0", |
| "libhidlbase", |
| "libutils", |
| "libcutils", |
| ], |
| }, |
| host: { |
| required: [ |
| "root-canal", |
| ], |
| }, |
| }, |
| } |
| |
| cc_test { |
| name: "bluetooth_test_gd", |
| test_suites: ["device-tests"], |
| defaults: [ |
| "gd_defaults", |
| "gd_clang_coverage_bin", |
| ], |
| host_supported: true, |
| target: { |
| linux: { |
| srcs: [ |
| ":BluetoothOsTestSources_linux_generic", |
| ], |
| }, |
| host: { |
| srcs: [ |
| ":BluetoothHalTestSources_hci_rootcanal", |
| ":BluetoothOsTestSources_host", |
| ], |
| }, |
| android: { |
| srcs: [ |
| ":BluetoothHalTestSources_hci_android_hidl", |
| ":BluetoothOsTestSources_android", |
| ], |
| shared_libs: [ |
| "android.hardware.bluetooth@1.0", |
| "libhidlbase", |
| "libutils", |
| "libcutils", |
| ], |
| }, |
| }, |
| srcs: [ |
| "module_unittest.cc", |
| "stack_manager_unittest.cc", |
| ":BluetoothAttTestSources", |
| ":BluetoothCommonTestSources", |
| ":BluetoothCryptoToolboxTestSources", |
| ":BluetoothDumpsysTestSources", |
| ":BluetoothHalTestSources", |
| ":BluetoothHciTestSources", |
| ":BluetoothL2capTestSources", |
| ":BluetoothNeighborTestSources", |
| ":BluetoothPacketTestSources", |
| ":BluetoothSecurityTestSources", |
| ":BluetoothShimTestSources", |
| ":BluetoothStorageTestSources", |
| ], |
| generated_headers: [ |
| "BluetoothGeneratedBundlerSchema_h_bfbs", |
| "BluetoothGeneratedDumpsysBundledSchema_h", |
| "BluetoothGeneratedDumpsysBundledTestSchema_h", |
| "BluetoothGeneratedDumpsysDataSchema_h", |
| "BluetoothGeneratedDumpsysTestData_h", |
| "BluetoothGeneratedPackets_h", |
| ], |
| static_libs: [ |
| "libbluetooth-protos", |
| "libbluetooth_gd", |
| "libc++fs", |
| "libflatbuffers-cpp", |
| "libgmock", |
| "libbluetooth_rust_interop", |
| "libbt_shim_ffi", |
| "libcxxbridge05", |
| ], |
| shared_libs: [ |
| "libchrome", |
| "libcrypto", |
| ], |
| sanitize: { |
| address: true, |
| }, |
| } |
| |
| cc_test { |
| name: "bluetooth_packet_parser_test", |
| test_suites: ["device-tests"], |
| defaults: [ |
| "gd_defaults", |
| "gd_clang_coverage_bin", |
| ], |
| host_supported: true, |
| srcs: [ |
| ":BluetoothCommonSources", |
| ":BluetoothPacketSources", |
| ":BluetoothPacketParserTestPacketTestSources", |
| ], |
| generated_headers: [ |
| "BluetoothPacketParserTestPacketPdlGen_h", |
| ], |
| sanitize: { |
| address: true, |
| cfi: true, |
| }, |
| static_libs: [ |
| "libbluetooth_rust_interop", |
| "libbt_shim_ffi", |
| "libcxxbridge05", |
| "libchrome", |
| ], |
| } |
| |
| cc_defaults { |
| name: "gd_fuzz_defaults", |
| defaults: ["gd_defaults"], |
| srcs: [ |
| ":BluetoothFuzzHelperSources", |
| ":BluetoothHciFuzzHelperSources", |
| ], |
| static_libs: [ |
| "libbluetooth-protos", |
| "libbluetooth_gd_fuzzing", |
| "libchrome", |
| "libgmock", |
| "libgtest", |
| "libbluetooth_rust_interop", |
| "libbt_shim_ffi", |
| "libcxxbridge05", |
| ], |
| host_supported: true, |
| generated_headers: [ |
| "BluetoothGeneratedDumpsysDataSchema_h", |
| "BluetoothGeneratedPackets_h", |
| ], |
| shared_libs: [ |
| "libcrypto", |
| "libflatbuffers-cpp", |
| ], |
| cflags: [ |
| "-DFUZZ_TARGET", |
| ], |
| target: { |
| android: { |
| shared_libs: [ |
| "android.hardware.bluetooth@1.0", |
| "libcutils", |
| "libhidlbase", |
| "libutils", |
| ], |
| }, |
| }, |
| } |
| |
| cc_fuzz { |
| name: "bluetooth_gd_fuzz_test", |
| defaults: ["gd_fuzz_defaults"], |
| srcs: [ |
| "fuzz_test.cc", |
| ":BluetoothHciFuzzTestSources", |
| ":BluetoothL2capFuzzTestSources", |
| ], |
| } |
| |
| cc_fuzz { |
| name: "bluetooth_gd_hci_layer_fuzz_test", |
| defaults: ["gd_fuzz_defaults"], |
| srcs: [ |
| "hci/fuzz/hci_layer_fuzz_test.cc", |
| ":BluetoothHalFuzzSources", |
| ], |
| } |
| |
| cc_fuzz { |
| name: "bluetooth_gd_acl_manager_fuzz_test", |
| defaults: ["gd_fuzz_defaults"], |
| srcs: [ |
| "hci/fuzz/acl_manager_fuzz_test.cc", |
| ], |
| } |
| |
| cc_benchmark { |
| name: "bluetooth_benchmark_gd", |
| defaults: ["gd_defaults"], |
| host_supported: true, |
| srcs: [ |
| "benchmark.cc", |
| ":BluetoothOsBenchmarkSources", |
| ], |
| static_libs: [ |
| "libbluetooth_gd", |
| ], |
| shared_libs: [ |
| "libchrome", |
| ], |
| } |
| |
| filegroup { |
| name: "BluetoothHciClassSources", |
| srcs: [ |
| "hci/address.cc", |
| "hci/class_of_device.cc", |
| ], |
| } |
| |
| genrule { |
| name: "BluetoothGeneratedPackets_h", |
| tools: [ |
| "bluetooth_packetgen", |
| ], |
| cmd: "$(location bluetooth_packetgen) --include=packages/modules/Bluetooth/system/gd --out=$(genDir) $(in)", |
| srcs: [ |
| "hci/hci_packets.pdl", |
| "l2cap/l2cap_packets.pdl", |
| "security/smp_packets.pdl", |
| ], |
| out: [ |
| "hci/hci_packets.h", |
| "l2cap/l2cap_packets.h", |
| "security/smp_packets.h", |
| ], |
| } |
| |
| genrule { |
| name: "BluetoothGeneratedPackets_rust", |
| tools: [ |
| "bluetooth_packetgen", |
| ], |
| cmd: "$(location bluetooth_packetgen) --include=packages/modules/Bluetooth/system/gd --out=$(genDir) $(in) --rust", |
| srcs: [ |
| "hci/hci_packets.pdl", |
| ], |
| out: [ |
| "hci/hci_packets.rs", |
| ], |
| } |
| |
| rust_library { |
| name: "libbt_packets", |
| crate_name: "bt_packets", |
| srcs: ["rust/packets/lib.rs", ":BluetoothGeneratedPackets_rust"], |
| edition: "2018", |
| host_supported: true, |
| } |
| |
| // Generates binary schema data to be bundled and source file generated |
| genrule { |
| name: "BluetoothGeneratedDumpsysBinarySchema_bfbs", |
| tools: [ |
| "flatc", |
| ], |
| cmd: "$(location flatc) -I packages/modules/Bluetooth/system/gd -b --schema -o $(genDir) $(in) ", |
| srcs: [ |
| "common/init_flags.fbs", |
| "dumpsys_data.fbs", |
| "hci/hci_acl_manager.fbs", |
| "l2cap/classic/l2cap_classic_module.fbs", |
| "shim/dumpsys.fbs", |
| ], |
| out: [ |
| "init_flags.bfbs", |
| "dumpsys.bfbs", |
| "dumpsys_data.bfbs", |
| "hci_acl_manager.bfbs", |
| "l2cap_classic_module.bfbs", |
| ], |
| } |
| |
| genrule { |
| name: "BluetoothGeneratedDumpsysDataSchema_h", |
| tools: [ |
| "flatc", |
| ], |
| cmd: "$(location flatc) -I packages/modules/Bluetooth/system/gd -o $(genDir) --cpp $(in) ", |
| srcs: [ |
| "common/init_flags.fbs", |
| "dumpsys_data.fbs", |
| "hci/hci_acl_manager.fbs", |
| "l2cap/classic/l2cap_classic_module.fbs", |
| "shim/dumpsys.fbs", |
| ], |
| out: [ |
| "dumpsys_data_generated.h", |
| "dumpsys_generated.h", |
| "hci_acl_manager_generated.h", |
| "init_flags_generated.h", |
| "l2cap_classic_module_generated.h", |
| ], |
| } |
| |
| genrule { |
| name: "BluetoothGeneratedPackets_python3_cc", |
| tools: [ |
| "bluetooth_packetgen", |
| ], |
| cmd: "$(location bluetooth_packetgen) --include=packages/modules/Bluetooth/system/gd --out=$(genDir) --num_shards=10 $(in)", |
| srcs: [ |
| "hci/hci_packets.pdl", |
| "l2cap/l2cap_packets.pdl", |
| "security/smp_packets.pdl", |
| ], |
| out: [ |
| "hci/hci_packets_python3.cc", |
| "hci/hci_packets_python3_shard_0.cc", |
| "hci/hci_packets_python3_shard_1.cc", |
| "hci/hci_packets_python3_shard_2.cc", |
| "hci/hci_packets_python3_shard_3.cc", |
| "hci/hci_packets_python3_shard_4.cc", |
| "hci/hci_packets_python3_shard_5.cc", |
| "hci/hci_packets_python3_shard_6.cc", |
| "hci/hci_packets_python3_shard_7.cc", |
| "hci/hci_packets_python3_shard_8.cc", |
| "hci/hci_packets_python3_shard_9.cc", |
| "l2cap/l2cap_packets_python3.cc", |
| "l2cap/l2cap_packets_python3_shard_0.cc", |
| "l2cap/l2cap_packets_python3_shard_1.cc", |
| "l2cap/l2cap_packets_python3_shard_2.cc", |
| "l2cap/l2cap_packets_python3_shard_3.cc", |
| "l2cap/l2cap_packets_python3_shard_4.cc", |
| "l2cap/l2cap_packets_python3_shard_5.cc", |
| "l2cap/l2cap_packets_python3_shard_6.cc", |
| "l2cap/l2cap_packets_python3_shard_7.cc", |
| "l2cap/l2cap_packets_python3_shard_8.cc", |
| "l2cap/l2cap_packets_python3_shard_9.cc", |
| "security/smp_packets_python3.cc", |
| "security/smp_packets_python3_shard_0.cc", |
| "security/smp_packets_python3_shard_1.cc", |
| "security/smp_packets_python3_shard_2.cc", |
| "security/smp_packets_python3_shard_3.cc", |
| "security/smp_packets_python3_shard_4.cc", |
| "security/smp_packets_python3_shard_5.cc", |
| "security/smp_packets_python3_shard_6.cc", |
| "security/smp_packets_python3_shard_7.cc", |
| "security/smp_packets_python3_shard_8.cc", |
| "security/smp_packets_python3_shard_9.cc", |
| ], |
| } |
| |
| filegroup { |
| name: "BluetoothFacadeProto", |
| srcs: [ |
| "facade/common.proto", |
| "facade/rootservice.proto", |
| "hal/facade.proto", |
| "hci/facade/facade.proto", |
| "hci/facade/acl_manager_facade.proto", |
| "hci/facade/controller_facade.proto", |
| "hci/facade/le_acl_manager_facade.proto", |
| "hci/facade/le_advertising_manager_facade.proto", |
| "hci/facade/le_initiator_address_facade.proto", |
| "hci/facade/le_scanning_manager_facade.proto", |
| "neighbor/facade/facade.proto", |
| "l2cap/classic/facade.proto", |
| "l2cap/le/facade.proto", |
| "security/facade.proto", |
| "shim/facade/facade.proto", |
| ], |
| } |
| |
| genrule { |
| name: "BluetoothFacadeGeneratedStub_h", |
| tools: [ |
| "aprotoc", |
| "protoc-gen-grpc-cpp-plugin", |
| ], |
| cmd: "$(location aprotoc) -Ipackages/modules/Bluetooth/system/gd -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(in) --grpc_out=$(genDir) --cpp_out=$(genDir)", |
| srcs: [ |
| ":BluetoothFacadeProto", |
| ], |
| out: [ |
| "facade/common.grpc.pb.h", |
| "facade/common.pb.h", |
| "facade/rootservice.grpc.pb.h", |
| "facade/rootservice.pb.h", |
| "hal/facade.grpc.pb.h", |
| "hal/facade.pb.h", |
| "hci/facade/facade.grpc.pb.h", |
| "hci/facade/facade.pb.h", |
| "hci/facade/acl_manager_facade.grpc.pb.h", |
| "hci/facade/acl_manager_facade.pb.h", |
| "hci/facade/controller_facade.grpc.pb.h", |
| "hci/facade/controller_facade.pb.h", |
| "hci/facade/le_acl_manager_facade.grpc.pb.h", |
| "hci/facade/le_acl_manager_facade.pb.h", |
| "hci/facade/le_advertising_manager_facade.grpc.pb.h", |
| "hci/facade/le_advertising_manager_facade.pb.h", |
| "hci/facade/le_initiator_address_facade.grpc.pb.h", |
| "hci/facade/le_initiator_address_facade.pb.h", |
| "hci/facade/le_scanning_manager_facade.grpc.pb.h", |
| "hci/facade/le_scanning_manager_facade.pb.h", |
| "l2cap/classic/facade.grpc.pb.h", |
| "l2cap/classic/facade.pb.h", |
| "l2cap/le/facade.grpc.pb.h", |
| "l2cap/le/facade.pb.h", |
| "neighbor/facade/facade.grpc.pb.h", |
| "neighbor/facade/facade.pb.h", |
| "security/facade.grpc.pb.h", |
| "security/facade.pb.h", |
| "shim/facade/facade.grpc.pb.h", |
| "shim/facade/facade.pb.h", |
| ], |
| } |
| |
| genrule { |
| name: "BluetoothFacadeGeneratedStub_cc", |
| tools: [ |
| "aprotoc", |
| "protoc-gen-grpc-cpp-plugin", |
| ], |
| cmd: "$(location aprotoc) -Ipackages/modules/Bluetooth/system/gd -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-cpp-plugin) $(in) --grpc_out=$(genDir) --cpp_out=$(genDir)", |
| srcs: [ |
| ":BluetoothFacadeProto", |
| ], |
| out: [ |
| "facade/common.grpc.pb.cc", |
| "facade/common.pb.cc", |
| "facade/rootservice.grpc.pb.cc", |
| "facade/rootservice.pb.cc", |
| "hal/facade.grpc.pb.cc", |
| "hal/facade.pb.cc", |
| "hci/facade/facade.grpc.pb.cc", |
| "hci/facade/facade.pb.cc", |
| "hci/facade/acl_manager_facade.grpc.pb.cc", |
| "hci/facade/acl_manager_facade.pb.cc", |
| "hci/facade/controller_facade.grpc.pb.cc", |
| "hci/facade/controller_facade.pb.cc", |
| "hci/facade/le_acl_manager_facade.grpc.pb.cc", |
| "hci/facade/le_acl_manager_facade.pb.cc", |
| "hci/facade/le_advertising_manager_facade.grpc.pb.cc", |
| "hci/facade/le_advertising_manager_facade.pb.cc", |
| "hci/facade/le_initiator_address_facade.grpc.pb.cc", |
| "hci/facade/le_initiator_address_facade.pb.cc", |
| "hci/facade/le_scanning_manager_facade.grpc.pb.cc", |
| "hci/facade/le_scanning_manager_facade.pb.cc", |
| "l2cap/classic/facade.grpc.pb.cc", |
| "l2cap/classic/facade.pb.cc", |
| "l2cap/le/facade.grpc.pb.cc", |
| "l2cap/le/facade.pb.cc", |
| "neighbor/facade/facade.grpc.pb.cc", |
| "neighbor/facade/facade.pb.cc", |
| "security/facade.grpc.pb.cc", |
| "security/facade.pb.cc", |
| "shim/facade/facade.grpc.pb.cc", |
| "shim/facade/facade.pb.cc", |
| ], |
| } |
| |
| genrule { |
| name: "BluetoothFacadeAndCertGeneratedStub_py", |
| tools: [ |
| "aprotoc", |
| "protoc-gen-grpc-python-plugin", |
| "soong_zip", |
| ], |
| cmd: "mkdir -p $(genDir)/files && " + |
| "$(location aprotoc) -Ipackages/modules/Bluetooth/system/gd -Iexternal/protobuf/src --plugin=protoc-gen-grpc=$(location protoc-gen-grpc-python-plugin) $(in) --grpc_out=$(genDir)/files --python_out=$(genDir)/files && " + |
| "mkdir -p $(genDir)/files/cert && " + |
| "touch $(genDir)/files/cert/__init__.py && " + |
| "touch $(genDir)/files/facade/__init__.py && " + |
| "touch $(genDir)/files/hal/__init__.py && " + |
| "touch $(genDir)/files/hci/__init__.py && " + |
| "touch $(genDir)/files/hci/facade/__init__.py && " + |
| "touch $(genDir)/files/l2cap/classic/__init__.py && " + |
| "touch $(genDir)/files/l2cap/le/__init__.py && " + |
| "touch $(genDir)/files/neighbor/facade/__init__.py && " + |
| "touch $(genDir)/files/security/__init__.py && " + |
| "$(location soong_zip) -C $(genDir)/files -D $(genDir)/files -o $(out)", |
| srcs: [ |
| ":BluetoothFacadeProto", |
| ], |
| out: ["bluetooth_cert_generated_py.zip"], |
| } |
| |
| cc_defaults { |
| name: "bluetooth_py3_native_extension_defaults", |
| include_dirs: [ |
| "external/python/cpython3/Include", |
| ], |
| target: { |
| android: { |
| include_dirs: ["external/python/cpython3/android/bionic/pyconfig"], |
| }, |
| android_arm: { |
| cflags: ["-DSOABI=\"cpython-38android-arm-android-bionic\""], |
| suffix: ".cpython-38android-arm-android-bionic", |
| }, |
| android_arm64: { |
| cflags: ["-DSOABI=\"cpython-38android-arm64-android-bionic\""], |
| suffix: ".cpython-38android-arm64-android-bionic", |
| }, |
| android_x86: { |
| cflags: ["-DSOABI=\"cpython-38android-x86-android-bionic\""], |
| suffix: ".cpython-38android-x86-android-bionic", |
| }, |
| android_x86_64: { |
| cflags: ["-DSOABI=\"cpython-38android-x86_64-android-bionic\""], |
| suffix: ".cpython-38android-x86_64-android-bionic", |
| }, |
| // Regenerate include dirs with android_regen.sh |
| darwin_x86_64: { |
| include_dirs: ["external/python/cpython3/android/darwin_x86_64/pyconfig"], |
| cflags: [ |
| "-Wno-deprecated-declarations", |
| "-Wno-pointer-arith", |
| "-DSOABI=\"cpython-38android-x86_64-darwin\"", |
| ], |
| suffix: ".cpython-38android-x86_64-darwin", |
| }, |
| linux_bionic: { |
| // NB linux_bionic is a 'host' architecture but it uses the bionic libc like 'android' |
| // targets so use the android pyconfig. |
| include_dirs: ["external/python/cpython3/android/bionic/pyconfig"], |
| cflags: ["-DSOABI=\"cpython-38android-x86_64-linux-bionic\""], |
| suffix: ".cpython-38android-x86_64-linux-bionic", |
| }, |
| linux_glibc_x86: { |
| enabled: false, |
| }, |
| linux_glibc_x86_64: { |
| include_dirs: ["external/python/cpython3/android/linux_x86_64/pyconfig"], |
| cflags: ["-DSOABI=\"cpython-38android-x86_64-linux-gnu\""], |
| // Commenting out the Linux suffix so that cpython-38-x86_64-linux-gnu |
| // Python 3.8 can also import the untagged .so library per PEP 3149 |
| // Keep this change until Android py3-cmd can run ACTS, gRPC and can |
| // Export Python native symbols such as PyType_Type |
| // suffix: ".cpython-38android-x86_64-linux-gnu", |
| }, |
| windows: { |
| enabled: false, |
| }, |
| }, |
| allow_undefined_symbols: true, |
| } |
| |
| cc_library_host_shared { |
| name: "bluetooth_packets_python3", |
| defaults: [ |
| "gd_defaults", |
| "bluetooth_py3_native_extension_defaults", |
| ], |
| srcs: [ |
| "common/strings.cc", |
| "packet/python3_module.cc", |
| "l2cap/fcs.cc", |
| ":BluetoothPacketSources", |
| "hci/address.cc", |
| "hci/class_of_device.cc", |
| |
| ], |
| generated_headers: [ |
| "BluetoothGeneratedPackets_h", |
| ], |
| generated_sources: [ |
| "BluetoothGeneratedPackets_python3_cc", |
| ], |
| header_libs: [ |
| "pybind11_headers", |
| ], |
| cflags: [ |
| "-fexceptions", |
| ], |
| rtti: true, |
| } |
| |
| rust_grpcio { |
| name: "libbt_hci_proto", |
| crate_name: "bt_hci_proto", |
| protos: ["hci/facade/facade.proto"], |
| source_stem: "facade", |
| host_supported: true, |
| } |
| |
| rust_grpcio { |
| name: "libbt_hal_proto", |
| crate_name: "bt_hal_proto", |
| protos: ["hal/facade.proto"], |
| source_stem: "facade", |
| host_supported: true, |
| } |
| |
| rust_protobuf { |
| name: "libbt_facade_rootservice_proto", |
| crate_name: "bt_facade_rootservice_proto", |
| protos: ["facade/rootservice.proto"], |
| source_stem: "rootservice", |
| header_libs: ["libprotobuf-cpp-full"], |
| host_supported: true, |
| } |
| |
| rust_protobuf { |
| name: "libbt_facade_common_proto", |
| crate_name: "bt_facade_common_proto", |
| protos: ["facade/common.proto"], |
| source_stem: "common", |
| host_supported: true, |
| } |