# 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 = [
    "pipeline.cc",
    "pipeline.h",
    "semaphore.cc",
    "semaphore.h",
  ]

  public_configs = [ "$flutter_root:config" ]

  public_deps = [
    "$flutter_root/fml",
  ]
}

executable("synchronization_unittests") {
  testonly = true

  sources = [
    "semaphore_unittest.cc",
  ]

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