#
#  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("device") {
  sources = [
    "src/controller.cc",
    "src/esco_parameters.cc",
    "src/interop.cc",
  ]

  include_dirs = [
    "//",
    "//btcore/include",
    "//hci/include",
    "//include",
    "//stack/include",
  ]

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

executable("net_test_device") {
  testonly = true
  sources = [
    "//osi/test/AllocationTestHarness.cc",
  ]

  include_dirs = [ "//" ]

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

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