# Copyright 2021 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/components.gni")
import("//build/rust/rustc_library.gni")

rustc_library("flatland-frame-scheduling-lib") {
  edition = "2021"
  with_unit_tests = true

  deps = [
    "//sdk/fidl/fuchsia.scenic.scheduling:fuchsia.scenic.scheduling_rust",
    "//sdk/fidl/fuchsia.ui.composition:fuchsia.ui.composition_rust",
    "//src/lib/fuchsia-async",
    "//src/lib/trace/rust:trace",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:async-trait",
  ]

  test_deps = [ "//third_party/rust_crates:assert_matches" ]

  sources = [
    "src/lib.rs",
    "src/throughput_scheduler.rs",
  ]
}

source_set("simple_present") {
  sources = [
    "src/simple_present.cc",
    "src/simple_present.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.ui.composition:fuchsia.ui.composition_hlcpp",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/sys/cpp:cpp",
    "//sdk/lib/syslog/cpp",
  ]
}

fuchsia_unittest_package("flatland-frame-scheduling-lib-tests") {
  deps = [ ":flatland-frame-scheduling-lib_test" ]
}

group("tests") {
  testonly = true
  deps = [ ":flatland-frame-scheduling-lib-tests" ]
}
