1# Copyright (c) 2013 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5# This is the root build file for GN. GN will start processing by loading this
6# file, and recursively load all dependencies until all dependencies are either
7# resolved or known not to exist (which will cause the build to fail). So if
8# you add a new build file, there must be some path of dependencies from this
9# file to your new one or GN won't know about it.
10
11import("//build/config/ui.gni")
12
13# In GN, a "group" is a dummy target that just lists other targets.
14group("root") {
15  # This should not be linked into production and depends on test targets.
16  testonly = true
17
18  # Note that some dependencies are commented out. These are things that are
19  # currently written but not hooked up to the build yet. They may need to be
20  # completed or possibly just tested and then re-enabled.
21  deps = [
22    "//apps",
23    "//ash",
24    "//cc",
25    "//cc/blink",
26    "//chrome/browser",
27    "//chrome/browser/devtools",
28    "//chrome/common",
29    "//chrome/plugin",
30    "//chrome/renderer",
31    "//chrome/utility",
32    "//components:all_components",
33    "//content",
34    "//content/shell:content_shell",
35    "//content/test:test_support",
36    "//crypto",
37    "//device/bluetooth",
38    "//device/nfc",
39    "//extensions/browser",
40    "//extensions/common",
41    "//extensions/common/api",
42    "//extensions/renderer",
43    "//gin",
44    "//gpu",
45    "//google_apis",
46    "//google_apis/gcm",
47    "//ipc",
48    "//ipc/mojo",
49    "//jingle:notifier",
50    "//media",
51    "//media/blink",
52    "//media/cast",
53    "//media/mojo",
54    "//mojo",
55    "//net",
56    "//pdf",
57    "//ppapi:ppapi_c",
58    "//printing",
59    "//remoting/client/plugin",
60    "//sandbox",
61    "//sdch",
62    "//skia",
63    "//storage/browser",
64    "//sql",
65    "//sync",
66    "//third_party/WebKit/public:all_blink",
67    "//third_party/angle:translator",
68    "//third_party/brotli",
69    "//third_party/cacheinvalidation",
70    "//third_party/cld",
71    "//third_party/cld_2",
72    "//third_party/ffmpeg",
73    "//third_party/flac",
74    "//third_party/harfbuzz-ng",
75    "//third_party/hunspell",
76    "//third_party/iccjpeg",
77    "//third_party/icu",
78    "//third_party/leveldatabase",
79    "//third_party/libphonenumber",
80    "//third_party/libjingle",
81    "//third_party/libpng",
82    "//third_party/libsrtp",
83    "//third_party/libusb",
84    "//third_party/libwebm",
85    "//third_party/libwebp",
86    "//third_party/libxslt",
87    "//third_party/libvpx",
88    "//third_party/libyuv",
89    "//third_party/lzma_sdk",
90    "//third_party/mesa",
91    "//third_party/opus",
92    "//third_party/ots",
93    "//third_party/protobuf:protobuf_lite",
94    "//third_party/qcms",
95    "//third_party/re2",
96    "//third_party/smhasher:cityhash",
97    "//third_party/smhasher:murmurhash3",
98    "//third_party/smhasher:pmurhash",
99    "//third_party/snappy",
100    "//third_party/speex",
101    "//third_party/usrsctp",
102    "//third_party/widevine/cdm:version_h",
103    "//third_party/webrtc",
104    "//third_party/zlib",
105    "//third_party:jpeg",
106    "//tools/gn",
107    "//tools/imagediff($host_toolchain)",
108    "//ui/accessibility",
109    "//ui/app_list",
110    "//ui/aura",
111    "//ui/base",
112    "//ui/display",
113    "//ui/events",
114    "//ui/gfx",
115    "//ui/gl",
116    "//ui/keyboard",
117    "//ui/native_theme",
118    "//ui/resources",
119    "//ui/snapshot",
120    "//ui/strings",
121    "//ui/surface",
122    "//ui/views",
123    "//ui/views/controls/webview",
124    "//ui/web_dialogs",
125    "//url",
126    "//v8:v8",
127  ]
128
129  if (!is_win) {
130    deps += [ "//breakpad:symupload" ]
131  }
132
133  if (is_linux) {
134    deps += [
135      "//dbus",
136      "//third_party/fontconfig",
137      "//third_party/freetype2",
138    ]
139  }
140
141  if (use_x11) {
142    deps += [ "//tools/xdisplaycheck" ]
143  }
144
145  if (use_aura) {
146    deps += [ "//ui/wm" ]
147  }
148
149  if (is_win) {
150    deps += [
151      "//ui/metro_viewer",
152    ]
153  }
154
155  if (is_win || is_mac || is_chromeos) {
156    # RLZ works on these platforms.
157    deps += [
158      "//rlz:rlz_lib",
159    ]
160  }
161
162  if (cpu_arch == "x86" || cpu_arch == "x64") {
163    # YASM is x86/x64 only.
164    deps += [ "//third_party/yasm($host_toolchain)" ]
165  }
166
167  if (is_android) {
168    deps += [
169      "//third_party/openmax_dl/dl",
170      "//content/shell/android:content_shell_apk",
171      "//ui/android:ui_java",
172      "//third_party/android_tools:android_gcm_java",
173      "//third_party/android_tools:uiautomator_java",
174      "//third_party/android_tools:android_support_v13_java",
175      "//third_party/android_tools:android_support_v7_appcompat_java",
176      "//third_party/android_tools:android_support_v7_mediarouter_java",
177      "//third_party/eyesfree:eyesfree_java",
178    ]
179
180    deps -= [
181      "//apps",  # Needs testing.
182      "//chrome/browser",
183      "//chrome/browser/devtools",
184      "//chrome/common",
185      "//chrome/plugin",
186      "//chrome/renderer",
187      "//chrome/utility",
188      "//content/shell:content_shell",
189      "//extensions/browser",
190      "//extensions/common",
191      "//extensions/common/api",
192      "//extensions/renderer",
193      "//pdf",  # Not compiled on Android in GYP yet, either.
194      "//ppapi:ppapi_c",
195      "//third_party/libusb",
196      "//ui/keyboard",  # Blocked on content.
197
198      # Seems to not be compiled on Android. Otherwise it will need a config.h.
199      "//third_party/libxslt",
200
201      # Not relevant to Android.
202      "//ash",
203      "//tools/gn",
204      "//ui/aura",
205      "//ui/display",
206      "//ui/views",
207      "//ui/views/controls/webview",
208
209      # Fails on Android for unknown reasons.
210      "//third_party/flac",
211      "//breakpad:symupload",
212
213      # Not tested on Android yet:
214      "//google_apis/gcm",
215      "//remoting/client/plugin",
216      "//storage/browser",
217      "//third_party/cld_2",
218      "//third_party/ffmpeg",
219      "//ui/app_list",
220      "//ui/web_dialogs",
221    ]
222  }
223
224  if (use_ozone) {
225    deps += [
226      "//ui/ozone",
227      "//ui/ozone/demo",
228    ]
229  }
230
231  # Non-mobile builds.
232  if (!is_android && !is_ios) {
233    deps += [
234      "//device/usb",
235    ]
236  }
237}
238