|  | # 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") | 
|  | if (is_android) { | 
|  | import("//build/config/android/config.gni") | 
|  | } | 
|  |  | 
|  | declare_args() { | 
|  | # A list of extra dependencies to add to the root target. This allows a | 
|  | # checkout to add additional targets without explicitly changing any checked- | 
|  | # in files. | 
|  | root_extra_deps = [] | 
|  | } | 
|  |  | 
|  | # 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/battery", | 
|  | "//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", | 
|  | ] + root_extra_deps | 
|  |  | 
|  | 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 += [ | 
|  | "//base/android/linker:chromium_android_linker", | 
|  | "//build/android/rezip", | 
|  | "//third_party/openmax_dl/dl", | 
|  | "//content/shell/android:content_shell_apk", | 
|  | "//chrome/android:chrome_shell_apk", | 
|  | "//chrome/test/chromedriver/test/webview_shell:chromedriver_webview_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", | 
|  | ] | 
|  |  | 
|  | if (has_chrome_android_internal) { | 
|  | deps += [ | 
|  | "//clank", | 
|  | ] | 
|  | } | 
|  |  | 
|  | 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", | 
|  | ] | 
|  | } | 
|  | } |