#
#  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 = [
    "address_obfuscator.cc",
    "message_loop_thread.cc",
    "metric_id_allocator.cc",
    "metrics_linux.cc",
    "once_timer.cc",
    "os_utils.cc",
    "repeating_timer.cc",
    "time_util.cc",
  ]

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

  deps = [
    "//bt:libbt-platform-protos-lite",
    "//bt/gd/rust/shim:init_flags_bridge_header",
  ]

  configs += [ "//bt:target_defaults" ]
}

if (use.test) {
  executable("bluetooth_test_common") {
    sources = [
      "leaky_bonded_queue_unittest.cc",
      "state_machine_unittest.cc",
      "time_util_unittest.cc",
    ]

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

    deps = [ "//bt/common" ]

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

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