# Copyright (c) 2013 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.

# This is the root build file for GN. GN will start processing by loading this
# file, and recursively load all dependencies until all dependencies are either
# resolved or known not to exist (which will cause the build to fail). So if
# you add a new build file, there must be some path of dependencies from this
# file to your new one or GN won't know about it.

import("//build/config/ui.gni")

# Android GN build has some bugs: http://crbug.com/405686
if (is_android) {

group("root") {
  deps = [
    "//base",
  ]
}

} else {

# In GN, a "group" is a dummy target that just lists other targets.
group("root") {
  # Note that some dependencies are commented out. These are things that are
  # currently written but not hooked up to the build yet. They may need to be
  # completed or possibly just tested and then re-enabled.
  deps = [
    "//apps",
    "//ash",
    "//cc",
    "//cc/blink",
    "//chrome/browser",
    "//chrome/browser/devtools",
    "//chrome/browser/ui",
    "//chrome/browser/ui/views",
    "//chrome/common",
    "//chrome/plugin",
    "//chrome/renderer",
    "//chrome/service",
    "//chrome/utility",
    "//components:all_components",
    "//content",
    "//content/shell:content_shell",
    "//content/test:test_support",
    "//crypto",
    "//device/bluetooth",
    "//device/nfc",
    "//device/usb",
    "//extensions/browser",
    "//extensions/common",
    "//extensions/common/api",
    "//extensions/renderer",
    "//gin",
    "//gpu",
    "//google_apis",
    "//google_apis/gcm",
    "//ipc",
    "//ipc/mojo",
    "//jingle:notifier",
    "//media",
    "//media/cast",
    "//mojo",
    "//net",
    "//pdf",
    "//ppapi:ppapi_c",
    "//printing",
    "//remoting/client/plugin",
    "//sandbox",
    "//sdch",
    "//skia",
    "//sql",
    "//sync",
    "//third_party/WebKit/public:all_blink",
    "//third_party/angle:translator",
    "//third_party/brotli",
    "//third_party/cacheinvalidation",
    "//third_party/cld",
    "//third_party/cld_2",
    "//third_party/ffmpeg",
    "//third_party/flac",
    "//third_party/harfbuzz-ng",
    "//third_party/hunspell",
    "//third_party/iccjpeg",
    "//third_party/icu",
    "//third_party/leveldatabase",
    "//third_party/libaddressinput",
    "//third_party/libphonenumber",
    "//third_party/libjingle",
    "//third_party/libpng",
    "//third_party/libsrtp",
    "//third_party/libusb",
    "//third_party/libwebm",
    "//third_party/libwebp",
    "//third_party/libxslt",
    "//third_party/libyuv",
    "//third_party/lzma_sdk",
    "//third_party/mesa",
    "//third_party/opus",
    "//third_party/ots",
    "//third_party/protobuf:protobuf_lite",
    "//third_party/qcms",
    "//third_party/re2",
    "//third_party/smhasher:cityhash",
    "//third_party/smhasher:murmurhash3",
    "//third_party/smhasher:pmurhash",
    "//third_party/snappy",
    "//third_party/speex",
    "//third_party/widevine/cdm:version_h",
    "//third_party/webrtc",
    "//third_party/zlib",
    "//third_party:jpeg",
    "//tools/gn",
    "//tools/imagediff($host_toolchain)",
    "//ui:ui_unittests",
    "//ui/app_list",
    "//ui/aura",
    "//ui/accessibility",
    "//ui/base",
    "//ui/display",
    "//ui/events",
    "//ui/gfx",
    "//ui/gl",
    "//ui/keyboard",
    "//ui/native_theme",
    "//ui/resources",
    "//ui/snapshot",
    "//ui/strings",
    "//ui/surface",
    "//ui/views",
    "//ui/views/controls/webview",
    "//ui/web_dialogs",
    "//ui/wm",
    "//url",
    "//v8:v8",
    "//webkit/browser:storage",
    "//webkit/child",
  ]

  if (!is_win) {
    deps += [ "//breakpad:symupload" ]
  }

  if (is_linux) {
    deps += [
      "//dbus",
      "//third_party/fontconfig",
      "//third_party/freetype2",
    ]
  }

  if (use_x11) {
    deps += [ "//tools/xdisplaycheck" ]
  }

  if (is_win) {
    deps += [
      "//ui/metro_viewer",
    ]
  }

  if (is_win || is_mac || is_chromeos) {
    # RLZ works on these platforms.
    deps += [
      "//rlz:rlz_lib",
    ]
  }

  if (cpu_arch == "x86" || cpu_arch == "x64") {
    # YASM is x86/x64 only.
    deps += [ "//third_party/yasm($host_toolchain)" ]
  }

  if (is_android) {
    deps += [
      "//ui/android:ui_java",
      "//third_party/guava:guava_javalib",
      "//third_party/android_tools:android_gcm_java",
      "//third_party/android_tools:uiautomator_java",
      "//third_party/android_tools:android_support_v13_java",
      "//third_party/android_tools:android_support_v7_appcompat_java",
      "//third_party/android_tools:android_support_v7_mediarouter_java",
    ]

    deps -= [
      "//apps",  # Needs testing.
      "//cc/blink", # Blocked on blink
      "//chrome/browser",  # Blocked on content.
      "//chrome/browser/devtools",  # Blocked on content.
      "//chrome/browser/ui",  # Blocked on content.
      "//chrome/browser/ui/views",  # Blocked on content.
      "//chrome/common",  # Blocked on content.
      "//chrome/plugin",  # Blocked on content.
      "//chrome/renderer",  # Blocked on content.
      "//chrome/service",  # Blocked on content.
      "//chrome/utility",  # Blocked on content.
      "//content",
      "//content/shell:content_shell",  # Blocked on content.
      "//content/test:test_support",  # Blocked on content.
      "//extensions/browser",
      "//extensions/common",
      "//extensions/common/api",
      "//extensions/renderer",
      "//pdf",  # Not compiled on Android in GYP yet, either.
      "//ppapi:ppapi_c",
      "//sandbox",
      "//third_party/libusb",
      "//ui/keyboard",  # Blocked on content.

      # Blocked on neon stuff in vp8
      "//third_party/WebKit/public:all_blink",

      # Seems to not be compiled on Android. Otherwise it will need a config.h.
      "//third_party/libxslt",

      # Not relevant to Android.
      "//ash",
      "//tools/gn",
      "//ui/aura",
      "//ui/display",
      "//ui/views",
      "//ui/views/controls/webview",

      # Fails on Android for unknown reasons.
      "//third_party/flac",
      "//breakpad:symupload",

      # Not tested on Android yet:
      "//google_apis/gcm",
      "//remoting/client/plugin",
      "//third_party/cld_2",
      "//third_party/libaddressinput",
      "//third_party/ffmpeg",
      "//ui:ui_unittests",
      "//ui/app_list",
      "//ui/web_dialogs",
      "//ui/wm",
      "//webkit/browser:storage",
      "//webkit/child",
    ]
  }

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

}