# 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.

##########################################
# Though under //zircon, this build file #
# is meant to be used in the Fuchsia GN  #
# build.                                 #
# See fxb/36139.                         #
##########################################

assert(!defined(zx) || zx != "/",
       "This file can only be used in the Fuchsia GN build.")

import("//build/test.gni")
import("//build/test/test_package.gni")

test("svchost") {
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "main.cc" ]
  deps = [
    "//sdk/fidl/fuchsia.kernel:fuchsia.kernel_llcpp",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
    "//zircon/system/fidl/fuchsia-boot:c",
    "//zircon/system/fidl/fuchsia-scheduler:c",
  ]
}

unittest_package("svchost-package") {
  package_name = "svchost"
  deps = [ ":svchost" ]

  tests = [
    {
      name = "svchost"
      dest = "svchost-test"
    },
  ]
}
