# Copyright 2019 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("$zx_build/public/gn/migrated_targets.gni")

zx_library("sync") {
  sdk = "static"
  sdk_publishable = true
  sdk_headers = [
    "lib/sync/internal/condition-template.h",
    "lib/sync/internal/mutex-internal.h",
    "lib/sync/completion.h",
    "lib/sync/condition.h",
    "lib/sync/mutex.h",
  ]
  sources = [
    "completion.c",
    "condition.cc",
    "mutex.c",
  ]
  deps = [
    "$zx/system/ulib/zircon",
    "$zx/system/ulib/zircon-internal",
  ]

  if (toolchain.base_environment == "user") {
    # This code is used in early startup, where safe-stack setup is not
    # ready yet.
    configs += [ "$zx_build_config:no_sanitizers" ]
  }
}
