# 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/config/standard.gni")
import("$zx_build/public/gn/zbi.gni")

assert(current_toolchain != default_toolchain)
assert(current_cpu != "")

# TODO(BLD-353): This is all temporary hacks for integrating with
# the legacy Fuchsia GN build.  This file should not exist at all.

group("ulib") {
  testonly = true
  deps = [
    "$zx/system/dev/audio/lib",
    "$zx/system/dev/lib",
    "$zx/third_party/ulib",
    "abs_clock",
    "affine",
    "async",
    "async:async-cpp",
    "async:async-default",
    "async-loop",
    "async-loop:async-loop-cpp",
    "async-loop:async-loop-default",
    "async-testing",
    "audio-driver-proto",
    "audio-proto-utils",
    "audio-utils",
    "backtrace-request",
    "bitmap",
    "blktest",
    "blobfs",
    "block-client",
    "boot-args",
    "bootfs",
    "c",
    "c:crt1",
    "chromeos-disk-setup",
    "closure-queue",
    "cmdline",
    "cobalt-client",
    "ddk",
    "ddktl",
    "debugdata",
    "devmgr-integration-test",
    "devmgr-launcher",
    "digest",
    "disk-inspector",
    "dispatcher-pool",
    "driver",
    "driver-info",
    "driver-integration-test",
    "driver-unit-test",
    "edid",
    "elf-psabi",
    "elf-search",
    "elfload",
    "explicit-memory",
    "fbl",
    "fdio",
    "ffl",
    "fidl",
    "fidl:fidl-llcpp",
    "fidl:fidl_base",
    "fidl-async",
    "fidl-async:fidl-async-cpp",
    "fidl-async-2",
    "fidl-utils",
    "fit",
    "framebuffer",
    "fs",
    "fs-management",
    "fs-test-utils",
    "fs/journal",
    "fs/metrics",
    "fs/transaction",
    "ftl",
    "fvm",
    "fvm/test:fvm-devices",
    "fzl",
    "gfx",
    "gfx-font-data",
    "gpt",
    "hid",
    "hid-parser",
    "hwreg",
    "image-format",
    "image-format:image-format-llcpp",
    "inet6",
    "inet6:netifc-discover",
    "inspect",
    "inspector",
    "intel-hda",
    "io-scheduler",
    "keysafe",
    "kms-stateless",
    "launchpad",
    "ldmsg",
    "libzbi",
    "loader-service",
    "lockdep",
    "log",
    "log-writer-logger",
    "log-writer-textfile",
    "logger",
    "memfs",
    "memfs:memfs-cpp",
    "minfs",
    "mini-process",
    "mock-function",
    "pci",
    "perftest",
    "pretty",
    "profile",
    "ramdevice-client",
    "range",
    "refcount",
    "region-alloc",
    "rtc",
    "runtests-utils",
    "runtime",
    "service:service-llcpp",
    "simplehid",
    "smbios",
    "statusor",
    "storage-metrics",
    "storage/buffer",
    "storage/operation",
    "svc",
    "sync",
    "sysconfig-client",
    "syslog",
    "syslog:syslog-static",
    "sysmem-connector",
    "task-utils",
    "tee-client-api",
    "test-utils",
    "tftp",
    "thread-safe-deleter",
    "trace",
    "trace:trace-driver",
    "trace:trace-with-static-engine",
    "trace-engine",
    "trace-engine:trace-engine-driver",
    "trace-engine:trace-engine-headers-for-reader",
    "trace-engine:trace-engine-static",
    "trace-provider",
    "trace-provider:trace-handler",
    "trace-provider:trace-provider-driver",
    "trace-provider:trace-provider-fdio-connect",
    "trace-provider:trace-provider-so",
    "trace-provider:trace-provider-with-fdio",
    "trace-provider:trace-provider-with-static-engine",
    "trace-reader",
    "trace-test-utils",
    "trace-vthread",
    "trace-vthread:trace-vthread-with-static-engine",
    "unittest",
    "usb-peripheral-utils",
    "usb-virtual-bus-launcher",
    "utf_conversion",
    "virtio",
    "xdc-host-utils",
    "xdc-server-utils",
    "zbi-bootfs",
    "zircon",
    "zircon-crypto",
    "zircon-crypto:zircon-crypto-static",
    "zircon-internal",
    "zx",
    "zx-panic-libc",
    "zxcrypt:zxcrypt-dev",
    "zxcrypt:zxcrypt-fdio",
    "zxio",
    "zxtest",
  ]
}
