# 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("//build/config/ui.gni")
import("//mojo/public/mojo.gni")

group("mojo") {
  # Meta-target, don't link into production code.
  testonly = true
  declare_args() {
    mojo_use_go = false
  }
  deps = [
    ":tests",
    "//mojo/common",
    "//mojo/examples",
    "//mojo/public",
    "//mojo/services",
    "//mojo/tools/package_manager",
  ]

  if (use_prebuilt_mojo_shell) {
    deps += [ "//mojo/public/tools:copy_mojo_shell" ]
  } else {
    deps += [ "//mojo/shell:mojo_shell" ]
  }

  if (is_android) {
    deps += [
      "//mojo/android",
    ]
  }

  if (is_linux) {
    deps += [
      "//mojo/python",
    ]
    if (mojo_use_go) {
      deps += [
        "//mojo/go",
      ]
    }
  }
}

group("tests") {
  testonly = true
  deps = [
    "//mojo/application_manager:mojo_application_manager_unittests",
    "//mojo/common:mojo_common_unittests",
    "//mojo/converters/surfaces/tests:mojo_surfaces_lib_unittests",
    "//mojo/edk/system:mojo_message_pipe_perftests",
    "//mojo/edk/system:mojo_system_unittests",
    "//mojo/public/c/system/tests:perftests",
    "//mojo/public/cpp/application/tests:mojo_public_application_unittests",
    "//mojo/public/cpp/bindings/tests:mojo_public_bindings_unittests",
    "//mojo/public/cpp/environment/tests:mojo_public_environment_unittests",
    "//mojo/public/cpp/system/tests:mojo_public_system_unittests",
    "//mojo/public/cpp/utility/tests:mojo_public_utility_unittests",
    "//mojo/services/clipboard:clipboard_unittests",
    "//mojo/services/network:unittests",
    "//mojo/shell:mojo_external_application_tests",
    "//mojo/shell:mojo_shell_tests",
    "//mojo/tools:message_generator",
  ]

  if (use_aura) {
    deps += [
      "//mojo/services/public/cpp/view_manager/tests:mojo_view_manager_lib_unittests",
      "//mojo/services/view_manager:view_manager_unittests",
      "//mojo/services/window_manager:window_manager_unittests",
    ]
  }
}

if (is_android) {
  import("//build/config/android/rules.gni")

  generate_jni("jni_headers") {
    sources = [
      "android/javatests/src/org/chromium/mojo/MojoTestCase.java",
      "android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtil.java",
      "android/system/src/org/chromium/mojo/system/impl/CoreImpl.java",
      "services/native_viewport/android/src/org/chromium/mojo/PlatformViewportAndroid.java",
    ]

    jni_package = "mojo"
  }
}
