blob: 1ead9168b78abf8150cc981c34ef31529e76273d [file] [log] [blame]
Risanedc20e22017-12-07 12:35:19 +09001// Copyright 2017 The Chromium OS 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
5filegroup {
6 name: "libmojo_mojom_files",
7 srcs: [
8 "ipc/ipc.mojom",
9 "mojo/common/file.mojom",
10 "mojo/common/string16.mojom",
11 "mojo/common/text_direction.mojom",
12 "mojo/common/time.mojom",
13 "mojo/common/unguessable_token.mojom",
14 "mojo/common/version.mojom",
15 "mojo/public/interfaces/bindings/interface_control_messages.mojom",
16 "mojo/public/interfaces/bindings/pipe_control_messages.mojom",
17 "ui/gfx/geometry/mojo/geometry.mojom",
18 "ui/gfx/range/mojo/range.mojom",
19 ],
20}
21
22// TODO(risan): move this to third_party/catapult/Android.bp and enable embedded_launcher.
23python_library_host {
24 name: "catapult",
25 srcs: [
26 "third_party/catapult/devil/devil/**/*.py",
27 ],
28 version: {
29 py2: {
30 enabled: true,
31 },
32 py3: {
33 enabled: false,
34 },
35 },
36}
37
38// TODO(risan): split this into python_libraries.
39python_binary_host {
40 name: "jni_generator",
41 main: "base/android/jni_generator/jni_generator.py",
42 srcs: [
43 "base/android/jni_generator/jni_generator.py",
44 "build/**/*.py",
45 ],
46 version: {
47 py2: {
48 enabled: true,
49 },
50 py3: {
51 enabled: false,
52 },
53 },
54 libs: [
55 "catapult",
56 ],
57}
58
59cc_prebuilt_binary {
60 name: "mojom_source_generator_sh",
61 srcs: ["soong/mojom_source_generator.sh"],
62 host_supported: true,
63}
64
Risanedc20e22017-12-07 12:35:19 +090065genrule {
66 name: "libmojo_mojom_headers",
67 cmd: "$(location mojom_source_generator_sh)" +
68 " --mojom_bindings_generator=$(location mojom_bindings_generator)" +
69 " --package=external/libmojo" +
70 " --output_dir=$(genDir)" +
71 " --bytecode_path=$(genDir)" +
72 " --typemap=$(location gen/mojo/common/common_custom_types__type_mappings)" +
73 " --generators=c++" +
74 " --use_new_wrapper_types" +
75 " $(in)",
76
77 tools: [
78 "mojom_bindings_generator",
79 "mojom_source_generator_sh",
80 ],
81
82 tool_files: [
83 // This file was copied from out/Release in a Chrome checkout.
84 // TODO(lhchavez): Generate this file instead of hardcoding it.
85 "gen/mojo/common/common_custom_types__type_mappings",
86 ],
87
88 srcs: [":libmojo_mojom_files"],
89
90 out: [
91 "ipc/ipc.mojom.h",
92 "ipc/ipc.mojom-shared.h",
93 "ipc/ipc.mojom-shared-internal.h",
94 "mojo/common/file.mojom.h",
95 "mojo/common/file.mojom-shared.h",
96 "mojo/common/file.mojom-shared-internal.h",
97 "mojo/common/string16.mojom.h",
98 "mojo/common/string16.mojom-shared.h",
99 "mojo/common/string16.mojom-shared-internal.h",
100 "mojo/common/text_direction.mojom.h",
101 "mojo/common/text_direction.mojom-shared.h",
102 "mojo/common/text_direction.mojom-shared-internal.h",
103 "mojo/common/time.mojom.h",
104 "mojo/common/time.mojom-shared.h",
105 "mojo/common/time.mojom-shared-internal.h",
106 "mojo/common/unguessable_token.mojom.h",
107 "mojo/common/unguessable_token.mojom-shared.h",
108 "mojo/common/unguessable_token.mojom-shared-internal.h",
109 "mojo/common/version.mojom.h",
110 "mojo/common/version.mojom-shared.h",
111 "mojo/common/version.mojom-shared-internal.h",
112 "mojo/public/interfaces/bindings/interface_control_messages.mojom.h",
113 "mojo/public/interfaces/bindings/interface_control_messages.mojom-shared.h",
114 "mojo/public/interfaces/bindings/interface_control_messages.mojom-shared-internal.h",
115 "mojo/public/interfaces/bindings/pipe_control_messages.mojom.h",
116 "mojo/public/interfaces/bindings/pipe_control_messages.mojom-shared.h",
117 "mojo/public/interfaces/bindings/pipe_control_messages.mojom-shared-internal.h",
118 "ui/gfx/geometry/mojo/geometry.mojom.h",
119 "ui/gfx/geometry/mojo/geometry.mojom-shared.h",
120 "ui/gfx/geometry/mojo/geometry.mojom-shared-internal.h",
121 "ui/gfx/range/mojo/range.mojom.h",
122 "ui/gfx/range/mojo/range.mojom-shared.h",
123 "ui/gfx/range/mojo/range.mojom-shared-internal.h",
124 ],
125}
126
127genrule {
128 name: "libmojo_mojom_srcs",
129 cmd: "$(location mojom_source_generator_sh)" +
130 " --mojom_bindings_generator=$(location mojom_bindings_generator)" +
131 " --package=external/libmojo" +
132 " --output_dir=$(genDir)" +
133 " --bytecode_path=$(genDir)" +
134 " --typemap=$(location gen/mojo/common/common_custom_types__type_mappings)" +
135 " --generators=c++" +
136 " --use_new_wrapper_types" +
137 " $(in)",
138
139 tools: [
140 "mojom_bindings_generator",
141 "mojom_source_generator_sh",
142 ],
143
144 tool_files: [
145 // This file was copied from out/Release in a Chrome checkout.
146 // TODO(lhchavez): Generate this file instead of hardcoding it.
147 "gen/mojo/common/common_custom_types__type_mappings",
148 "soong/mojom_source_generator.sh",
149 ],
150
151 srcs: [":libmojo_mojom_files"],
152
153 out: [
154 "ipc/ipc.mojom.cc",
155 "ipc/ipc.mojom-shared.cc",
156 "mojo/common/file.mojom.cc",
157 "mojo/common/file.mojom-shared.cc",
158 "mojo/common/string16.mojom.cc",
159 "mojo/common/string16.mojom-shared.cc",
160 "mojo/common/text_direction.mojom.cc",
161 "mojo/common/text_direction.mojom-shared.cc",
162 "mojo/common/time.mojom.cc",
163 "mojo/common/time.mojom-shared.cc",
164 "mojo/common/unguessable_token.mojom.cc",
165 "mojo/common/unguessable_token.mojom-shared.cc",
166 "mojo/common/version.mojom.cc",
167 "mojo/common/version.mojom-shared.cc",
168 "mojo/public/interfaces/bindings/interface_control_messages.mojom.cc",
169 "mojo/public/interfaces/bindings/interface_control_messages.mojom-shared.cc",
170 "mojo/public/interfaces/bindings/pipe_control_messages.mojom.cc",
171 "mojo/public/interfaces/bindings/pipe_control_messages.mojom-shared.cc",
172 "ui/gfx/geometry/mojo/geometry.mojom.cc",
173 "ui/gfx/geometry/mojo/geometry.mojom-shared.cc",
174 "ui/gfx/range/mojo/range.mojom.cc",
175 "ui/gfx/range/mojo/range.mojom-shared.cc",
176 ],
177}
178
179genrule {
180 name: "libmojo_jni_headers",
181 cmd: "$(location soong/jni_generator_helper.sh)" +
182 " --jni_generator=$(location jni_generator)" +
183 " --output_dir=$(genDir)/jni" +
184 " --includes=base/android/jni_generator/jni_generator_helper.h" +
185 " --ptr_type=long" +
186 " --native_exports_optional" +
187 " $(in)",
188
189 tools: [
190 "jni_generator",
191 ],
192
193 tool_files: [
194 "soong/jni_generator_helper.sh",
195 ],
196
197 srcs: [
198 "base/android/java/src/org/chromium/base/BuildInfo.java",
199 "base/android/java/src/org/chromium/base/ContentUriUtils.java",
200 "base/android/java/src/org/chromium/base/ContextUtils.java",
201 "base/android/java/src/org/chromium/base/PathUtils.java",
202 "base/android/java/src/org/chromium/base/SystemMessageHandler.java",
203 // Runtime.class is added (instead of Runtime.java that lives in
204 // libcore) since the script that generates the JNI files does not
205 // handle compiling it well.
206 "jni/java/lang/Runtime.class",
207 "mojo/android/system/src/org/chromium/mojo/system/impl/BaseRunLoop.java",
208 "mojo/android/system/src/org/chromium/mojo/system/impl/CoreImpl.java",
209 "mojo/android/system/src/org/chromium/mojo/system/impl/WatcherImpl.java",
210 ],
211
212 out: [
213 "jni/BuildInfo_jni.h",
214 "jni/ContentUriUtils_jni.h",
215 "jni/ContextUtils_jni.h",
216 "jni/PathUtils_jni.h",
217 "jni/SystemMessageHandler_jni.h",
218 "jni/Runtime_jni.h",
219 "jni/BaseRunLoop_jni.h",
220 "jni/CoreImpl_jni.h",
221 "jni/WatcherImpl_jni.h",
222 ],
223}
224
Risanc7e84982018-01-20 16:42:44 +0900225cc_library_shared {
226 name: "libmojo",
227
228 generated_headers: [
229 "libmojo_jni_headers",
230 "libmojo_mojom_headers",
231 ],
232
233 generated_sources: [
234 "libmojo_mojom_srcs",
235 ],
236
237 export_generated_headers: [
238 "libmojo_jni_headers",
239 "libmojo_mojom_headers",
240 ],
241
242 srcs: [
243 "base/android/build_info.cc",
244 "base/android/content_uri_utils.cc",
245 "base/android/context_utils.cc",
246 "base/android/java_runtime.cc",
247 "base/android/jni_android.cc",
248 "base/android/jni_string.cc",
249 "base/android/path_utils.cc",
250 "base/android/scoped_java_ref.cc",
251 "base/base_paths.cc",
252 "base/base_paths_android.cc",
253 "base/debug/proc_maps_linux.cc",
254 "base/debug/stack_trace_android.cc",
255 "base/files/file_util_android.cc",
256 "base/message_loop/message_pump_android.cc",
257 "base/path_service.cc",
258 "base/trace_event/java_heap_dump_provider_android.cc",
259 "base/trace_event/trace_event_android.cc",
260 "base/unguessable_token.cc",
261 "device/bluetooth/bluetooth_advertisement.cc",
262 "device/bluetooth/bluetooth_uuid.cc",
263 "device/bluetooth/bluez/bluetooth_service_attribute_value_bluez.cc",
264 "ipc/ipc_message.cc",
265 "ipc/ipc_message_attachment.cc",
266 "ipc/ipc_message_attachment_set.cc",
267 "ipc/ipc_message_utils.cc",
268 "ipc/ipc_mojo_handle_attachment.cc",
269 "ipc/ipc_mojo_message_helper.cc",
270 "ipc/ipc_mojo_param_traits.cc",
271 "ipc/ipc_platform_file_attachment_posix.cc",
272 "mojo/android/system/base_run_loop.cc",
273 "mojo/android/system/core_impl.cc",
274 "mojo/android/system/watcher_impl.cc",
275 "mojo/common/common_custom_types_struct_traits.cc",
276 "mojo/edk/embedder/connection_params.cc",
277 "mojo/edk/embedder/embedder.cc",
278 "mojo/edk/embedder/entrypoints.cc",
279 "mojo/edk/embedder/platform_channel_pair.cc",
280 "mojo/edk/embedder/platform_channel_pair_posix.cc",
281 "mojo/edk/embedder/platform_channel_utils_posix.cc",
282 "mojo/edk/embedder/platform_handle.cc",
283 "mojo/edk/embedder/platform_handle_utils_posix.cc",
284 "mojo/edk/embedder/platform_shared_buffer.cc",
285 "mojo/edk/embedder/pending_process_connection.cc",
286 "mojo/edk/embedder/test_embedder.cc",
287 "mojo/edk/system/awakable_list.cc",
288 "mojo/edk/system/broker_host.cc",
289 "mojo/edk/system/broker_posix.cc",
290 "mojo/edk/system/channel.cc",
291 "mojo/edk/system/channel_posix.cc",
292 "mojo/edk/system/configuration.cc",
293 "mojo/edk/system/core.cc",
294 "mojo/edk/system/data_pipe_consumer_dispatcher.cc",
295 "mojo/edk/system/data_pipe_control_message.cc",
296 "mojo/edk/system/data_pipe_producer_dispatcher.cc",
297 "mojo/edk/system/dispatcher.cc",
298 "mojo/edk/system/handle_table.cc",
299 "mojo/edk/system/mapping_table.cc",
300 "mojo/edk/system/message_for_transit.cc",
301 "mojo/edk/system/message_pipe_dispatcher.cc",
302 "mojo/edk/system/node_channel.cc",
303 "mojo/edk/system/node_controller.cc",
304 "mojo/edk/system/platform_handle_dispatcher.cc",
305 "mojo/edk/system/ports/event.cc",
306 "mojo/edk/system/ports/message.cc",
307 "mojo/edk/system/ports/message_queue.cc",
308 "mojo/edk/system/ports/name.cc",
309 "mojo/edk/system/ports/node.cc",
310 "mojo/edk/system/ports/port.cc",
311 "mojo/edk/system/ports/port_ref.cc",
312 "mojo/edk/system/ports_message.cc",
313 "mojo/edk/system/request_context.cc",
314 "mojo/edk/system/shared_buffer_dispatcher.cc",
315 "mojo/edk/system/wait_set_dispatcher.cc",
316 "mojo/edk/system/waiter.cc",
317 "mojo/edk/system/watcher.cc",
318 "mojo/edk/system/watcher_set.cc",
319 "mojo/public/c/system/thunks.cc",
320 "mojo/public/cpp/bindings/lib/array_internal.cc",
321 "mojo/public/cpp/bindings/lib/associated_group.cc",
322 "mojo/public/cpp/bindings/lib/associated_group_controller.cc",
323 "mojo/public/cpp/bindings/lib/binding_state.cc",
324 "mojo/public/cpp/bindings/lib/connector.cc",
325 "mojo/public/cpp/bindings/lib/control_message_handler.cc",
326 "mojo/public/cpp/bindings/lib/control_message_proxy.cc",
327 "mojo/public/cpp/bindings/lib/filter_chain.cc",
328 "mojo/public/cpp/bindings/lib/fixed_buffer.cc",
329 "mojo/public/cpp/bindings/lib/interface_endpoint_client.cc",
330 "mojo/public/cpp/bindings/lib/message.cc",
331 "mojo/public/cpp/bindings/lib/message_buffer.cc",
332 "mojo/public/cpp/bindings/lib/message_builder.cc",
333 "mojo/public/cpp/bindings/lib/message_header_validator.cc",
334 "mojo/public/cpp/bindings/lib/multiplex_router.cc",
335 "mojo/public/cpp/bindings/lib/native_struct.cc",
336 "mojo/public/cpp/bindings/lib/native_struct_data.cc",
337 "mojo/public/cpp/bindings/lib/native_struct_serialization.cc",
338 "mojo/public/cpp/bindings/lib/pipe_control_message_handler.cc",
339 "mojo/public/cpp/bindings/lib/pipe_control_message_proxy.cc",
340 "mojo/public/cpp/bindings/lib/scoped_interface_endpoint_handle.cc",
341 "mojo/public/cpp/bindings/lib/serialization_context.cc",
342 "mojo/public/cpp/bindings/lib/sync_handle_registry.cc",
343 "mojo/public/cpp/bindings/lib/sync_handle_watcher.cc",
344 "mojo/public/cpp/bindings/lib/validation_context.cc",
345 "mojo/public/cpp/bindings/lib/validation_errors.cc",
346 "mojo/public/cpp/bindings/lib/validation_util.cc",
347 "mojo/public/cpp/system/buffer.cc",
348 "mojo/public/cpp/system/platform_handle.cc",
349 "mojo/public/cpp/system/watcher.cc",
350 "ui/gfx/geometry/insets.cc",
351 "ui/gfx/geometry/insets_f.cc",
352 "ui/gfx/geometry/point.cc",
353 "ui/gfx/geometry/point_conversions.cc",
354 "ui/gfx/geometry/point_f.cc",
355 "ui/gfx/geometry/rect.cc",
356 "ui/gfx/geometry/rect_f.cc",
357 "ui/gfx/geometry/size.cc",
358 "ui/gfx/geometry/size_conversions.cc",
359 "ui/gfx/geometry/size_f.cc",
360 "ui/gfx/geometry/vector2d.cc",
361 "ui/gfx/geometry/vector2d_f.cc",
362 "ui/gfx/range/range.cc",
363 "ui/gfx/range/range_f.cc",
364 ],
365
366 cflags: [
367 "-Wall",
368 "-Werror",
369 "-Wno-unused-parameter",
370 "-Wno-missing-field-initializers",
371 "-DMOJO_EDK_LEGACY_PROTOCOL",
372 ],
373
374 // We use OS_POSIX since we need to communicate with Chrome.
375 // We also pass NO_ASHMEM to make base::SharedMemory avoid using it and prefer
376 // the POSIX versions.
377 cppflags: [
378 "-Wno-sign-promo",
379 "-Wno-non-virtual-dtor",
380 "-Wno-ignored-qualifiers",
381 "-Wno-extra",
382 "-DOS_POSIX",
383 "-DNO_ASHMEM",
384 "-DNO_TCMALLOC",
385 ],
386
387 shared_libs: [
388 "libevent",
389 "liblog",
390 "libchrome",
391 "libchrome-crypto",
392 ],
393
394 export_include_dirs: ["."],
395}
396
Risand3b01992017-12-13 15:27:58 +0900397genrule {
398 name: "libmojo_mojom_java_srcs",
399 cmd: "$(location mojom_source_generator_sh)" +
400 " --mojom_bindings_generator=$(location mojom_bindings_generator)" +
401 " --package=external/libmojo" +
402 " --output_dir=$(genDir)" +
403 " --bytecode_path=$(genDir)" +
404 " --typemap=$(location gen/mojo/common/common_custom_types__type_mappings)" +
405 " --generators=java" +
406 " --use_new_wrapper_types" +
407 " $(in)",
408
409 tools: [
410 "mojom_bindings_generator",
411 "mojom_source_generator_sh",
412 ],
413
414 tool_files: [
415 // This file was copied from out/Release in a Chrome checkout.
416 // TODO(lhchavez): Generate this file instead of hardcoding it.
417 "gen/mojo/common/common_custom_types__type_mappings",
418 ],
419
420 srcs: [":libmojo_mojom_files"],
421
422 out: [
423 "src/org/chromium/gfx/mojom/InsetsF.java",
424 "src/org/chromium/gfx/mojom/Insets.java",
425 "src/org/chromium/gfx/mojom/PointF.java",
426 "src/org/chromium/gfx/mojom/Point.java",
427 "src/org/chromium/gfx/mojom/RangeF.java",
428 "src/org/chromium/gfx/mojom/Range.java",
429 "src/org/chromium/gfx/mojom/RectF.java",
430 "src/org/chromium/gfx/mojom/Rect.java",
431 "src/org/chromium/gfx/mojom/SizeF.java",
432 "src/org/chromium/gfx/mojom/Size.java",
433 "src/org/chromium/gfx/mojom/Vector2dF.java",
434 "src/org/chromium/gfx/mojom/Vector2d.java",
435 "src/org/chromium/IPC/mojom/ChannelBootstrap_Internal.java",
436 "src/org/chromium/IPC/mojom/ChannelBootstrap.java",
437 "src/org/chromium/IPC/mojom/Channel_Internal.java",
438 "src/org/chromium/IPC/mojom/Channel.java",
439 "src/org/chromium/IPC/mojom/GenericInterface_Internal.java",
440 "src/org/chromium/IPC/mojom/GenericInterface.java",
441 "src/org/chromium/IPC/mojom/IpcConstants.java",
442 "src/org/chromium/IPC/mojom/SerializedHandle.java",
443 "src/org/chromium/mojo/bindings/interfacecontrol/FlushForTesting.java",
444 "src/org/chromium/mojo/bindings/interfacecontrol/InterfaceControlMessagesConstants.java",
445 "src/org/chromium/mojo/bindings/interfacecontrol/QueryVersion.java",
446 "src/org/chromium/mojo/bindings/interfacecontrol/QueryVersionResult.java",
447 "src/org/chromium/mojo/bindings/interfacecontrol/RequireVersion.java",
448 "src/org/chromium/mojo/bindings/interfacecontrol/RunInput.java",
449 "src/org/chromium/mojo/bindings/interfacecontrol/RunMessageParams.java",
450 "src/org/chromium/mojo/bindings/interfacecontrol/RunOrClosePipeInput.java",
451 "src/org/chromium/mojo/bindings/interfacecontrol/RunOrClosePipeMessageParams.java",
452 "src/org/chromium/mojo/bindings/interfacecontrol/RunOutput.java",
453 "src/org/chromium/mojo/bindings/interfacecontrol/RunResponseMessageParams.java",
454 "src/org/chromium/mojo/bindings/pipecontrol/DisconnectReason.java",
455 "src/org/chromium/mojo/bindings/pipecontrol/PeerAssociatedEndpointClosedEvent.java",
456 "src/org/chromium/mojo/bindings/pipecontrol/PipeControlMessagesConstants.java",
457 "src/org/chromium/mojo/bindings/pipecontrol/RunOrClosePipeInput.java",
458 "src/org/chromium/mojo/bindings/pipecontrol/RunOrClosePipeMessageParams.java",
459 "src/org/chromium/mojo/common/mojom/File.java",
460 "src/org/chromium/mojo/common/mojom/String16.java",
461 "src/org/chromium/mojo/common/mojom/TextDirection.java",
462 "src/org/chromium/mojo/common/mojom/TimeDelta.java",
463 "src/org/chromium/mojo/common/mojom/Time.java",
464 "src/org/chromium/mojo/common/mojom/TimeTicks.java",
465 "src/org/chromium/mojo/common/mojom/UnguessableToken.java",
466 "src/org/chromium/mojo/common/mojom/Version.java",
467 ],
468}
469
Risanc7e84982018-01-20 16:42:44 +0900470java_library {
471 name: "android.mojo",
472
473 srcs: [
474 ":libmojo_mojom_java_srcs",
475 "base/android/java/src/org/chromium/base/BuildInfo.java",
476 "base/android/java/src/org/chromium/base/ContextUtils.java",
477 "base/android/java/src/org/chromium/base/Log.java",
478 "base/android/java/src/org/chromium/base/PackageUtils.java",
479 "base/android/java/src/org/chromium/base/VisibleForTesting.java",
480 "mojo/android/system/src/**/*.java",
481 "mojo/public/java/system/src/**/*.java",
482 "mojo/public/java/bindings/src/**/*.java",
483 "base/android/java/src/org/chromium/base/annotations/**/*.java",
484 ],
485}