# Copyright 2018 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_binary.gni")
import("//build/go/go_library.gni")
import("//build/go/toolchain.gni")
import("//build/package.gni")

group("golang") {
  testonly = true
  deps = [
    ":compatibility_test_server_go_bin",
    ":fidl_compatibility_test_server_go",
    ":lib",
  ]
}

go_binary("compatibility_test_server_go_bin") {
  gopackage = "compatibility_test"

  output_name = "compatibility_test_server_go"

  deps = [
    ":lib",
  ]
}

# The go_binary GN rule requires us to declare a go_library that creates the
# gopackage, even if the library doesn't have any sources.
go_library("lib") {
  name = "compatibility_test"
  deps = [
    "//garnet/public/lib/component/go/src/app",
    "//garnet/public/lib/fidl/compatibility_test:compatibility_test_service($go_toolchain)",
    "//sdk/fidl/fuchsia.sys($go_toolchain)",
  ]
}

package("fidl_compatibility_test_server_go") {
  testonly = true
  deps = [
    ":compatibility_test_server_go_bin",
  ]
  binary = "compatibility_test_server_go"
  meta = [
    {
      path = "meta/fidl_compatibility_test_server_go.cmx"
      dest = "fidl_compatibility_test_server_go.cmx"
    },
  ]
}
