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

source_set("synchronization") {
  sources = [
    "debug_thread_checker.h",
    "pipeline.cc",
    "pipeline.h",
    "semaphore.cc",
    "semaphore.h",
  ]

  public_configs = [
    "$flutter_root:config",
  ]

  public_deps = [
    "$flutter_root/glue",
    "//garnet/public/lib/fxl",
  ]
}

executable("synchronization_unittests") {
  testonly = true

  sources = [
    "semaphore_unittest.cc",
  ]

  deps = [
    ":synchronization",
    "$flutter_root/testing",
    "//third_party/dart/runtime:libdart_jit",
  ]
}
