//
// 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_library_static {
    name: "android.hardware.wifi.offload@1.0-lib",
    vendor: true,
    srcs: ["Offload.cpp",
        "chre_constants.cpp",
        "chre_interface.cpp",
        "offload_server.cpp",
        "chre_interface_factory.cpp",
        "offload_status_util.cpp",
        "offload_utils.cpp",
    ],
    cflags: ["-Wall", "-Wextra", "-Werror"],
    shared_libs: [
        "libbase",
        "libhidlbase",
        "libhidltransport",
        "liblog",
        "libutils",
        "android.hardware.wifi.offload@1.0",
    ],
    whole_static_libs: [
        "chre_client",
        "wifi_offload_types",
    ]
}

cc_binary {
    name: "android.hardware.wifi.offload@1.0-service",
    relative_install_path: "hw",
    init_rc: ["android.hardware.wifi.offload@1.0-service.rc"],
    srcs: ["service.cpp"],
    cflags: ["-Wall", "-Wextra"],
    shared_libs: [
        "libbase",
        "libcutils",
        "libhidlbase",
        "libhidltransport",
        "liblog",
        "libutils",
        "android.hardware.wifi.offload@1.0",
    ],
    static_libs: [
        "android.hardware.wifi.offload@1.0-lib",
    ],
    vendor: true,
}

cc_test {
    name: "wifi-offload-service-unit-tests",
    vendor: true,
    srcs: [
        "test/main.cpp",
        "test/mock_chre_interface_callbacks.cpp",
        "test/mock_chre_interface_factory.cpp",
        "test/mock_chre_interface.cpp",
        "test/offload_server_test.cpp",
        "test/chre_interface_test.cpp",
        "test/offload_utils_test.cpp",
        "test/offload_hal_test_constants.cpp",
        "test/offload_hal_test_utils.cpp",
    ],
    local_include_dirs: [
        "test",
        ".",
    ],
    shared_libs: [
        "libbase",
        "libcutils",
        "libhidlbase",
        "libhidltransport",
        "libutils",
        "liblog",
        "android.hardware.wifi.offload@1.0",
    ],
    static_libs: [
        "libgmock",
        "libgtest",
        "android.hardware.wifi.offload@1.0-lib",
    ],
    whole_static_libs: [
        "wifi_offload_types",
    ],
}

