# 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") {
  # This should not be linked into production and depends on test targets.
  testonly = true

  # 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/common",
    "//chrome/plugin",
    "//chrome/renderer",
    "//chrome/utility",
    "//components:all_components",
    "//content",
    "//content/shell:content_shell",
    "//content/test:test_support",
    "//crypto",
    "//device/bluetooth",
    "//device/nfc",
    "//extensions/browser",
    "//extensions/common",
    "//extensions/common/api",
    "//extensions/renderer",
    "//gin",
    "//gpu",
    "//google_apis",
    "//google_apis/gcm",
    "//ipc",
    "//ipc/mojo",
    "//jingle:notifier",
    "//media",
    "//media/blink",
    "//media/cast",
    "//media/mojo",
    "//mojo",
    "//net",
    "//pdf",
    "//ppapi:ppapi_c",
    "//printing",
    "//remoting/client/plugin",
    "//sandbox",
    "//sdch",
    "//skia",
    "//storage/browser",
    "//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/libphonenumber",
    "//third_party/libjingle",
    "//third_party/libpng",
    "//third_party/libsrtp",
    "//third_party/libusb",
    "//third_party/libwebm",
    "//third_party/libwebp",
    "//third_party/libxslt",
    "//third_party/libvpx",
    "//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/usrsctp",
    "//third_party/widevine/cdm:version_h",
    "//third_party/webrtc",
    "//third_party/zlib",
    "//third_party:jpeg",
    "//tools/gn",
    "//tools/imagediff($host_toolchain)",
    "//ui/accessibility",
    "//ui/app_list",
    "//ui/aura",
    "//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",
    "//url",
    "//v8:v8",
  ]

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

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

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

  if (use_aura) {
    deps += [ "//ui/wm" ]
  }

  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 += [
      "//third_party/openmax_dl/dl",
      "//content/shell/android:content_shell_apk",
      "//ui/android:ui_java",
      "//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",
      "//third_party/eyesfree:eyesfree_java",
    ]

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

      # 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",
      "//storage/browser",
      "//third_party/cld_2",
      "//third_party/ffmpeg",
      "//ui/app_list",
      "//ui/web_dialogs",
    ]
  }

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

  # Non-mobile builds.
  if (!is_android && !is_ios) {
    deps += [
      "//device/usb",
    ]
  }
}
