// Copyright (C) 2017 The Android Open Source Project
//
// 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.

cc_defaults {
    name: "dynamic_sensor_defaults",

    // intended to be integrated into hal, thus vendor
    vendor: true,

    cflags: [
        "-Wall",
        "-Werror",
        "-Wextra",
    ],
    export_include_dirs: ["."],

    shared_libs: [
        "libhidparser",
    ],

    target: {
        android: {
            srcs: [
                "BaseDynamicSensorDaemon.cpp",
                "BaseSensorObject.cpp",
                "ConnectionDetector.cpp",
                "DummyDynamicAccelDaemon.cpp",
                "DynamicSensorManager.cpp",
                "HidRawDevice.cpp",
                "HidRawSensor.cpp",
                "HidRawSensorDaemon.cpp",
                "HidRawSensorDevice.cpp",
                "RingBuffer.cpp",
            ],
            shared_libs: [
                "libbase",
                "libcutils",
                "liblog",
                "libutils",
            ],
            header_libs: [
                "libhardware_headers",
                "libstagefright_foundation_headers",
            ],
        },

        host: {
            local_include_dirs: [
                "test",
                "HidUtils/test",
            ],
        },

        // host test is targeting linux host only
        darwin: {
            enabled: false,
        },
    },
}

//
// There are two ways to utilize the dynamic sensor module:
//   1. Use as an extension in an existing hal: declare dependency on libdynamic_sensor_ext shared
//      library in existing sensor hal.
//   2. Use as a standalone sensor HAL and configure multihal to combine it with sensor hal that
//      hosts other sensors: add dependency on sensors.dynamic_sensor_hal in device level makefile and
//      write multihal configuration file accordingly.
//
// Please take only one of these two options to avoid conflict over hardware resource.
//
//
// Option 1: sensor extension module
//
cc_library_shared {
    name: "libdynamic_sensor_ext",
    defaults: ["dynamic_sensor_defaults"],

    cflags: ["-DLOG_TAG=\"DynamicSensorExt\""],
}

//
// Option 2: independent sensor hal
//
cc_library_shared {
    name: "sensors.dynamic_sensor_hal",
    defaults: ["dynamic_sensor_defaults"],
    relative_install_path: "hw",

    cflags: ["-DLOG_TAG=\"DynamicSensorHal\""],

    srcs: ["sensors.cpp"],
}

//
// Host test for HidRawSensor. Test with dummy test HID descriptors.
//
cc_binary_host {
    name: "hidrawsensor_host_test",
    defaults: ["dynamic_sensor_defaults"],

    srcs: [
        "HidRawSensor.cpp",
        "BaseSensorObject.cpp",
        "HidUtils/test/TestHidDescriptor.cpp",
        "test/HidRawSensorTest.cpp",
    ],
}

//
// Host test for HidRawDevice and HidRawSensor. Test with hidraw
// device node.
//
cc_binary_host {
    name: "hidrawdevice_host_test",
    defaults: ["dynamic_sensor_defaults"],

    srcs: [
        "HidRawDevice.cpp",
        "HidRawSensor.cpp",
        "BaseSensorObject.cpp",
        "test/HidRawDeviceTest.cpp",
    ],
}