#
#  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/allocation_tracker.cc",
    "src/allocator.cc",
    "src/array.cc",
    "src/buffer.cc",
    "src/compat.cc",
    "src/config.cc",
    "src/fixed_queue.cc",
    "src/future.cc",
    "src/hash_map_utils.cc",
    "src/list.cc",
    "src/metrics_linux.cc",
    "src/mutex.cc",
    "src/osi.cc",
    "src/properties.cc",
    "src/reactor.cc",
    "src/ringbuffer.cc",
    "src/semaphore.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/thread.cc",
    "src/time.cc",
    "src/wakelock.cc",
  ]

  include_dirs = [
    "//",
    "//utils/include",
    "//stack/include",
  ]

  deps = [
    "//third_party/libchrome:base",
  ]
}

executable("net_test_osi") {
  testonly = true
  sources = [
    "test/AlarmTestHarness.cc",
    "test/AllocationTestHarness.cc",
    "test/alarm_test.cc",
    "test/allocation_tracker_test.cc",
    "test/allocator_test.cc",
    "test/array_test.cc",
    "test/config_test.cc",
    "test/future_test.cc",
    "test/hash_map_utils_test.cc",
    "test/leaky_bonded_queue_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/time_test.cc",
  ]

  include_dirs = [
    "//",
    "//osi/test",
  ]

  deps = [
    "//osi",
    "//third_party/googletest:gtest_main",
    "//third_party/googletest:gmock_main",
    "//third_party/libchrome:base",
  ]

  libs = [
    "-lpthread",
    "-lrt",
  ]
}
