#
#  Copyright (C) 2017 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("types") {
  cflags = [
     "-fvisibility=default",
  ]

  sources = [
    "raw_address.cc",
  ]

  include_dirs = [
    "//",
  ]

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

executable("types_unittests") {
  testonly = true
  sources = [
    "test/raw_address_unittest.cc",
  ]

  include_dirs = [
    "//",
  ]

  libs = [
     "-ldl",
     "-lpthread",
     "-lresolv",
     "-lrt",
     "-lz",
     "-latomic",
  ]

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