#
#  Copyright 2018 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.
#

static_library("common") {
  sources = [
    "message_loop_thread.cc",
    "metrics_linux.cc",
    "time_util.cc",
    "timer.cc",
  ]

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

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

executable("bt_test_common") {
  testonly = true
  sources = [
    "leaky_bonded_queue_unittest.cc",
    "state_machine_unittest.cc",
    "time_util_unittest.cc",
    "timer_unittest.cc"
  ]

  include_dirs = [
    "//",
    "//common",
  ]

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

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