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

# This target will be built if no target is specified when invoking ninja.
group("default") {
  testonly = true

  deps = [
    "//apps",
    "//base:base_unittests",
    "//benchmarks",
    "//crypto:crypto_unittests",
    "//examples",
    "//mojo",
    "//mojom",
    "//services",
    "//shell",
  ]

  if (is_linux) {
    deps += [
      "//fusl",

      # We need this to run tests (especially on bots).
      "//third_party/mesa:osmesa",
    ]
  }

  # TODO(cstout): fix sandbox build for fnl/musl
  if (is_linux && !is_fnl) {
    deps += [
      "//sandbox/linux:sandbox",
      "//sandbox/linux:sandbox_linux_unittests",
    ]
  }
  if (is_linux && !use_ozone) {
    deps += [ "//tools/xdisplaycheck" ]
  }

  if (is_linux || is_android) {
    deps += [
      "//ui/events:events_unittests",
      "//ui/gfx:gfx_unittests",
    ]
  }

  if (use_ozone) {
    deps += [ "//ui/ozone" ]
  }
}

# Deprecated name for the default build target.
group("root") {
  testonly = true
  deps = [
    ":default",
  ]
}

if (use_ozone) {
  # This isn't in the default target as it's a bit wonky right now.
  group("ozone_tests") {
    testonly = true
    deps = [
      "//ui/ozone:ozone_unittests",
      "//ui/ozone/demo",
    ]
  }
}
