# 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.

import("//build/fuzzing/fuzzer.gni")

###############################################################################
# AGGREGATE LIBRARIES

source_set("lib") {
  public_deps = [
    ":optional",
    ":slice",
    ":status",
    ":time",
  ]
}

source_set("tests") {
  testonly = true
  deps = [
    ":callback_test",
    ":internal_list_test",
    ":once_fn_test",
    ":optional_test",
    ":slice_test",
    ":status_test",
  ]
}

###############################################################################

# bandwidth
source_set("bandwidth") {
  sources = [
    "bandwidth.h",
  ]
  deps = [
    ":time",
  ]
}

# callback
source_set("callback") {
  sources = [
    "callback.h",
  ]
  deps = [
    ":status",
  ]
}

source_set("callback_test") {
  testonly = true
  sources = [
    "callback_test.cc",
  ]
  deps = [
    ":callback",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

# closed_ptr
source_set("closed_ptr") {
  sources = [
    "closed_ptr.h",
  ]
}

# internal_list
source_set("internal_list") {
  sources = [
    "internal_list.h",
  ]
}

source_set("internal_list_fuzzer_helpers") {
  sources = [
    "internal_list_fuzzer_helpers.h",
  ]
  deps = [
    ":internal_list",
  ]
}

source_set("internal_list_test") {
  testonly = true
  sources = [
    "internal_list_test.cc",
  ]
  deps = [
    ":internal_list",
    ":internal_list_fuzzer_helpers",
    "//third_party/googletest:gtest",
  ]
}

fuzz_target("internal_list_fuzzer") {
  testonly = true
  sources = [
    "internal_list_fuzzer.cc",
  ]
  deps = [
    ":internal_list_fuzzer_helpers",
  ]
}

# lazy_slice
source_set("lazy_slice") {
  sources = [
    "lazy_slice.h",
  ]
  deps = [
    ":once_fn",
    ":slice",
  ]
}

# manual_constructor
source_set("manual_constructor") {
  sources = [
    "manual_constructor.h",
  ]
}

# once_fn
source_set("once_fn") {
  sources = [
    "once_fn.h",
  ]
}

source_set("once_fn_test") {
  testonly = true
  sources = [
    "once_fn_test.cc",
  ]
  deps = [
    ":once_fn",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

# optional
source_set("optional") {
  sources = [
    "optional.h",
  ]
  deps = [
    ":manual_constructor",
  ]
}

source_set("optional_test") {
  testonly = true
  sources = [
    "optional_test.cc",
  ]
  deps = [
    ":optional",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

# slice
source_set("slice") {
  sources = [
    "slice.cc",
    "slice.h",
  ]
  deps = [
    ":optional",
  ]
}

source_set("slice_test") {
  testonly = true
  sources = [
    "slice_test.cc",
  ]
  deps = [
    ":slice",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

# status
source_set("status") {
  sources = [
    "status.cc",
    "status.h",
  ]
  deps = []
  if (!is_fuchsia) {
    deps += [ "//zircon/system/public" ]
  }
}

source_set("status_test") {
  testonly = true
  sources = [
    "status_test.cc",
  ]
  deps = [
    ":status",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

# time
source_set("time") {
  sources = [
    "time.h",
  ]
}
