#
# Copyright (C) 2015 Google
#
# 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.
#
LOCAL_PATH:= $(call my-dir)
#
# Workaround for libchrome and -DNDEBUG usage.
#
# Test whether the original HOST_GLOBAL_CFLAGS and
# TARGET_GLOBAL_CFLAGS contain -DNDEBUG .
# This is needed as a workaround to make sure that
# libchrome and local files calling logging::InitLogging()
# are consistent with the usage of -DNDEBUG .
# ========================================================
ifneq (,$(findstring NDEBUG,$(HOST_GLOBAL_CFLAGS)))
btservice_orig_HOST_NDEBUG := -DBT_LIBCHROME_NDEBUG
else
btservice_orig_HOST_NDEBUG :=
endif
ifneq (,$(findstring NDEBUG,$(TARGET_GLOBAL_CFLAGS)))
btservice_orig_TARGET_NDEBUG := -DBT_LIBCHROME_NDEBUG
else
btservice_orig_TARGET_NDEBUG :=
endif
# Source variables
# ========================================================
btserviceCommonSrc := \
common/bluetooth/adapter_state.cpp \
common/bluetooth/advertise_data.cpp \
common/bluetooth/advertise_settings.cpp \
common/bluetooth/gatt_identifier.cpp \
common/bluetooth/scan_filter.cpp \
common/bluetooth/scan_result.cpp \
common/bluetooth/scan_settings.cpp \
common/bluetooth/util/address_helper.cpp \
common/bluetooth/util/atomic_string.cpp \
common/bluetooth/uuid.cpp
btserviceCommonBinderSrc := \
common/bluetooth/binder/IBluetooth.cpp \
common/bluetooth/binder/IBluetoothCallback.cpp \
common/bluetooth/binder/IBluetoothGattClient.cpp \
common/bluetooth/binder/IBluetoothGattClientCallback.cpp \
common/bluetooth/binder/IBluetoothGattServer.cpp \
common/bluetooth/binder/IBluetoothGattServerCallback.cpp \
common/bluetooth/binder/IBluetoothLowEnergy.cpp \
common/bluetooth/binder/IBluetoothLowEnergyCallback.cpp \
common/bluetooth/binder/parcel_helpers.cpp
btserviceDaemonSrc := \
adapter.cpp \
daemon.cpp \
gatt_client.cpp \
gatt_server.cpp \
gatt_server_old.cpp \
hal/gatt_helpers.cpp \
hal/bluetooth_gatt_interface.cpp \
hal/bluetooth_interface.cpp \
ipc/ipc_handler.cpp \
ipc/ipc_manager.cpp \
logging_helpers.cpp \
low_energy_client.cpp \
settings.cpp
btserviceLinuxSrc := \
ipc/ipc_handler_linux.cpp \
ipc/linux_ipc_host.cpp
btserviceBinderDaemonImplSrc := \
ipc/binder/bluetooth_binder_server.cpp \
ipc/binder/bluetooth_gatt_client_binder_server.cpp \
ipc/binder/bluetooth_gatt_server_binder_server.cpp \
ipc/binder/bluetooth_low_energy_binder_server.cpp \
ipc/binder/interface_with_instances_base.cpp \
ipc/binder/ipc_handler_binder.cpp \
btserviceBinderDaemonSrc := \
$(btserviceCommonBinderSrc) \
$(btserviceBinderDaemonImplSrc)
btserviceCommonIncludes := \
$(LOCAL_PATH)/../ \
$(LOCAL_PATH)/common
# Main unit test sources. These get built for host and target.
# ========================================================
btserviceBaseTestSrc := \
hal/fake_bluetooth_gatt_interface.cpp \
hal/fake_bluetooth_interface.cpp \
test/adapter_unittest.cpp \
test/advertise_data_unittest.cpp \
test/fake_hal_util.cpp \
test/gatt_client_unittest.cpp \
test/gatt_identifier_unittest.cpp \
test/gatt_server_unittest.cpp \
test/low_energy_client_unittest.cpp \
test/settings_unittest.cpp \
test/util_unittest.cpp \
test/uuid_unittest.cpp
# Native system service for target
# ========================================================
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
$(btserviceBinderDaemonSrc) \
$(btserviceCommonSrc) \
$(btserviceLinuxSrc) \
$(btserviceDaemonSrc) \
main.cpp
LOCAL_C_INCLUDES += $(btserviceCommonIncludes)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := bluetoothtbd
LOCAL_REQUIRED_MODULES = bluetooth.default
LOCAL_STATIC_LIBRARIES += libbtcore
LOCAL_SHARED_LIBRARIES += \
libbinder \
libchrome \
libcutils \
libhardware \
liblog \
libutils
LOCAL_INIT_RC := bluetoothtbd.rc
LOCAL_CFLAGS += $(bluetooth_CFLAGS) $(btservice_orig_TARGET_NDEBUG)
LOCAL_CONLYFLAGS += $(bluetooth_CONLYFLAGS)
LOCAL_CPPFLAGS += $(bluetooth_CPPFLAGS)
include $(BUILD_EXECUTABLE)
# Native system service unit tests for host
# ========================================================
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
$(btserviceBaseTestSrc) \
$(btserviceCommonSrc) \
$(btserviceDaemonSrc) \
test/main.cpp \
test/stub_ipc_handler_binder.cpp
ifeq ($(HOST_OS),linux)
LOCAL_SRC_FILES += \
$(btserviceLinuxSrc) \
test/ipc_linux_unittest.cpp
LOCAL_LDLIBS += -lrt
else
LOCAL_SRC_FILES += \
test/stub_ipc_handler_linux.cpp
endif
LOCAL_C_INCLUDES += $(btserviceCommonIncludes)
LOCAL_MODULE_TAGS := debug tests
LOCAL_MODULE := bluetoothtbd-host_test
LOCAL_SHARED_LIBRARIES += libchrome
LOCAL_STATIC_LIBRARIES += libgmock_host libgtest_host liblog
LOCAL_CFLAGS += $(bluetooth_CFLAGS) $(btservice_orig_HOST_NDEBUG)
LOCAL_CONLYFLAGS += $(bluetooth_CONLYFLAGS)
LOCAL_CPPFLAGS += $(bluetooth_CPPFLAGS)
include $(BUILD_HOST_NATIVE_TEST)
# Native system service unit tests for target.
# This includes Binder related tests that can only be run
# on target.
# ========================================================
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
$(btserviceBaseTestSrc) \
$(btserviceBinderDaemonSrc) \
$(btserviceCommonSrc) \
$(btserviceDaemonSrc) \
test/main.cpp \
test/parcel_helpers_unittest.cpp
LOCAL_C_INCLUDES += $(btserviceCommonIncludes)
LOCAL_MODULE_TAGS := debug tests
LOCAL_MODULE := bluetoothtbd_test
LOCAL_SHARED_LIBRARIES += \
libbinder \
libchrome \
libutils
LOCAL_STATIC_LIBRARIES += libgmock libgtest liblog
LOCAL_CFLAGS += $(bluetooth_CFLAGS) $(btservice_orig_TARGET_NDEBUG)
LOCAL_CONLYFLAGS += $(bluetooth_CONLYFLAGS)
LOCAL_CPPFLAGS += $(bluetooth_CPPFLAGS)
include $(BUILD_NATIVE_TEST)
# Client library for interacting with Bluetooth daemon
# This is a static library for target.
# ========================================================
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
$(btserviceCommonSrc) \
$(btserviceCommonBinderSrc)
LOCAL_C_INCLUDES += $(btserviceCommonIncludes)
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/common
LOCAL_MODULE := libbluetooth-client
LOCAL_SHARED_LIBRARIES += libbinder libchrome libutils
LOCAL_CFLAGS += $(bluetooth_CFLAGS) $(btservice_orig_TARGET_NDEBUG)
LOCAL_CONLYFLAGS += $(bluetooth_CONLYFLAGS)
LOCAL_CPPFLAGS += $(bluetooth_CPPFLAGS)
include $(BUILD_STATIC_LIBRARY)
# Native system service CLI for target
# ========================================================
include $(CLEAR_VARS)
LOCAL_SRC_FILES := client/main.cpp
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := bluetooth-cli
LOCAL_STATIC_LIBRARIES += libbluetooth-client
LOCAL_SHARED_LIBRARIES += \
libbinder \
libchrome \
libutils
LOCAL_CFLAGS += $(bluetooth_CFLAGS) $(btservice_orig_TARGET_NDEBUG)
LOCAL_CONLYFLAGS += $(bluetooth_CONLYFLAGS)
LOCAL_CPPFLAGS += $(bluetooth_CPPFLAGS)
include $(BUILD_EXECUTABLE)
# Heart Rate GATT service example for target
# ========================================================
# TODO(armansito): Move this into a new makefile under examples/ once we build
# a client static library that the examples can depend on.
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
example/heart_rate/heart_rate_server.cpp \
example/heart_rate/server_main.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := bt-example-hr-server
LOCAL_STATIC_LIBRARIES += libbluetooth-client
LOCAL_SHARED_LIBRARIES += \
libbinder \
libchrome \
libutils
LOCAL_CFLAGS += $(bluetooth_CFLAGS) $(btservice_orig_TARGET_NDEBUG)
LOCAL_CONLYFLAGS += $(bluetooth_CONLYFLAGS)
LOCAL_CPPFLAGS += $(bluetooth_CPPFLAGS)
include $(BUILD_EXECUTABLE)