# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Please do not add more entries to this list. We plan to remove
# abseil-cpp from the Fuchsia platform source tree once cobalt
# moves out-of-tree.
visibility = [
  "$cobalt_root/*",
  "//third_party/abseil-cpp/*",
  "//third_party/tink/*",
]

source_set("bits") {
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]

  public = [
    "bits.h",
    "internal/bits.h",
  ]
  deps = [
    "../base:config",
    "../base:core_headers",
  ]
}

source_set("int128") {
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]

  sources = [
    "int128.cc",
    "int128_have_intrinsic.inc",
    "int128_no_intrinsic.inc",
  ]
  public = [ "int128.h" ]
  deps = [
    ":bits",
    "../base:config",
    "../base:core_headers",
  ]
}

source_set("representation") {
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]

  public = [ "internal/representation.h" ]
  deps = [ "../base:config" ]
}
