#
#  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("btcore") {
  sources = [
    "src/bdaddr.c",
    "src/device_class.c",
    "src/hal_util.c",
    "src/module.c",
    "src/property.c",
    "src/uuid.c",
    "src/osi_module.c",
  ]

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

executable("net_test_btcore") {
  testonly = true
  sources = [
    "test/bdaddr_test.cpp",
    "test/device_class_test.cpp",
    "test/property_test.cpp",
    "test/uuid_test.cpp",
    "//osi/test/AllocationTestHarness.cpp",
  ]

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

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

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