# 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/public/gn/config/standard.gni")
import("$zx/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/system/fidl/fuchsia-net-stack:c",
    "$zx/third_party/ulib",
    "async",
    "async:async-cpp",
    "async:async-default",
    "async-loop",
    "async-loop:async-loop-cpp",
    "async-testutils",
    "audio-driver-proto",
    "audio-proto-utils",
    "audio-utils",
    "backtrace-request",
    "bitmap",
    "blktest",
    "blobfs",
    "block-client",
    "bootdata",
    "bootfs",
    "c",
    "c:crt1",
    "chromeos-disk-setup",
    "cmdline",
    "cobalt-client",
    "crypto",
    "ddk",
    "ddktl",
    "devmgr-integration-test",
    "devmgr-launcher",
    "digest",
    "disk-inspector",
    "dispatcher-pool",
    "driver",
    "driver-info",
    "edid",
    "elf-search",
    "elfload",
    "explicit-memory",
    "fbl",
    "fdio",
    "fidl",
    "fidl:fidl-llcpp",
    "fidl:fidl_base",
    "fidl-async",
    "fidl-async:fidl-async-cpp",
    "fidl-utils",
    "fit",
    "framebuffer",
    "fs",
    "fs-management",
    "fs-test-utils",
    "ftl",
    "fvm",
    "fzl",
    "gfx",
    "gfx-font-data",
    "gpt",
    "hid",
    "hid-parser",
    "hwreg",
    "inet6",
    "inspect-vmo",
    "inspector",
    "intel-hda",
    "kvstore",
    "launchpad",
    "ldmsg",
    "libzbi",
    "loader-service",
    "lockdep",
    "log",
    "log-writer-logger",
    "log-writer-textfile",
    "logger",
    "memfs",
    "memfs:memfs-cpp",
    "minfs",
    "mini-process",
    "pci",
    "perftest",
    "port",
    "pretty",
    "process-launcher",
    "ramdevice-client",
    "region-alloc",
    "rtc",
    "runtests-utils",
    "runtime",
    "smbios",
    "storage-metrics",
    "svc",
    "sync",
    "syslog",
    "sysmem-connector",
    "task-utils",
    "tee-client-api",
    "test-utils",
    "tftp",
    "trace",
    "trace:trace-with-static-engine",
    "trace-engine",
    "trace-engine:trace-engine-headers-for-reader",
    "trace-engine:trace-engine-static",
    "trace-provider",
    "trace-provider:trace-handler",
    "trace-provider:trace-provider-fdio-connect",
    "trace-provider:trace-provider-with-static-engine",
    "trace-reader",
    "trace-test-utils",
    "trace-vthread",
    "trace-vthread:trace-vthread-with-static-engine",
    "unittest",
    "utf_conversion",
    "virtio",
    "xdc-host-utils",
    "xdc-server-utils",
    "zbi-bootfs",
    "zircon",
    "zircon-internal",
    "zx",
    "zxcrypt:zxcrypt-dev",
    "zxcrypt:zxcrypt-fdio",
    "zxio",
    "zxs",
    "zxtest",
  ]
}
