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

group("fidl") {
  testonly = true

  public_deps = [
    ":fidl-lint",
    ":fidlfmt",
    "fidl_api_summarize:host",
    "fidlc:host",
    "fidlcparsequality:host",
    "fidldoc($host_toolchain)",
    "fidlgen_dart:host",
    "fidlgen_go:host",
    "fidlgen_hlcpp:host",
    "fidlgen_libfuzzer:host",
    "fidlgen_llcpp:host",
    "fidlgen_rust:host",
    "fidlgen_syzkaller:host",
    "fidlmerge:host",
    "gidl:host",
    "lib",
    "measure-tape/src:host",
  ]
}

group("fidlfmt") {
  if (current_os != "fuchsia") {
    deps = [ "fidlc:fidl-format" ]
  }
}

group("fidl-lint") {
  if (current_os != "fuchsia") {
    deps = [ "fidlc:fidl-lint" ]
  }
}

group("tests") {
  testonly = true

  deps = [
    "fidl_api_summarize:tests",
    "fidlc:tests",
    "fidldoc:tests",
    "fidlgen_dart:tests",
    "fidlgen_go:tests",
    "fidlgen_hlcpp:tests",
    "fidlgen_libfuzzer:tests",
    "fidlgen_llcpp:tests",
    "fidlgen_rust:tests",
    "fidlgen_syzkaller:tests",
    "gidl:tests",
    "lib:tests",
    "measure-tape:tests",
  ]
}
