# 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("cpp") {
  deps = [
    "../common",
    "../types",
  ]
  sources = [
    "clang_formatter.go",
    "ir.go",
  ]
}

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

if (is_host) {
  go_test("fidlgen_cpp_ir_test") {
    gopackages =
        [ "go.fuchsia.dev/fuchsia/garnet/go/src/fidl/compiler/backend/cpp" ]
    deps = [ ":cpp_test" ]
  }
}

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