# 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")

# TODO(beng): this meta target should probably move to the root dir's BUILD.gn.
group("mojo") {
  # Meta-target, don't link into production code.
  testonly = true
  declare_args() {
    mojo_use_go = false
  }
  deps = [
    ":tests",
    "//examples",
    "//mojo/apps/js:js_content_handler",
    "//mojo/apps/js:js_standalone",
    "//mojo/common",
    "//mojo/public",
    "//mojo/services",
    "//mojo/tools/package_manager",
    "//services",
  ]

  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 (mojo_use_go) {
    deps += [
      "//mojo/go",
    ]
  }

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

group("tests") {
  testonly = true
  deps = [
    "//mojo/application_manager:mojo_application_manager_unittests",
    "//mojo/apps/js/test:apps_js_unittests",
    "//mojo/bindings/js/tests:js_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: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"
  }
}
