# 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/go/go_library.gni")
import("//build/go/go_test.gni")

go_library("fidlgen_cpp") {
  deps = [ "//tools/fidl/lib/fidlgen" ]
  sources = [
    "clang_formatter.go",
    "enum.go",
    "ir.go",
    "typed_channel_migration.go",
  ]
}

go_library("cpp_test") {
  deps = [
    ":fidlgen_cpp",
    "//third_party/golibs:github.com/google/go-cmp",
  ]
  sources = [
    "enum_test.go",
    "ir_test.go",
  ]
}

if (is_host) {
  go_test("fidlgen_cpp_ir_test") {
    gopackages = [ "go.fuchsia.dev/fuchsia/tools/fidl/lib/fidlgen_cpp" ]
    deps = [ ":cpp_test" ]
  }
}

group("tests") {
  testonly = true
  deps = [ ":fidlgen_cpp_ir_test($host_toolchain)" ]
}
