blob: 252fad6651fbf83e2b2c973f27c0de9e4b01d15e [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/features.gni")
if (is_android) {
import("//build/config/android/rules.gni") # For generate_jni().
}
config("bluetooth_config") {
if (is_win) {
ldflags = [
"/DELAYLOAD:BluetoothApis.dll",
# Despite MSDN stating that Bthprops.dll contains the
# symbols declared by bthprops.lib, they actually reside here:
"/DELAYLOAD:Bthprops.cpl",
"/DELAYLOAD:setupapi.dll",
]
}
}
source_set("mojo") {
sources = [
"//device/bluetooth/public/interfaces/connect_result_type_converter.h",
"//device/bluetooth/public/interfaces/gatt_result_type_converter.h",
"adapter.cc",
"adapter.h",
"adapter_factory.cc",
"adapter_factory.h",
"device.cc",
"device.h",
"discovery_session.cc",
"discovery_session.h",
]
public_deps = [
":bluetooth",
"//device/bluetooth/public/interfaces:experimental_interfaces",
"//mojo/public/cpp/bindings",
]
}
component("bluetooth") {
sources = [
"android/bluetooth_jni_registrar.cc",
"android/bluetooth_jni_registrar.h",
"android/wrappers.cc",
"android/wrappers.h",
"bluetooth_adapter.cc",
"bluetooth_adapter.h",
"bluetooth_adapter_android.cc",
"bluetooth_adapter_android.h",
"bluetooth_adapter_factory.cc",
"bluetooth_adapter_factory.h",
"bluetooth_adapter_factory_wrapper.cc",
"bluetooth_adapter_factory_wrapper.h",
"bluetooth_adapter_mac.h",
"bluetooth_adapter_mac.mm",
"bluetooth_adapter_win.cc",
"bluetooth_adapter_win.h",
"bluetooth_advertisement.cc",
"bluetooth_advertisement.h",
"bluetooth_channel_mac.h",
"bluetooth_channel_mac.mm",
"bluetooth_classic_device_mac.h",
"bluetooth_classic_device_mac.mm",
"bluetooth_classic_win.cc",
"bluetooth_classic_win.h",
"bluetooth_common.h",
"bluetooth_device.cc",
"bluetooth_device.h",
"bluetooth_device_android.cc",
"bluetooth_device_android.h",
"bluetooth_device_mac.h",
"bluetooth_device_mac.mm",
"bluetooth_device_win.cc",
"bluetooth_device_win.h",
"bluetooth_discovery_filter.cc",
"bluetooth_discovery_filter.h",
"bluetooth_discovery_manager_mac.h",
"bluetooth_discovery_manager_mac.mm",
"bluetooth_discovery_session.cc",
"bluetooth_discovery_session.h",
"bluetooth_discovery_session_outcome.h",
"bluetooth_gatt_characteristic.cc",
"bluetooth_gatt_characteristic.h",
"bluetooth_gatt_connection.cc",
"bluetooth_gatt_connection.h",
"bluetooth_gatt_descriptor.cc",
"bluetooth_gatt_descriptor.h",
"bluetooth_gatt_notify_session.cc",
"bluetooth_gatt_notify_session.h",
"bluetooth_gatt_service.cc",
"bluetooth_gatt_service.h",
"bluetooth_init_win.cc",
"bluetooth_init_win.h",
"bluetooth_l2cap_channel_mac.h",
"bluetooth_l2cap_channel_mac.mm",
"bluetooth_local_gatt_characteristic.cc",
"bluetooth_local_gatt_characteristic.h",
"bluetooth_local_gatt_descriptor.cc",
"bluetooth_local_gatt_descriptor.h",
"bluetooth_local_gatt_service.cc",
"bluetooth_local_gatt_service.h",
"bluetooth_low_energy_central_manager_delegate.h",
"bluetooth_low_energy_central_manager_delegate.mm",
"bluetooth_low_energy_defs_win.cc",
"bluetooth_low_energy_defs_win.h",
"bluetooth_low_energy_device_mac.h",
"bluetooth_low_energy_device_mac.mm",
"bluetooth_low_energy_discovery_manager_mac.h",
"bluetooth_low_energy_discovery_manager_mac.mm",
"bluetooth_low_energy_peripheral_delegate.h",
"bluetooth_low_energy_peripheral_delegate.mm",
"bluetooth_low_energy_win.cc",
"bluetooth_low_energy_win.h",
"bluetooth_remote_gatt_characteristic.cc",
"bluetooth_remote_gatt_characteristic.h",
"bluetooth_remote_gatt_characteristic_android.cc",
"bluetooth_remote_gatt_characteristic_android.h",
"bluetooth_remote_gatt_characteristic_mac.h",
"bluetooth_remote_gatt_characteristic_mac.mm",
"bluetooth_remote_gatt_characteristic_win.cc",
"bluetooth_remote_gatt_characteristic_win.h",
"bluetooth_remote_gatt_descriptor.cc",
"bluetooth_remote_gatt_descriptor.h",
"bluetooth_remote_gatt_descriptor_android.cc",
"bluetooth_remote_gatt_descriptor_android.h",
"bluetooth_remote_gatt_descriptor_mac.h",
"bluetooth_remote_gatt_descriptor_mac.mm",
"bluetooth_remote_gatt_descriptor_win.cc",
"bluetooth_remote_gatt_descriptor_win.h",
"bluetooth_remote_gatt_service.cc",
"bluetooth_remote_gatt_service.h",
"bluetooth_remote_gatt_service_android.cc",
"bluetooth_remote_gatt_service_android.h",
"bluetooth_remote_gatt_service_mac.h",
"bluetooth_remote_gatt_service_mac.mm",
"bluetooth_remote_gatt_service_win.cc",
"bluetooth_remote_gatt_service_win.h",
"bluetooth_rfcomm_channel_mac.h",
"bluetooth_rfcomm_channel_mac.mm",
"bluetooth_service_record_win.cc",
"bluetooth_service_record_win.h",
"bluetooth_socket.cc",
"bluetooth_socket.h",
"bluetooth_socket_mac.h",
"bluetooth_socket_mac.mm",
"bluetooth_socket_net.cc",
"bluetooth_socket_net.h",
"bluetooth_socket_thread.cc",
"bluetooth_socket_thread.h",
"bluetooth_socket_win.cc",
"bluetooth_socket_win.h",
"bluetooth_task_manager_win.cc",
"bluetooth_task_manager_win.h",
"bluetooth_uuid.cc",
"bluetooth_uuid.h",
"string_util_icu.cc",
"string_util_icu.h",
]
defines = [ "DEVICE_BLUETOOTH_IMPLEMENTATION" ]
all_dependent_configs = [ ":bluetooth_config" ]
deps = [
"//base",
"//crypto",
"//device/bluetooth/strings",
"//device/bluetooth/uribeacon",
"//ipc",
"//net",
"//ui/base",
]
if (is_android) {
deps += [ ":jni_headers" ]
}
if (is_chromeos) {
deps += [ "//chromeos" ]
}
if (is_mac) {
libs = [
"IOBluetooth.framework",
"Foundation.framework",
]
}
if (is_win) {
libs = [
# Bthprops must be listed before BluetoothApis or else delay loading
# crashes.
"Bthprops.lib",
"BluetoothApis.lib",
"setupapi.lib",
]
}
if (is_chromeos || is_linux) {
if (use_dbus) {
sources += [
"bluez/bluetooth_adapter_bluez.cc",
"bluez/bluetooth_adapter_bluez.h",
"bluez/bluetooth_adapter_profile_bluez.cc",
"bluez/bluetooth_adapter_profile_bluez.h",
"bluez/bluetooth_advertisement_bluez.cc",
"bluez/bluetooth_advertisement_bluez.h",
"bluez/bluetooth_device_bluez.cc",
"bluez/bluetooth_device_bluez.h",
"bluez/bluetooth_gatt_characteristic_bluez.cc",
"bluez/bluetooth_gatt_characteristic_bluez.h",
"bluez/bluetooth_gatt_connection_bluez.cc",
"bluez/bluetooth_gatt_connection_bluez.h",
"bluez/bluetooth_gatt_descriptor_bluez.cc",
"bluez/bluetooth_gatt_descriptor_bluez.h",
"bluez/bluetooth_gatt_service_bluez.cc",
"bluez/bluetooth_gatt_service_bluez.h",
"bluez/bluetooth_local_gatt_characteristic_bluez.cc",
"bluez/bluetooth_local_gatt_characteristic_bluez.h",
"bluez/bluetooth_local_gatt_descriptor_bluez.cc",
"bluez/bluetooth_local_gatt_descriptor_bluez.h",
"bluez/bluetooth_local_gatt_service_bluez.cc",
"bluez/bluetooth_local_gatt_service_bluez.h",
"bluez/bluetooth_pairing_bluez.cc",
"bluez/bluetooth_pairing_bluez.h",
"bluez/bluetooth_remote_gatt_characteristic_bluez.cc",
"bluez/bluetooth_remote_gatt_characteristic_bluez.h",
"bluez/bluetooth_remote_gatt_descriptor_bluez.cc",
"bluez/bluetooth_remote_gatt_descriptor_bluez.h",
"bluez/bluetooth_remote_gatt_service_bluez.cc",
"bluez/bluetooth_remote_gatt_service_bluez.h",
"bluez/bluetooth_service_attribute_value_bluez.cc",
"bluez/bluetooth_service_attribute_value_bluez.h",
"bluez/bluetooth_service_record_bluez.cc",
"bluez/bluetooth_service_record_bluez.h",
"bluez/bluetooth_socket_bluez.cc",
"bluez/bluetooth_socket_bluez.h",
"dbus/bluetooth_adapter_client.cc",
"dbus/bluetooth_adapter_client.h",
"dbus/bluetooth_agent_manager_client.cc",
"dbus/bluetooth_agent_manager_client.h",
"dbus/bluetooth_agent_service_provider.cc",
"dbus/bluetooth_agent_service_provider.h",
"dbus/bluetooth_dbus_client_bundle.cc",
"dbus/bluetooth_dbus_client_bundle.h",
"dbus/bluetooth_device_client.cc",
"dbus/bluetooth_device_client.h",
"dbus/bluetooth_gatt_application_service_provider.cc",
"dbus/bluetooth_gatt_application_service_provider.h",
"dbus/bluetooth_gatt_application_service_provider_impl.cc",
"dbus/bluetooth_gatt_application_service_provider_impl.h",
"dbus/bluetooth_gatt_attribute_helpers.cc",
"dbus/bluetooth_gatt_attribute_helpers.h",
"dbus/bluetooth_gatt_attribute_value_delegate.cc",
"dbus/bluetooth_gatt_attribute_value_delegate.h",
"dbus/bluetooth_gatt_characteristic_client.cc",
"dbus/bluetooth_gatt_characteristic_client.h",
"dbus/bluetooth_gatt_characteristic_delegate_wrapper.cc",
"dbus/bluetooth_gatt_characteristic_delegate_wrapper.h",
"dbus/bluetooth_gatt_characteristic_service_provider.cc",
"dbus/bluetooth_gatt_characteristic_service_provider.h",
"dbus/bluetooth_gatt_characteristic_service_provider_impl.cc",
"dbus/bluetooth_gatt_characteristic_service_provider_impl.h",
"dbus/bluetooth_gatt_descriptor_client.cc",
"dbus/bluetooth_gatt_descriptor_client.h",
"dbus/bluetooth_gatt_descriptor_delegate_wrapper.cc",
"dbus/bluetooth_gatt_descriptor_delegate_wrapper.h",
"dbus/bluetooth_gatt_descriptor_service_provider.cc",
"dbus/bluetooth_gatt_descriptor_service_provider.h",
"dbus/bluetooth_gatt_descriptor_service_provider_impl.cc",
"dbus/bluetooth_gatt_descriptor_service_provider_impl.h",
"dbus/bluetooth_gatt_manager_client.cc",
"dbus/bluetooth_gatt_manager_client.h",
"dbus/bluetooth_gatt_service_client.cc",
"dbus/bluetooth_gatt_service_client.h",
"dbus/bluetooth_gatt_service_service_provider.cc",
"dbus/bluetooth_gatt_service_service_provider.h",
"dbus/bluetooth_gatt_service_service_provider_impl.cc",
"dbus/bluetooth_gatt_service_service_provider_impl.h",
"dbus/bluetooth_input_client.cc",
"dbus/bluetooth_input_client.h",
"dbus/bluetooth_le_advertisement_service_provider.cc",
"dbus/bluetooth_le_advertisement_service_provider.h",
"dbus/bluetooth_le_advertising_manager_client.cc",
"dbus/bluetooth_le_advertising_manager_client.h",
"dbus/bluetooth_media_client.cc",
"dbus/bluetooth_media_client.h",
"dbus/bluetooth_media_endpoint_service_provider.cc",
"dbus/bluetooth_media_endpoint_service_provider.h",
"dbus/bluetooth_media_transport_client.cc",
"dbus/bluetooth_media_transport_client.h",
"dbus/bluetooth_profile_manager_client.cc",
"dbus/bluetooth_profile_manager_client.h",
"dbus/bluetooth_profile_service_provider.cc",
"dbus/bluetooth_profile_service_provider.h",
"dbus/bluez_dbus_client.h",
"dbus/bluez_dbus_manager.cc",
"dbus/bluez_dbus_manager.h",
"dbus/fake_bluetooth_adapter_client.cc",
"dbus/fake_bluetooth_adapter_client.h",
"dbus/fake_bluetooth_agent_manager_client.cc",
"dbus/fake_bluetooth_agent_manager_client.h",
"dbus/fake_bluetooth_agent_service_provider.cc",
"dbus/fake_bluetooth_agent_service_provider.h",
"dbus/fake_bluetooth_device_client.cc",
"dbus/fake_bluetooth_device_client.h",
"dbus/fake_bluetooth_gatt_application_service_provider.cc",
"dbus/fake_bluetooth_gatt_application_service_provider.h",
"dbus/fake_bluetooth_gatt_characteristic_client.cc",
"dbus/fake_bluetooth_gatt_characteristic_client.h",
"dbus/fake_bluetooth_gatt_characteristic_service_provider.cc",
"dbus/fake_bluetooth_gatt_characteristic_service_provider.h",
"dbus/fake_bluetooth_gatt_descriptor_client.cc",
"dbus/fake_bluetooth_gatt_descriptor_client.h",
"dbus/fake_bluetooth_gatt_descriptor_service_provider.cc",
"dbus/fake_bluetooth_gatt_descriptor_service_provider.h",
"dbus/fake_bluetooth_gatt_manager_client.cc",
"dbus/fake_bluetooth_gatt_manager_client.h",
"dbus/fake_bluetooth_gatt_service_client.cc",
"dbus/fake_bluetooth_gatt_service_client.h",
"dbus/fake_bluetooth_gatt_service_service_provider.cc",
"dbus/fake_bluetooth_gatt_service_service_provider.h",
"dbus/fake_bluetooth_input_client.cc",
"dbus/fake_bluetooth_input_client.h",
"dbus/fake_bluetooth_le_advertisement_service_provider.cc",
"dbus/fake_bluetooth_le_advertisement_service_provider.h",
"dbus/fake_bluetooth_le_advertising_manager_client.cc",
"dbus/fake_bluetooth_le_advertising_manager_client.h",
"dbus/fake_bluetooth_media_client.cc",
"dbus/fake_bluetooth_media_client.h",
"dbus/fake_bluetooth_media_endpoint_service_provider.cc",
"dbus/fake_bluetooth_media_endpoint_service_provider.h",
"dbus/fake_bluetooth_media_transport_client.cc",
"dbus/fake_bluetooth_media_transport_client.h",
"dbus/fake_bluetooth_profile_manager_client.cc",
"dbus/fake_bluetooth_profile_manager_client.h",
"dbus/fake_bluetooth_profile_service_provider.cc",
"dbus/fake_bluetooth_profile_service_provider.h",
]
if (is_linux) {
sources += [
"dbus/dbus_bluez_manager_wrapper_linux.cc",
"dbus/dbus_bluez_manager_wrapper_linux.h",
"dbus/dbus_thread_manager_linux.cc",
"dbus/dbus_thread_manager_linux.h",
]
}
deps += [ "//dbus" ]
} else { # !use_dbus
sources += [ "bluetooth_adapter_stub.cc" ]
if (is_linux) {
sources += [
"dbus/dbus_bluez_manager_wrapper_linux.h",
"dbus/dbus_bluez_manager_wrapper_stub_linux.cc",
]
}
}
}
}
static_library("mocks") {
testonly = true
sources = [
"test/mock_bluetooth_adapter.cc",
"test/mock_bluetooth_adapter.h",
"test/mock_bluetooth_advertisement.cc",
"test/mock_bluetooth_advertisement.h",
"test/mock_bluetooth_device.cc",
"test/mock_bluetooth_device.h",
"test/mock_bluetooth_discovery_session.cc",
"test/mock_bluetooth_discovery_session.h",
"test/mock_bluetooth_gatt_characteristic.cc",
"test/mock_bluetooth_gatt_characteristic.h",
"test/mock_bluetooth_gatt_connection.cc",
"test/mock_bluetooth_gatt_connection.h",
"test/mock_bluetooth_gatt_descriptor.cc",
"test/mock_bluetooth_gatt_descriptor.h",
"test/mock_bluetooth_gatt_notify_session.cc",
"test/mock_bluetooth_gatt_notify_session.h",
"test/mock_bluetooth_gatt_service.cc",
"test/mock_bluetooth_gatt_service.h",
"test/mock_bluetooth_socket.cc",
"test/mock_bluetooth_socket.h",
]
public_deps = [
":bluetooth",
"//base",
"//net",
"//testing/gmock",
]
}
if (is_android) {
java_sources_needing_jni = [
"android/java/src/org/chromium/device/bluetooth/ChromeBluetoothAdapter.java",
"android/java/src/org/chromium/device/bluetooth/ChromeBluetoothDevice.java",
"android/java/src/org/chromium/device/bluetooth/ChromeBluetoothRemoteGattCharacteristic.java",
"android/java/src/org/chromium/device/bluetooth/ChromeBluetoothRemoteGattDescriptor.java",
"android/java/src/org/chromium/device/bluetooth/ChromeBluetoothRemoteGattService.java",
"android/java/src/org/chromium/device/bluetooth/Wrappers.java",
]
generate_jni("jni_headers") {
sources = java_sources_needing_jni
jni_package = "bluetooth"
}
android_library("java") {
java_files = java_sources_needing_jni
deps = [
"//base:base_java",
"//components/location/android:location_java",
]
}
}