# 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/bindings",
    "cpp/environment:standalone",
    "cpp/utility",
    "interfaces/bindings/tests:test_interfaces",
  ]

  if (mojo_use_application_in_sdk) {
    deps += [ "cpp/application:standalone" ]
  }

  if (is_linux && !is_fnl) {
    deps += [
      "python",
      "tools/bindings",
    ]
  }

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

  if (is_android && mojo_use_application_in_sdk) {
    deps += [ "java:application" ]
  }
}

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

  if (mojo_use_application_in_sdk) {
    deps += [
      "cpp/application:standalone",
      "interfaces/application",
    ]
  }

  if (mojo_use_network_in_sdk) {
    deps += [ "interfaces/network" ]
  }
}

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