# 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",
    "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",
    "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-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",
    "ftl",
    "fvm",
    "fzl",
    "gfx",
    "gfx-font-data",
    "gpt",
    "hid",
    "hid-parser",
    "hwreg",
    "image-format",
    "image-format:image-format-llcpp",
    "inet6",
    "inspect",
    "inspector",
    "intel-hda",
    "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",
    "ramdevice-client",
    "refcount",
    "region-alloc",
    "rtc",
    "runtests-utils",
    "runtime",
    "service:service-llcpp",
    "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",
    "zxs",
    "zxtest",
  ]
}
