Annotate GN executables and shared_libraries with sanitizer deps.
[chromium-blink-merge.git] / extensions / shell / BUILD.gn
blob06bf717200944e47499fd9f16706ba5691962f84
1 # Copyright 2014 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.
5 import("//extensions/shell/app_shell.gni")
7 # Technically, this directory should not depend on files from src/chrome, but
8 # that's where the VERSION file is. This  should probably all be moved to
9 # src/build.
10 import("//chrome/version.gni")
11 import("//testing/test.gni")
12 import("//tools/grit/grit_rule.gni")
14 assert(enable_extensions)
16 grit("resources") {
17   source = "app_shell_resources.grd"
18   outputs = [
19     "grit/app_shell_resources.h",
20     "app_shell_resources.pak",
21   ]
24 source_set("app_shell_lib") {
25   # TODO(jamescook): investigate and get rid of test dependencies. This library
26   # is testonly because it depends on testonly libraries, namely
27   # //content/shell:content_shell_lib. See http://crbug.com/438283
28   testonly = true
29   deps = [
30     ":resources",
31     ":version_header",
32     "//base",
33     "//base:prefs",
34     "//components/devtools_discovery",
35     "//components/devtools_http_handler",
36     "//components/guest_view/browser",
37     "//components/guest_view/common",
38     "//components/guest_view/renderer",
39     "//components/pref_registry",
40     "//components/update_client",
41     "//components/user_prefs",
42     "//components/web_cache/renderer",
43     "//content",
44     "//content/shell:content_shell_lib",
45     "//device/core",
46     "//device/hid",
47     "//extensions/common/api",
48     "//extensions/common/api:api_registration",
49     "//extensions/browser",
50     "//extensions/common",
51     "//extensions/renderer",
52     "//extensions/shell/common/api",
53     "//extensions/shell/common/api:api_registration",
54     "//extensions/utility",
55     "//extensions:extensions_resources",
56     "//extensions:shell_and_test_pak",
57     "//mojo/environment:chromium",
58     "//skia",
59     "//third_party/WebKit/public:blink",
60     "//third_party/mojo/src/mojo/edk/system",
61     "//ui/base",
62     "//ui/base/ime",
63     "//v8",
64   ]
66   sources = rebase_path(app_shell_gypi_values.app_shell_lib_sources,
67                         ".",
68                         "//extensions/shell")
70   if (use_aura) {
71     deps += [ "//ui/wm" ]
73     aura_sources = rebase_path(app_shell_gypi_values.app_shell_lib_sources_aura,
74                                ".",
75                                "//extensions/shell")
76     sources += aura_sources
77   }
79   if (is_chromeos) {
80     deps += [
81       "//chromeos",
82       "//ui/chromeos:ui_chromeos",
83       "//ui/display",
84     ]
85     chromeos_sources =
86         rebase_path(app_shell_gypi_values.app_shell_lib_sources_chromeos,
87                     ".",
88                     "//extensions/shell")
89     sources += chromeos_sources
90   }
92   # TODO(GYP): Enable this when //components/nacl GN is done. See
93   # http://crbug.com/430602
94   if (false) {
95     if (enable_nacl) {
96       if (is_linux) {
97         deps += [ "//components/nacl:nacl_helper" ]
98       }
99       deps += [
100         "//components/nacl",
101         "//components/nacl:browser",
102         "//components/nacl:common",
103         "//components/nacl:renderer",
104         "//components/nacl:switches",
105       ]
106       nacl_sources =
107           rebase_path(app_shell_gypi_values.app_shell_lib_sources_nacl,
108                       ".",
109                       "//extensions/shell")
110       sources += nacl_sources
111     }
112   }
114   if (enable_nacl) {
115     sources += [
116       "browser/shell_nacl_browser_delegate.cc",
117       "browser/shell_nacl_browser_delegate.h",
118     ]
120     deps += [
121       "//components/nacl",
122       "//components/nacl:nacl_browser",
123       "//components/nacl:nacl_common",
124       "//components/nacl:nacl_renderer",
125       "//components/nacl:nacl_switches",
126       "//components/nacl/renderer/plugin:nacl_trusted_plugin",
127     ]
129     if (is_linux) {
130       deps += [ "//components/nacl:nacl_helper" ]
131     }
132   }
134   if (cld_version == 2) {
135     deps += [ "//third_party/cld_2:cld2_platform_impl" ]
136   }
139 if (!(is_chromeos && !use_ozone)) {
140   executable("app_shell") {
141     # testonly because :app_shell_lib is testonly. See :app_shell_lib comment.
142     testonly = true
143     sources = rebase_path(app_shell_gypi_values.app_shell_sources,
144                           ".",
145                           "//extensions/shell")
146     deps = [
147       ":app_shell_lib",
148       "//build/config/sanitizers:deps",
149       "//extensions:shell_and_test_pak",
150     ]
152     if (is_win) {
153       configs += [ "//build/config/win:windowed" ]
154       configs -= [ "//build/config/win:console" ]
155       deps += [ "//base/allocator" ]
156     }
158     if (is_mac) {
159       # TODO(GYP): Mac bundling
160     }
161   }
164 # TODO(GYP): Delete this after we've converted everything to GN.
165 # The _run targets exist only for compatibility w/ GYP.
166 group("app_shell_unittests_run") {
167   testonly = true
168   deps = [
169     ":app_shell_unittests",
170   ]
173 test("app_shell_unittests") {
174   sources = rebase_path(app_shell_gypi_values.app_shell_unittests_sources,
175                         ".",
176                         "//extensions/shell")
178   data = [
179     "//extensions/test/data/",
180     "$root_out_dir/extensions_shell_and_test.pak",
182     #"$root_out_dir/natives_blob.bin", # move to gin
183     #"$root_out_dir/snapshot_blob.bin",
184   ]
186   deps = [
187     ":app_shell_lib",
188     "//base",
189     "//base/test:test_support",
190     "//content/test:test_support",
191     "//extensions:shell_and_test_pak",
192     "//extensions:test_support",
193     "//testing/gtest",
194   ]
196   data_deps = [
197     # "//gin", # TODO(dpranke): Either gin or v8 data is needed ...
198     "//third_party/mesa:osmesa",
199   ]
201   if (use_aura) {
202     deps += [ "//ui/aura:test_support" ]
204     aura_sources =
205         rebase_path(app_shell_gypi_values.app_shell_unittests_sources_aura,
206                     ".",
207                     "//extensions/shell")
208     sources += aura_sources
209   }
211   if (is_chromeos) {
212     deps += [ "//chromeos:test_support_without_gmock" ]
214     chromeos_sources =
215         rebase_path(app_shell_gypi_values.app_shell_unittests_sources_chromeos,
216                     ".",
217                     "//extensions/shell")
218     sources += chromeos_sources
219   }
221   # TODO(GYP): Enable this when //components/nacl GN is done.
222   if (false) {
223     if (use_nacl) {
224       nacl_sources =
225           rebase_path(app_shell_gypi_values.app_shell_unittests_sources_nacl,
226                       ".",
227                       "//extensions/shell")
228       sources += nacl_sources
229     }
230   }
232   if (is_win) {
233     deps += [ "//base/allocator" ]
234   }
237 process_version("version_header") {
238   template_file = "common/version.h.in"
239   output = "$target_gen_dir/common/version.h"