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

# 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 = [
    # This is a temporary test of the not-yet-complete NaCl cross-compilation.
    #"//base(//build/toolchain/nacl:x86_newlib)",
    "//ash",
    "//cc",
    "//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",
    "//media",
    "//media/cast",
    "//mojo",
    "//net",
    "//pdf",
    "//ppapi:ppapi_c",
    "//printing",
    "//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/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/zlib",
    "//third_party:jpeg",
    "//tools/gn",
    "//tools/imagediff($host_toolchain)",
    "//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"
    ]

    deps -= [
      "//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",
      "//third_party/cld_2",
      "//third_party/libaddressinput",
      "//third_party/ffmpeg",
      "//ui/app_list",
      "//ui/web_dialogs",
      "//ui/wm",
      "//webkit/browser:storage",
      "//webkit/child",
    ]
  }

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