# Copyright 2015 The Chromium 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("//mojo/go/rules.gni")

if (is_android) {
  group("go") {
    deps = [
      ":go_echo_client",
      ":go_echo_server",
    ]
  }

  go_shared_library("go_echo_client") {
    sources = [
      "echo_client.go",
    ]
    deps = [
      "//examples/echo:bindings",
      "//mojo/go:application",
      "//mojo/go:platform_cgo",
      "//mojo/public/c/system",
      "//mojo/public/platform/native:system",
    ]
  }

  go_shared_library("go_echo_server") {
    sources = [
      "echo_server.go",
    ]
    deps = [
      "//examples/echo:bindings",
      "//mojo/go:application",
      "//mojo/go:platform_cgo",
      "//mojo/public/c/system",
      "//mojo/public/platform/native:system",
    ]
  }
}
