/*
 * 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.
 */

package {
    default_applicable_licenses: ["system_chre_license"],
}

// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
// See: http://go/android-license-faq
license {
    name: "system_chre_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-BSD",
    ],
    license_text: [
        "NOTICE",
    ],
}

cc_library_static {
    name: "chre_client",
    vendor: true,
    export_include_dirs: [
        "host/common/include",
        "platform/shared/include",
        "util/include",
    ],
    srcs: [
        "host/common/fragmented_load_transaction.cc",
        "host/common/host_protocol_host.cc",
        "host/common/socket_client.cc",
        "platform/shared/host_protocol_common.cc",
    ],
    header_libs: ["chre_flatbuffers"],
    export_header_lib_headers: ["chre_flatbuffers"],
    shared_libs: [
        "libcutils",
        "liblog",
        "libutils",
    ],
    cflags: ["-Wall", "-Werror"],
}

cc_binary {
    name: "chre_test_client",
    vendor: true,
    local_include_dirs: [
        "chre_api/include/chre_api",
        "util/include",
    ],
    srcs: [
        "host/common/test/chre_test_client.cc",
    ],
    cflags: ["-Wall", "-Werror"],
    shared_libs: [
        "libcutils",
        "liblog",
        "libutils",
    ],
    static_libs: ["chre_client"],
}

cc_binary {
    name: "chre_power_test_client",
    vendor: true,
    local_include_dirs: [
        "chre_api/include/chre_api",
        "util/include",
        "apps/power_test/common/include",
    ],
    srcs: [
        "host/common/test/power_test/chre_power_test_client.cc",
    ],
    cflags: ["-Wall", "-Werror"],
    shared_libs: [
        "libcutils",
        "liblog",
        "libutils",
    ],
    static_libs: ["chre_client"],
}

cc_test {
    name: "audio_stress_test",
    vendor: true,
    local_include_dirs: [
        "chre_api/include/chre_api",
        "util/include",
    ],
    srcs: [
        "host/common/audio_stress_test/audio_stress_test.cc",
    ],
    cflags: ["-Wall", "-Werror"],
    shared_libs: [
        "libcutils",
        "liblog",
        "libutils",
    ],
    static_libs: ["chre_client"],
    gtest: false,
}

cc_library_headers {
    name: "android.hardware.contexthub@1.X-shared-impl",
    vendor: true,
    export_include_dirs: ["host/hal_generic/common/"],
    cflags: ["-Wall", "-Werror"],
    shared_libs: [
        "libcutils",
        "liblog",
        "libhidlbase",
        "libutils",
        "android.hardware.contexthub@1.0",
    ],
    static_libs: ["chre_client"],
}

cc_library_shared {
    name: "android.hardware.contexthub@1.0-impl.generic",
    vendor: true,
    relative_install_path: "hw",
    srcs: [
        "host/hal_generic/V1_0/generic_context_hub_v1_0.cc",
        "host/hal_generic/common/hal_chre_socket_connection.cc",
        "host/hal_generic/common/permissions_util.cc",
    ],
    cflags: ["-Wall", "-Werror"],
    header_libs: [
        "android.hardware.contexthub@1.X-shared-impl",
        "android.hardware.contexthub@1.X-common-utils",
    ],
    shared_libs: [
        "libcutils",
        "liblog",
        "libhidlbase",
        "libutils",
        "android.hardware.contexthub@1.0",
        "android.hardware.contexthub@1.1",
        "android.hardware.contexthub@1.2",
    ],
    static_libs: ["chre_client"],
}

cc_binary {
    name: "android.hardware.contexthub@1.1-service.generic",
    defaults: ["hidl_defaults"],
    vendor: true,
    relative_install_path: "hw",
    srcs: [
        "host/hal_generic/V1_1/generic_context_hub_v1_1.cc",
        "host/hal_generic/V1_1/service.cc",
        "host/hal_generic/common/context_hub_settings_util.cc",
        "host/hal_generic/common/hal_chre_socket_connection.cc",
        "host/hal_generic/common/permissions_util.cc",
    ],
    init_rc: ["host/hal_generic/V1_1/android.hardware.contexthub@1.1-service-generic.rc"],
    cflags: ["-Wall", "-Werror"],
    header_libs: [
        "android.hardware.contexthub@1.X-shared-impl",
        "android.hardware.contexthub@1.X-common-utils",
    ],
    shared_libs: [
        "libcutils",
        "liblog",
        "libhidlbase",
        "libutils",
        "android.hardware.contexthub@1.0",
        "android.hardware.contexthub@1.1",
        "android.hardware.contexthub@1.2",
    ],
    static_libs: ["chre_client"],
    vintf_fragments: ["host/hal_generic/V1_1/android.hardware.contexthub@1.1-generic.xml"],
}

cc_binary {
    name: "android.hardware.contexthub@1.2-service.generic",
    defaults: ["hidl_defaults"],
    vendor: true,
    relative_install_path: "hw",
    srcs: [
        "host/hal_generic/V1_2/generic_context_hub_v1_2.cc",
        "host/hal_generic/V1_2/service.cc",
        "host/hal_generic/common/context_hub_settings_util.cc",
        "host/hal_generic/common/hal_chre_socket_connection.cc",
        "host/hal_generic/common/permissions_util.cc",
    ],
    init_rc: ["host/hal_generic/V1_2/android.hardware.contexthub@1.2-service-generic.rc"],
    cflags: ["-Wall", "-Werror"],
    header_libs: [
        "android.hardware.contexthub@1.X-shared-impl",
        "android.hardware.contexthub@1.X-common-utils",
    ],
    shared_libs: [
        "libcutils",
        "liblog",
        "libhidlbase",
        "libutils",
        "android.hardware.contexthub@1.0",
        "android.hardware.contexthub@1.1",
        "android.hardware.contexthub@1.2",
    ],
    static_libs: ["chre_client"],
    vintf_fragments: ["host/hal_generic/V1_2/android.hardware.contexthub@1.2-generic.xml"],
}

cc_library_static {
    name: "event_logger",
    vendor: true,
    host_supported: true,
    srcs: [
        "host/hal_generic/aidl/event_logger.cc",
    ],
    local_include_dirs: [
        "util/include",
        "host/common/include",
    ],
    shared_libs: [
        "android.hardware.contexthub-V1-ndk",
        "libcutils",
        "libutils",
    ],
    header_libs: [
        "chre_flatbuffers",
    ],
    cflags: [
        "-Wall",
        "-Werror",
        "-DCHRE_IS_HOST_BUILD",
    ],
}

cc_test_host {
    name: "hal_unit_tests",
    vendor: true,
    srcs: [
        "host/test/**/*_test.cc",
    ],
    local_include_dirs: [
        "util/include",
        "host/common/include",
    ],
    static_libs: [
        "android.hardware.contexthub-V1-ndk",
        "event_logger",
        "libgmock",
    ],
    shared_libs: [
        "libcutils",
        "libutils",
    ],
    header_libs: [
        "chre_flatbuffers",
    ],
    defaults: [
        "chre_linux_cflags",
    ],
    cflags: [
        "-Wall",
        "-Werror",
        "-DCHRE_IS_HOST_BUILD",
    ],
}

cc_binary {
    name: "android.hardware.contexthub-service.generic",
    defaults: ["hidl_defaults"],
    vendor: true,
    relative_install_path: "hw",
    srcs: [
        "host/hal_generic/aidl/generic_context_hub_aidl.cc",
        "host/hal_generic/aidl/service.cc",
        "host/hal_generic/common/hal_chre_socket_connection.cc",
        "host/hal_generic/common/permissions_util.cc",
    ],
    local_include_dirs: [
        "host/hal_generic/common/",
        "util/include",
    ],
    init_rc: ["host/hal_generic/aidl/android.hardware.contexthub-service.generic.rc"],
    cflags: [
        "-Wall",
        "-Werror",
        "-DCHRE_MESSAGE_TO_HOST_MAX_SIZE=4000", // Needed to import CHRE APIs.
        "-DCHRE_HAL_SOCKET_METRICS_ENABLED",
        "-DCHRE_IS_HOST_BUILD",
    ],
    shared_libs: [
        "android.frameworks.stats-V1-ndk",
        "libcutils",
        "liblog",
        "libprotobuf-cpp-lite",
        "libutils",
        "libbase",
        "libbinder_ndk",
        "android.hardware.contexthub-V1-ndk",
        "//hardware/google/pixel:pixelatoms-cpp",
    ],
    // TODO(b/217754528): Re-enable this module
    enabled: false,
    header_libs: [
        "chre_api",
    ],
    static_libs: [
        "chre_client",
        "event_logger",
    ],
    vintf_fragments: ["host/hal_generic/aidl/android.hardware.contexthub-service.generic.xml"],
}

cc_library_headers {
    name: "chre_api",
    vendor: true,
    export_include_dirs: [
        "chre_api/include/chre_api",
        "chre_api/include",
    ],
    host_supported: true,
}

cc_library_headers {
    name: "chre_flatbuffers",
    vendor: true,
    host_supported: true,
    export_include_dirs: [
        "external/flatbuffers/include",
        "host/common/include",
        "platform/shared/include",
        "util/include",
    ],
}

cc_library_headers {
    name: "chre_pal",
    vendor: true,
    export_include_dirs: [
        "pal/include",
    ],
    header_libs: [
        "chre_api",
    ],
    export_header_lib_headers: [
        "chre_api",
    ],
    host_supported: true,
}

cc_library_headers {
    name: "chre_test_common",
    vendor: true,
    export_include_dirs: [
        "test/common/include",
    ],
    host_supported: true,
}

cc_library_static {
    name: "chre_pal_linux",
    vendor: true,
    srcs: [
        "platform/shared/pal_system_api.cc",
        "platform/linux/assert.cc",
        "platform/linux/fatal_error.cc",
        "platform/linux/memory.cc",
        "platform/linux/pal_gnss.cc",
        "platform/linux/pal_nan.cc",
        "platform/linux/pal_wifi.cc",
        "platform/linux/pal_wwan.cc",
        "platform/linux/platform_log.cc",
        "platform/linux/system_time.cc",
    ],
    export_include_dirs: [
        "platform/shared/include",
        "platform/include",
        "platform/linux/include",
        "util/include",
    ],
    header_libs: [
        "chre_pal",
    ],
    static_libs: [
        "libgtest",
        "libgmock",
    ],
    defaults: [
        "chre_linux_cflags",
    ],
    host_supported: true,
}

cc_test_host {
    name: "chre_unit_tests",
    srcs: [
        "core/tests/**/*.cc",
        "pal/tests/**/*_test.cc",
        "pal/util/tests/**/*.cc",
        "pal/util/wifi_pal_convert.c",
        "pal/util/wifi_scan_cache.c",
        "platform/tests/**/*.cc",
        "util/tests/**/*.cc",
    ],
    exclude_srcs: [
        // Exclude slow PAL tests.
        "pal/tests/src/gnss_pal_impl_test.cc",
    ],
    local_include_dirs: [
        "chre_api/include",
        "chre_api/include/chre_api",
        "core/include",
        "pal/include",
        "pal/tests/include",
        "pal/util/include",
        "platform/include",
        "platform/linux/include",
        "platform/shared/include",
        "util/include",
    ],
    cflags: [
        "-DCHRE_MESSAGE_TO_HOST_MAX_SIZE=4096",
        "-DCHRE_MINIMUM_LOG_LEVEL=CHRE_LOG_LEVEL_DEBUG",
        "-DCHRE_ASSERTIONS_ENABLED=true",
        "-DCHRE_FILENAME=__FILE__",
        "-DGTEST",
    ],
    static_libs: [
        "chre_linux",
        "libgmock",
    ],
    sanitize: {
        address: true,
    },
}

cc_test_host {
    name: "chre_simulation_tests",
    srcs: [
        "test/simulation/*.cc",
    ],
    local_include_dirs: [
        "test/simulation/inc",
        "platform/shared",
    ],
    static_libs: [
        "chre_linux",
        "chre_pal_linux",
    ],
    defaults: [
        "chre_linux_cflags",
    ],
    sanitize: {
        address: true,
    },
}

cc_library_static {
    name: "chre_linux",
    vendor: true,
    srcs: [
        "core/audio_request_manager.cc",
        "core/ble_request_manager.cc",
        "core/ble_request_multiplexer.cc",
        "core/ble_request.cc",
        "core/debug_dump_manager.cc",
        "core/event_loop_manager.cc",
        "core/event_loop.cc",
        "core/event_ref_queue.cc",
        "core/event.cc",
        "core/gnss_manager.cc",
        "core/host_comms_manager.cc",
        "core/host_notifications.cc",
        "core/init.cc",
        "core/nanoapp.cc",
        "core/sensor_request_manager.cc",
        "core/sensor_request_multiplexer.cc",
        "core/sensor_request.cc",
        "core/sensor_type_helpers.cc",
        "core/sensor_type.cc",
        "core/sensor.cc",
        "core/settings.cc",
        "core/timer_pool.cc",
        "core/wifi_request_manager.cc",
        "core/wifi_scan_request.cc",
        "platform/linux/assert.cc",
        "platform/linux/context.cc",
        "platform/linux/fatal_error.cc",
        "platform/linux/host_link.cc",
        "platform/linux/memory_manager.cc",
        "platform/linux/memory.cc",
        "platform/linux/pal_audio.cc",
        "platform/linux/pal_ble.cc",
        "platform/linux/pal_gnss.cc",
        "platform/linux/pal_nan.cc",
        "platform/linux/pal_sensor.cc",
        "platform/linux/pal_wifi.cc",
        "platform/linux/platform_debug_dump_manager.cc",
        "platform/linux/platform_log.cc",
        "platform/linux/platform_nanoapp.cc",
        "platform/linux/platform_pal.cc",
        "platform/linux/platform_sensor_type_helpers.cc",
        "platform/linux/platform_sensor.cc",
        "platform/linux/power_control_manager.cc",
        "platform/linux/system_time.cc",
        "platform/linux/system_timer.cc",
        "platform/linux/testing/platform_audio.cc",
        "platform/shared/chre_api_audio.cc",
        "platform/shared/chre_api_ble.cc",
        "platform/shared/chre_api_core.cc",
        "platform/shared/chre_api_gnss.cc",
        "platform/shared/chre_api_re.cc",
        "platform/shared/chre_api_sensor.cc",
        "platform/shared/chre_api_user_settings.cc",
        "platform/shared/chre_api_wifi.cc",
        "platform/shared/log_buffer.cc",
        "platform/shared/memory_manager.cc",
        "platform/shared/pal_system_api.cc",
        "platform/shared/platform_ble.cc",
        "platform/shared/platform_gnss.cc",
        "platform/shared/platform_sensor_manager.cc",
        "platform/shared/platform_wifi.cc",
        "platform/shared/system_time.cc",
        "platform/shared/version.cc",
        "util/**/*.cc",
    ],
    // TODO(b/217952682) Exclude pigweed because it can't be built via
    // Android.bp
    exclude_srcs: [
        "util/pigweed/*.cc",
        "util/tests/**/*",
    ],
    export_include_dirs: [
        "chre_api/include",
        "chre_api/include/chre_api",
        "core/include",
        "pal/include",
        "pal/util/include",
        "platform/linux/include",
        "platform/linux/testing/include",
        "platform/shared/include",
        "platform/include",
        "util/include",
    ],
    header_libs: [
        "chre_api",
    ],
    defaults: [
        "chre_linux_cflags",
    ],
    static_libs: [
        "libgtest",
        "libgmock",
    ],
    host_supported: true,
}

cc_defaults {
   name: "chre_linux_cflags",
   cflags: [
        "-DCHRE_MESSAGE_TO_HOST_MAX_SIZE=4096",
        "-DCHRE_MINIMUM_LOG_LEVEL=CHRE_LOG_LEVEL_DEBUG",
        "-DCHRE_ASSERTIONS_ENABLED=true",
        "-DCHRE_FILENAME=__FILE__",
        "-DGTEST",
        "-DCHRE_FIRST_SUPPORTED_API_VERSION=CHRE_API_VERSION_1_1",
        "-DCHRE_AUDIO_SUPPORT_ENABLED",
        "-DCHRE_BLE_SUPPORT_ENABLED",
        "-DCHRE_GNSS_SUPPORT_ENABLED",
        "-DCHRE_SENSORS_SUPPORT_ENABLED",
        "-DCHRE_WIFI_SUPPORT_ENABLED",
        "-DCHRE_WIFI_NAN_SUPPORT_ENABLED",
    ],
}

subdirs = [
    "apps/wifi_offload",
]
