# Copyright 2014 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.gni")

group("public") {
  # Meta-target, don't link into production code.
  testonly = true
  deps = [
    ":libmojo_sdk",
    ":sdk",
    "cpp/application:standalone",
    "cpp/bindings",
    "cpp/environment:standalone",
    "cpp/utility",
    "interfaces/bindings/tests:test_interfaces",
  ]

  if (is_linux) {
    deps += [ "python" ]
  }

  if (is_android) {
    deps += [
      "java:application",
      "java:system",
      "java:bindings",
    ]
  }
}

group("sdk") {
  deps = [
    "c/system",
    "cpp/application:standalone",
    "cpp/bindings",
    "cpp/environment:standalone",
    "cpp/utility",
    "interfaces/application",
    "js",
  ]
}

static_library("libmojo_sdk") {
  complete_static_lib = true
  deps = [
    ":sdk",
  ]
}
