#
#  Copyright 2015 Google, Inc.
#
#  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.
#

static_library("osi") {
  sources = [
    "src/alarm.cc",
    "src/allocator.cc",
    "src/compat.cc",
    "src/config.cc",
    "src/fixed_queue.cc",
    "src/future.cc",
    "src/hash_map_utils.cc",
    "src/list.cc",
    "src/mutex.cc",
    "src/osi.cc",
    "src/properties.cc",
    "src/reactor.cc",
    "src/ringbuffer.cc",
    "src/socket.cc",

    # TODO(mcchou): Remove these sources after platform specific
    # dependencies are abstracted.
    "src/socket_utils/socket_local_client.cc",
    "src/socket_utils/socket_local_server.cc",
    "src/stack_power_telemetry.cc",
    "src/thread.cc",
    "src/wakelock.cc",

    # internal dependencies to not be used outside
    "src/internal/semaphore.cc",
  ]

  include_dirs = [
    "//bt/system/",
    "//bt/system/linux_include",
    "//bt/system/osi/include_internal",
    "//bt/system/stack/include",
  ]

  cflags = [
    "-DLIB_OSI_INTERNAL",
  ]

  deps = [
    "//bt/system/common",
    "//bt/system/gd/rust/shim:init_flags_bridge_header",
  ]

  configs += [
    "//bt/system:target_defaults",
    "//bt/system/log:log_defaults",
  ]
}

if (use.test) {
  executable("net_test_osi") {
    sources = [
      "test/alarm_test.cc",
      "test/allocator_test.cc",
      "test/config_test.cc",
      "test/future_test.cc",
      "test/hash_map_utils_test.cc",
      "test/list_test.cc",
      "test/properties_test.cc",
      "test/rand_test.cc",
      "test/reactor_test.cc",
      "test/ringbuffer_test.cc",
      "test/thread_test.cc",

      "test/internal/semaphore_test.cc",
    ]

    include_dirs = [
      "//bt/system/",
      "//bt/system/osi/include_internal",
      "//bt/system/osi/test",
    ]

    cflags = [
      "-DLIB_OSI_INTERNAL",
    ]

    deps = [
      "//bt/system/osi",
    ]

    configs += [
      "//bt/system:external_gtest_main",
      "//bt/system:external_gmock_main",
      "//bt/system:target_defaults",
    ]

    libs = [
      "pthread",
      "rt",
    ]
  }
}
