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

import("//build/fidl/fidl.gni")

# Not actually used. Just ensures successful compilation.
fidl("fidl.rust.test.compilation") {
  testonly = true
  sources = [ "compilation.test.fidl" ]
  public_deps = [ "//zircon/vdso/zx" ]
}

# Not actually used. Just ensures successful compilation.
# Tests that we can compose protocols from another FIDL crate.
fidl("fidl.rust.test.compilation.compose") {
  testonly = true
  sources = [ "compilation_compose.test.fidl" ]
  public_deps = [ ":fidl.rust.test.compilation" ]
}

group("tests") {
  testonly = true
  deps = [
    ":fidl.rust.test.compilation-rustc",
    ":fidl.rust.test.compilation-rustc($host_toolchain)",
    ":fidl.rust.test.compilation.compose-rustc",
    ":fidl.rust.test.compilation.compose-rustc($host_toolchain)",
  ]
}
