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

library("zxtest") {
  host = true
  sdk = "source"
  sdk_headers = [
    "zxtest/base/event-broadcaster.h",
    "zxtest/base/observer.h",
    "zxtest/base/test-case.h",
    "zxtest/base/test-driver.h",
    "zxtest/base/test-info.h",
    "zxtest/base/test-internal.h",
    "zxtest/base/test.h",
    "zxtest/base/types.h",
  ]
  sources = [
    "assertion.cpp",
    "c-wrappers.cpp",
    "event-broadcaster.cpp",
    "reporter.cpp",
    "runner-options.cpp",
    "runner.cpp",
    "test-case.cpp",
    "test-info.cpp",
    "test.cpp",
    "zxtest-main.cpp",
  ]
  configs += [ "$zx/public/gn/config:visibility_hidden" ]
  public_deps = [
    # Needed for <fbl/string.h>, <fbl/vector.h> and <fbl/function.h>.
    "$zx/system/ulib/fbl:headers",
  ]
  deps = [
    "$zx/system/ulib/fbl",
  ]
  if (is_fuchsia) {
    sources += [ "death-statement.cpp" ]

    public_deps += [
      # Needed for <zircon/status.h>
      "$zx/system/ulib/zircon:headers",

      # Needed for <lib/zx/*>, death-statements.h
      "$zx/system/ulib/fit:headers",
      "$zx/system/ulib/zx:headers",
    ]

    deps += [
      "$zx/system/ulib/fit",
      "$zx/system/ulib/zircon",
      "$zx/system/ulib/zx",
    ]
  }
}
