Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(193)

Side by Side Diff: mojo/shell/BUILD.gn

Issue 1091513005: Separate mojo/shell into a runner and the application manager (shell) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/runner/url_resolver_unittest.cc ('k') | mojo/shell/DEPS » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 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 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import("//build/config/ui.gni")
6 import("//third_party/mojo/src/mojo/public/mojo.gni")
7 import("//third_party/mojo/src/mojo/public/mojo_application.gni")
8 import("//third_party/mojo/src/mojo/public/tools/bindings/mojom.gni") 5 import("//third_party/mojo/src/mojo/public/tools/bindings/mojom.gni")
9 import("//testing/test.gni") 6 import("//testing/test.gni")
10 7
11 # We don't support building in the component build since mojo apps are 8 source_set("shell") {
12 # inherently components. 9 output_name = "mojo_shell"
13 assert(!is_component_build)
14
15 group("shell") {
16 testonly = true
17
18 deps = [
19 ":mojo_shell",
20 ":tests",
21 "//mojo/shell/application_manager:tests",
22 ]
23
24 if (is_android) {
25 deps += [
26 ":mojo_shell_apk",
27 ":tests_apk",
28 ]
29 }
30 }
31
32 if (is_android) {
33 import("//build/config/android/config.gni")
34 import("//build/config/android/rules.gni")
35 }
36
37 executable("mojo_shell") {
38 sources = []
39
40 deps = [
41 ":lib",
42 "//base",
43 "//build/config/sanitizers:deps",
44 "//mojo/common",
45 "//mojo/environment:chromium",
46 ]
47
48 if (!is_android) {
49 sources += [
50 "desktop/launcher_process.cc",
51 "desktop/launcher_process.h",
52 "desktop/main.cc",
53 ]
54 } else {
55 sources += [
56 "android/library_loader.cc",
57 "android/main.cc",
58 "android/main.h",
59 ]
60
61 # On android, the executable is also the native library used by the apk.
62 # It means dynamic symbols must be preserved and exported.
63 ldflags = [ "-Wl,--export-dynamic" ]
64
65 deps += [
66 ":jni_headers",
67 "//components/native_viewport:lib",
68 "//mojo/shell/application_manager",
69 "//ui/gl",
70 ]
71 }
72 }
73
74 source_set("in_process_native_runner") {
75 sources = [ 10 sources = [
76 "in_process_native_runner.cc", 11 "application_loader.h",
77 "in_process_native_runner.h", 12 "application_manager.cc",
78 ] 13 "application_manager.h",
79 14 "data_pipe_peek.cc",
80 public_deps = [ 15 "data_pipe_peek.h",
81 ":native_application_support", 16 "fetcher.cc",
82 "//mojo/shell/application_manager", 17 "fetcher.h",
83 ] 18 "identity.cc",
84 19 "identity.h",
85 deps = [ 20 "local_fetcher.cc",
86 "//base", 21 "local_fetcher.h",
87 ] 22 "native_runner.h",
88 } 23 "network_fetcher.cc",
89 24 "network_fetcher.h",
90 source_set("lib") { 25 "query_util.cc",
91 sources = [ 26 "query_util.h",
92 "child_process.cc", 27 "shell_impl.cc",
93 "child_process.h", 28 "shell_impl.h",
94 "child_process_host.cc",
95 "child_process_host.h",
96 "context.cc",
97 "context.h",
98 "filename_util.cc",
99 "filename_util.h",
100 "init.cc",
101 "init.h",
102 "out_of_process_native_runner.cc",
103 "out_of_process_native_runner.h",
104 "task_runners.cc",
105 "task_runners.h",
106 "url_resolver.cc",
107 "url_resolver.h",
108 ]
109
110 deps = [
111 ":child_process_bindings",
112 ":in_process_native_runner",
113 ":native_application_support",
114 "//base",
115 "//base/third_party/dynamic_annotations",
116 "//base:base_static",
117 "//mojo/application",
118 "//mojo/common",
119 "//mojo/common:tracing_impl",
120 "//third_party/mojo/src/mojo/edk/system",
121 "//third_party/mojo/src/mojo/public/cpp/bindings",
122 "//third_party/mojo/src/mojo/public/interfaces/application",
123 "//mojo/services/network/public/interfaces",
124 "//mojo/shell/application_manager",
125 "//mojo/services/tracing:bindings",
126 "//ui/gl",
127 "//url",
128 ]
129
130 public_deps = [
131 ":switches",
132 ]
133
134 if (is_android) {
135 sources += [
136 "android/android_handler.cc",
137 "android/android_handler.h",
138 "android/android_handler_loader.cc",
139 "android/android_handler_loader.h",
140 "android/background_application_loader.cc",
141 "android/background_application_loader.h",
142 "android/native_viewport_application_loader.cc",
143 "android/native_viewport_application_loader.h",
144 "android/ui_application_loader_android.cc",
145 "android/ui_application_loader_android.h",
146 ]
147
148 deps += [
149 ":jni_headers",
150 ":run_android_application_function",
151 "//components/gles2",
152 "//components/native_viewport:lib",
153 "//mojo/application:content_handler",
154 ]
155 }
156
157 # This target includes some files behind #ifdef OS... guards. Since gn is not
158 # smart enough to understand preprocess includes, it does complains about
159 # these includes when not using the build files for that OS. Suppress checking
160 # so we can enable checking for the rest of the targets in this file.
161 # TODO: Might be better to split the files with OS-specific includes out to a
162 # separate source_set so we can leave checking on for the rest of the target.
163 check_includes = false
164 }
165
166 source_set("native_application_support") {
167 sources = [
168 "native_application_support.cc",
169 "native_application_support.h",
170 ]
171
172 public_deps = [
173 "//third_party/mojo/src/mojo/public/cpp/bindings",
174 ]
175
176 deps = [
177 "//base",
178 "//mojo/gles2",
179 ]
180
181 # This target has to include the public thunk headers, which generally
182 # shouldn't be included without picking an implementation. We are providing
183 # the implementation but the thunk header target cannot declare that we are
184 # permitted to include it since it's in the public SDK and we are not.
185 # Suppress include checking so we can still check the rest of the targets in
186 # this file.
187 check_includes = false
188 }
189
190 source_set("switches") {
191 sources = [
192 "switches.cc", 29 "switches.cc",
193 "switches.h", 30 "switches.h",
194 ] 31 ]
195 32
33 public_deps = [
34 "//base",
35 "//mojo/common",
36 "//third_party/mojo/src/mojo/public/interfaces/application:application",
37 "//mojo/services/network/public/interfaces",
38 "//url",
39 ]
196 deps = [ 40 deps = [
197 "//base", 41 "//base/third_party/dynamic_annotations",
42 "//crypto:crypto",
43 "//url",
44 "//third_party/mojo/src/mojo/edk/system",
45 "//mojo/environment:chromium",
46 "//third_party/mojo_services/src/content_handler/public/interfaces",
47 "//mojo/runner:native_application_support",
198 ] 48 ]
199 } 49 }
200 50
201 if (is_android) {
202 generate_jni("jni_headers") {
203 sources = [
204 "android/apk/src/org/chromium/mojo/shell/AndroidHandler.java",
205 "android/apk/src/org/chromium/mojo/shell/Bootstrap.java",
206 "android/apk/src/org/chromium/mojo/shell/ShellMain.java",
207 "android/tests/src/org/chromium/mojo/shell/ShellTestBase.java",
208 ]
209 jni_package = "mojo/shell"
210 }
211
212 android_library("bootstrap_java") {
213 java_files = [ "android/apk/src/org/chromium/mojo/shell/Bootstrap.java" ]
214
215 deps = [
216 "//base:base_java",
217 ]
218
219 dex_path = "$target_out_dir/bootstrap_java.dex.jar"
220 }
221
222 shared_library("bootstrap") {
223 sources = [
224 "android/bootstrap.cc",
225 ]
226 deps = [
227 ":jni_headers",
228 ":lib",
229 ":run_android_application_function",
230 "//base",
231 ]
232 }
233
234 # Shared header between the bootstrap and the main shell .so.
235 source_set("run_android_application_function") {
236 sources = [
237 "android/run_android_application_function.h",
238 ]
239
240 deps = [
241 "//base",
242 ]
243 }
244
245 android_library("java") {
246 java_files = [
247 "android/apk/src/org/chromium/mojo/shell/AndroidHandler.java",
248 "android/apk/src/org/chromium/mojo/shell/FileHelper.java",
249 "android/apk/src/org/chromium/mojo/shell/MojoShellActivity.java",
250 "android/apk/src/org/chromium/mojo/shell/MojoShellApplication.java",
251 "android/apk/src/org/chromium/mojo/shell/ShellMain.java",
252 ]
253
254 deps = [
255 "//base:base_java",
256 ]
257 }
258
259 android_resources("resources") {
260 resource_dirs = [ "android/apk/res" ]
261 custom_package = "org.chromium.mojo.shell"
262 }
263
264 mojo_shell_assets_dir = "$root_build_dir/mojo_shell_assets"
265 mojo_shell_test_assets_dir = "$root_build_dir/mojo_shell_test_assets"
266
267 copy_ex("copy_mojo_shell_assets") {
268 clear_dir = true
269 dest = mojo_shell_assets_dir
270 sources = [
271 "$root_out_dir/lib.stripped/libbootstrap.so",
272 "$root_out_dir/network_service.mojo",
273 "$root_out_dir/obj/mojo/shell/bootstrap_java.dex.jar",
274 ]
275 }
276
277 copy("copy_mojo_shell") {
278 sources = [
279 "$root_out_dir/exe.stripped/mojo_shell",
280 ]
281 outputs = [
282 "$root_out_dir/lib.stripped/libmojo_shell.so",
283 ]
284 }
285
286 copy_ex("copy_mojo_shell_test_assets") {
287 clear_dir = true
288 dest = mojo_shell_test_assets_dir
289 sources = [
290 "$root_out_dir/test_app.mojo",
291 "$root_out_dir/test_request_tracker_app.mojo",
292 ]
293 }
294
295 android_apk("mojo_shell_apk") {
296 apk_name = "MojoShell"
297
298 android_manifest = "android/apk/AndroidManifest.xml"
299
300 native_libs = [ "libmojo_shell.so" ]
301
302 asset_location = mojo_shell_assets_dir
303
304 deps = [
305 ":copy_mojo_shell",
306 ":copy_mojo_shell_assets",
307 ":java",
308 ":resources",
309 "//base:base_java",
310 "//components/native_viewport:native_viewport_java",
311 "//third_party/android_tools:google_play_services_default_resources",
312 ]
313 }
314
315 android_library("mojo_shell_tests_java") {
316 java_files =
317 [ "android/tests/src/org/chromium/mojo/shell/ShellTestBase.java" ]
318
319 deps = [
320 ":java",
321 "//base:base_java",
322 ]
323 }
324 }
325
326 mojom("child_process_bindings") {
327 sources = [
328 "child_process.mojom",
329 ]
330
331 deps = [
332 "//third_party/mojo/src/mojo/public/interfaces/application",
333 ]
334 }
335
336 test("tests") { 51 test("tests") {
337 output_name = "mojo_shell_unittests" 52 output_name = "mojo_shell_unittests"
338 53
339 sources = [ 54 sources = [
340 "child_process_host_unittest.cc", 55 "application_manager_unittest.cc",
341 "data_pipe_peek_unittest.cc", 56 "query_util_unittest.cc",
342 "in_process_native_runner_unittest.cc",
343 "native_runner_unittest.cc",
344 "shell_test_base.cc",
345 "shell_test_base.h",
346 "shell_test_base_android.cc",
347 "shell_test_base_unittest.cc",
348 "shell_test_main.cc",
349 "url_resolver_unittest.cc",
350 ] 57 ]
351 58
352 deps = [ 59 deps = [
353 ":in_process_native_runner", 60 ":shell",
354 ":lib", 61 ":test_bindings",
355 "//base", 62 "//base",
356 "//base:i18n", 63 "//mojo/application",
357 "//base/test:test_support", 64 "//mojo/common",
65 "//third_party/mojo/src/mojo/edk/test:run_all_unittests",
66 "//mojo/environment:chromium",
67 "//third_party/mojo/src/mojo/public/cpp/application",
68 "//third_party/mojo/src/mojo/public/cpp/bindings",
358 "//testing/gtest", 69 "//testing/gtest",
359 "//url", 70 "//url",
360 "//mojo/common",
361 "//third_party/mojo/src/mojo/edk/system",
362 "//mojo/environment:chromium",
363 "//third_party/mojo/src/mojo/public/cpp/bindings",
364 "//mojo/services/test_service:bindings",
365 "//mojo/shell/application_manager",
366 ] 71 ]
367
368 datadeps = [
369 "//mojo/services/test_service:test_app",
370 "//mojo/services/test_service:test_request_tracker_app",
371 ]
372
373 if (is_android) {
374 sources += [ "android/background_application_loader_unittest.cc" ]
375
376 deps += [ ":jni_headers" ]
377
378 apk_deps = [
379 ":copy_mojo_shell_test_assets",
380 ":mojo_shell_tests_java",
381 ]
382
383 apk_asset_location = mojo_shell_test_assets_dir
384 }
385 } 72 }
386 73
387 mojo_native_application("apptests") { 74 mojom("test_bindings") {
388 output_name = "shell_apptests"
389
390 testonly = true
391
392 sources = [ 75 sources = [
393 # TODO(jam): needs http_server service. 76 "test.mojom",
394 #"shell_apptest.cc",
395 ] 77 ]
396
397 deps = [
398 "//base",
399 "//mojo/application",
400 "//mojo/application:test_support",
401 "//mojo/common:common",
402 "//third_party/mojo/src/mojo/public/cpp/bindings:callback",
403 "//third_party/mojo/src/mojo/public/cpp/environment",
404 "//third_party/mojo/src/mojo/public/cpp/system:system",
405
406 #"//mojo/services/http_server/public/cpp",
407 #"//mojo/services/http_server/public/interfaces",
408 "//mojo/services/network/public/interfaces",
409 "//mojo/shell/test:bindings",
410 ]
411
412 #data_deps = [ "//services/http_server:http_server($default_toolchain)" ]
413 } 78 }
OLDNEW
« no previous file with comments | « mojo/runner/url_resolver_unittest.cc ('k') | mojo/shell/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698