#
#  Copyright (C) 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.c",
    "src/allocation_tracker.cc",
    "src/allocator.c",
    "src/array.c",
    "src/buffer.c",
    "src/compat.c",
    "src/config.c",
    "src/data_dispatcher.cc",
    "src/eager_reader.c",
    "src/fixed_queue.c",
    "src/future.c",
    "src/hash_map_utils.cc",
    "src/list.c",
    "src/metrics_linux.cc",
    "src/mutex.c",
    "src/osi.c",
    "src/properties.c",
    "src/reactor.c",
    "src/ringbuffer.c",
    "src/semaphore.c",
    "src/socket.c",

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

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

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/data_dispatcher_test.cc",
    "test/eager_reader_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/time_test.cc",
  ]

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

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

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