# 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",
    "//benchmarks",
    "//examples",
    "//mojo/common",
    "//mojo/public",
    "//mojo/services",
    "//mojo/tools/package_manager",
    "//services",
  ]

  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/common:mojo_common_unittests",
    "//mojo/converters/surfaces/tests:mojo_surfaces_lib_unittests",
    "//mojo/edk/js/test:js_unittests",
    "//mojo/edk/js/test:js_integration_tests",
    "//mojo/edk/system:mojo_message_pipe_perftests",
    "//mojo/edk/system:mojo_system_unittests",
    "//mojo/edk/test:mojo_public_application_unittests",
    "//mojo/edk/test:mojo_public_bindings_unittests",
    "//mojo/edk/test:mojo_public_environment_unittests",
    "//mojo/edk/test:mojo_public_system_perftests",
    "//mojo/edk/test:mojo_public_system_unittests",
    "//mojo/edk/test:mojo_public_utility_unittests",
    "//mojo/services/network:apptests",
    "//mojo/services/view_manager/public/cpp/tests:mojo_view_manager_lib_unittests",
    "//mojo/tools:message_generator",
    "//services/clipboard:apptests",
    "//services/js:js_services_unittests",
    "//services/js:js_apptests",
    "//services/view_manager:view_manager_service_apptests",
    "//services/view_manager:view_manager_service_unittests",
    "//services/window_manager:window_manager_unittests",
  ]

  if (is_android) {
    deps += [ "//mojo/edk/system:mojo_system_unittests_apk" ]
  }

  if (mojo_use_dart) {
    deps += [ "//mojo/dart/embedder/test:dart_unittests" ]
  }
}
