#
#  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/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/wakelock.cc",
  ]

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

  deps = [
    "//common",
    "//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/list_test.cc",
    "test/properties_test.cc",
    "test/rand_test.cc",
    "test/reactor_test.cc",
    "test/ringbuffer_test.cc",
    "test/thread_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",
  ]
}
