xref: /aosp_15_r20/external/libchrome/Android.bp (revision 635a864187cb8b6c713ff48b7e790a6b21769273)
1// Copyright (C) 2015 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// Common defaults
16// ========================================================
17
18// Using Chrome header files directly could cause -Wunused-parameter errors,
19// and this is workaround. Please find the document in include_generator.py
20// for details.
21// Note: gensrcs does not support exclude_srcs, so filegroup rule is
22// introduced.
23package {
24    default_applicable_licenses: ["external_libchrome_license"],
25}
26
27// Added automatically by a large-scale-change that took the approach of
28// 'apply every license found to every target'. While this makes sure we respect
29// every license restriction, it may not be entirely correct.
30//
31// e.g. GPL in an MIT project might only apply to the contrib/ directory.
32//
33// Please consider splitting the single license below into multiple licenses,
34// taking care not to lose any license_kind information, and overriding the
35// default license using the 'licenses: [...]' property on targets as needed.
36//
37// For unused files, consider creating a 'fileGroup' with "//visibility:private"
38// to attach the license to, and including a comment whether the files may be
39// used in the current project.
40// See: http://go/android-license-faq
41license {
42    name: "external_libchrome_license",
43    visibility: [":__subpackages__"],
44    license_kinds: [
45        "SPDX-license-identifier-Apache-2.0",
46        "SPDX-license-identifier-BSD",
47        "SPDX-license-identifier-GPL-2.0",
48        "SPDX-license-identifier-LGPL-2.1",
49        "SPDX-license-identifier-MIT",
50        "SPDX-license-identifier-MPL",
51        "SPDX-license-identifier-Unicode-DFS",
52        "legacy_unencumbered",
53    ],
54    license_text: [
55        "NOTICE",
56    ],
57}
58
59filegroup {
60    name: "libchrome-include-sources",
61    srcs: [
62        "base/allocator/allocator_extension.h",
63        "base/allocator/allocator_shim.h",
64        "base/allocator/allocator_shim_internals.h",
65        "base/allocator/allocator_shim_override_cpp_symbols.h",
66        "base/allocator/allocator_shim_override_libc_symbols.h",
67        "base/allocator/allocator_shim_override_linker_wrapped_symbols.h",
68        "base/allocator/buildflags.h",
69        "base/android/android_hardware_buffer_compat.h",
70        "base/android/build_info.h",
71        "base/android/content_uri_utils.h",
72        "base/android/java_exception_reporter.h",
73        "base/android/jni_android.h",
74        "base/android/jni_array.h",
75        "base/android/jni_string.h",
76        "base/android/path_utils.h",
77        "base/android/scoped_hardware_buffer_handle.h",
78        "base/android/scoped_java_ref.h",
79        "base/android/sys_utils.h",
80        "base/at_exit.h",
81        "base/atomic_ref_count.h",
82        "base/atomic_sequence_num.h",
83        "base/atomicops.h",
84        "base/atomicops_internals_atomicword_compat.h",
85        "base/atomicops_internals_portable.h",
86        "base/atomicops_internals_x86_msvc.h",
87        "base/auto_reset.h",
88        "base/barrier_closure.h",
89        "base/base64.h",
90        "base/base64url.h",
91        "base/base_export.h",
92        "base/base_paths.h",
93        "base/base_paths_android.h",
94        "base/base_paths_posix.h",
95        "base/base_switches.h",
96        "base/big_endian.h",
97        "base/bind.h",
98        "base/bind_helpers.h",
99        "base/bind_internal.h",
100        "base/bit_cast.h",
101        "base/bits.h",
102        "base/build_time.h",
103        "base/callback.h",
104        "base/callback_forward.h",
105        "base/callback_helpers.h",
106        "base/callback_internal.h",
107        "base/callback_list.h",
108        "base/cancelable_callback.h",
109        "base/cfi_buildflags.h",
110        "base/command_line.h",
111        "base/compiler_specific.h",
112        "base/component_export.h",
113        "base/containers/adapters.h",
114        "base/containers/circular_deque.h",
115        "base/containers/flat_map.h",
116        "base/containers/flat_set.h",
117        "base/containers/flat_tree.h",
118        "base/containers/hash_tables.h",
119        "base/containers/linked_list.h",
120        "base/containers/mru_cache.h",
121        "base/containers/queue.h",
122        "base/containers/ring_buffer.h",
123        "base/containers/small_map.h",
124        "base/containers/span.h",
125        "base/containers/stack.h",
126        "base/containers/stack_container.h",
127        "base/containers/vector_buffer.h",
128        "base/cpu.h",
129        "base/critical_closure.h",
130        "base/debug/activity_tracker.h",
131        "base/debug/alias.h",
132        "base/debug/crash_logging.h",
133        "base/debug/debugger.h",
134        "base/debug/debugging_buildflags.h",
135        "base/debug/dump_without_crashing.h",
136        "base/debug/elf_reader_linux.h",
137        "base/debug/leak_annotations.h",
138        "base/debug/leak_tracker.h",
139        "base/debug/proc_maps_linux.h",
140        "base/debug/profiler.h",
141        "base/debug/stack_trace.h",
142        "base/debug/task_annotator.h",
143        "base/debug/thread_heap_usage_tracker.h",
144        "base/environment.h",
145        "base/export_template.h",
146        "base/feature_list.h",
147        "base/file_descriptor_posix.h",
148        "base/file_version_info.h",
149        "base/files/dir_reader_fallback.h",
150        "base/files/dir_reader_linux.h",
151        "base/files/dir_reader_posix.h",
152        "base/files/file.h",
153        "base/files/file_descriptor_watcher_posix.h",
154        "base/files/file_enumerator.h",
155        "base/files/file_path.h",
156        "base/files/file_path_watcher.h",
157        "base/files/file_tracing.h",
158        "base/files/file_util.h",
159        "base/files/important_file_writer.h",
160        "base/files/memory_mapped_file.h",
161        "base/files/platform_file.h",
162        "base/files/scoped_file.h",
163        "base/files/scoped_temp_dir.h",
164        "base/format_macros.h",
165        "base/functional/bind.h",
166        "base/functional/callback.h",
167        "base/functional/callback_forward.h",
168        "base/functional/callback_helpers.h",
169        "base/gtest_prod_util.h",
170        "base/guid.h",
171        "base/hash.h",
172        "base/i18n/base_i18n_export.h",
173        "base/i18n/rtl.h",
174        "base/json/json_file_value_serializer.h",
175        "base/json/json_parser.h",
176        "base/json/json_reader.h",
177        "base/json/json_string_value_serializer.h",
178        "base/json/json_value_converter.h",
179        "base/json/json_writer.h",
180        "base/json/string_escape.h",
181        "base/lazy_instance.h",
182        "base/lazy_instance_helpers.h",
183        "base/location.h",
184        "base/logging.h",
185        "base/macros.h",
186        "base/md5.h",
187        "base/memory/aligned_memory.h",
188        "base/memory/free_deleter.h",
189        "base/memory/linked_ptr.h",
190        "base/memory/platform_shared_memory_region.h",
191        "base/memory/protected_memory.h",
192        "base/memory/protected_memory_buildflags.h",
193        "base/memory/protected_memory_cfi.h",
194        "base/memory/ptr_util.h",
195        "base/memory/raw_scoped_refptr_mismatch_checker.h",
196        "base/memory/read_only_shared_memory_region.h",
197        "base/memory/ref_counted.h",
198        "base/memory/ref_counted_delete_on_sequence.h",
199        "base/memory/ref_counted_memory.h",
200        "base/memory/scoped_policy.h",
201        "base/memory/scoped_refptr.h",
202        "base/memory/shared_memory.h",
203        "base/memory/shared_memory_handle.h",
204        "base/memory/shared_memory_helper.h",
205        "base/memory/shared_memory_mapping.h",
206        "base/memory/singleton.h",
207        "base/memory/unsafe_shared_memory_region.h",
208        "base/memory/weak_ptr.h",
209        "base/memory/writable_shared_memory_region.h",
210        "base/message_loop/incoming_task_queue.h",
211        "base/message_loop/message_loop.h",
212        "base/message_loop/message_loop_current.h",
213        "base/message_loop/message_loop_task_runner.h",
214        "base/message_loop/message_pump.h",
215        "base/message_loop/message_pump_default.h",
216        "base/message_loop/message_pump_for_io.h",
217        "base/message_loop/message_pump_for_ui.h",
218        "base/message_loop/message_pump_glib.h",
219        "base/message_loop/message_pump_libevent.h",
220        "base/message_loop/timer_slack.h",
221        "base/message_loop/watchable_io_message_pump_posix.h",
222        "base/metrics/bucket_ranges.h",
223        "base/metrics/dummy_histogram.h",
224        "base/metrics/field_trial.h",
225        "base/metrics/field_trial_param_associator.h",
226        "base/metrics/field_trial_params.h",
227        "base/metrics/histogram.h",
228        "base/metrics/histogram_base.h",
229        "base/metrics/histogram_delta_serialization.h",
230        "base/metrics/histogram_flattener.h",
231        "base/metrics/histogram_functions.h",
232        "base/metrics/histogram_macros.h",
233        "base/metrics/histogram_macros_internal.h",
234        "base/metrics/histogram_macros_local.h",
235        "base/metrics/histogram_samples.h",
236        "base/metrics/histogram_snapshot_manager.h",
237        "base/metrics/metrics_hashes.h",
238        "base/metrics/persistent_histogram_allocator.h",
239        "base/metrics/persistent_histogram_storage.h",
240        "base/metrics/persistent_memory_allocator.h",
241        "base/metrics/persistent_sample_map.h",
242        "base/metrics/record_histogram_checker.h",
243        "base/metrics/sample_map.h",
244        "base/metrics/sample_vector.h",
245        "base/metrics/single_sample_metrics.h",
246        "base/metrics/sparse_histogram.h",
247        "base/metrics/statistics_recorder.h",
248        "base/metrics/user_metrics.h",
249        "base/metrics/user_metrics_action.h",
250        "base/native_library.h",
251        "base/no_destructor.h",
252        "base/numerics/checked_math.h",
253        "base/numerics/checked_math_impl.h",
254        "base/numerics/clamped_math.h",
255        "base/numerics/clamped_math_impl.h",
256        "base/numerics/math_constants.h",
257        "base/numerics/ranges.h",
258        "base/numerics/safe_conversions.h",
259        "base/numerics/safe_conversions_arm_impl.h",
260        "base/numerics/safe_conversions_impl.h",
261        "base/numerics/safe_math.h",
262        "base/numerics/safe_math_arm_impl.h",
263        "base/numerics/safe_math_clang_gcc_impl.h",
264        "base/numerics/safe_math_shared_impl.h",
265        "base/observer_list.h",
266        "base/observer_list_threadsafe.h",
267        "base/optional.h",
268        "base/os_compat_android.h",
269        "base/path_service.h",
270        "base/pending_task.h",
271        "base/pickle.h",
272        "base/posix/eintr_wrapper.h",
273        "base/posix/file_descriptor_shuffle.h",
274        "base/posix/global_descriptors.h",
275        "base/posix/safe_strerror.h",
276        "base/posix/unix_domain_socket.h",
277        "base/post_task_and_reply_with_result_internal.h",
278        "base/power_monitor/power_monitor.h",
279        "base/power_monitor/power_monitor_device_source.h",
280        "base/power_monitor/power_monitor_source.h",
281        "base/power_monitor/power_observer.h",
282        "base/process/internal_aix.h",
283        "base/process/internal_linux.h",
284        "base/process/kill.h",
285        "base/process/launch.h",
286        "base/process/memory.h",
287        "base/process/process.h",
288        "base/process/process_handle.h",
289        "base/process/process_info.h",
290        "base/process/process_iterator.h",
291        "base/process/process_metrics.h",
292        "base/process/process_metrics_iocounters.h",
293        "base/rand_util.h",
294        "base/run_loop.h",
295        "base/sampling_heap_profiler/lock_free_address_hash_set.h",
296        "base/sampling_heap_profiler/sampling_heap_profiler.h",
297        "base/scoped_clear_errno.h",
298        "base/scoped_generic.h",
299        "base/scoped_native_library.h",
300        "base/scoped_observer.h",
301        "base/sequence_checker.h",
302        "base/sequence_checker_impl.h",
303        "base/sequence_token.h",
304        "base/sequenced_task_runner.h",
305        "base/sequenced_task_runner_helpers.h",
306        "base/sha1.h",
307        "base/single_thread_task_runner.h",
308        "base/stl_util.h",
309        "base/strings/char_traits.h",
310        "base/strings/nullable_string16.h",
311        "base/strings/old_utf_string_conversions.h",
312        "base/strings/pattern.h",
313        "base/strings/safe_sprintf.h",
314        "base/strings/strcat.h",
315        "base/strings/string16.h",
316        "base/strings/string_number_conversions.h",
317        "base/strings/string_piece.h",
318        "base/strings/string_piece_forward.h",
319        "base/strings/string_split.h",
320        "base/strings/string_tokenizer.h",
321        "base/strings/string_util.h",
322        "base/strings/string_util_posix.h",
323        "base/strings/stringize_macros.h",
324        "base/strings/stringprintf.h",
325        "base/strings/sys_string_conversions.h",
326        "base/strings/utf_string_conversion_utils.h",
327        "base/strings/utf_string_conversions.h",
328        "base/sync_socket.h",
329        "base/synchronization/atomic_flag.h",
330        "base/synchronization/cancellation_flag.h",
331        "base/synchronization/condition_variable.h",
332        "base/synchronization/lock.h",
333        "base/synchronization/lock_impl.h",
334        "base/synchronization/spin_wait.h",
335        "base/synchronization/synchronization_buildflags.h",
336        "base/synchronization/waitable_event.h",
337        "base/synchronization/waitable_event_watcher.h",
338        "base/sys_byteorder.h",
339        "base/sys_info.h",
340        "base/sys_info_internal.h",
341        "base/task/cancelable_task_tracker.h",
342        "base/task/sequence_manager/enqueue_order.h",
343        "base/task/sequence_manager/graceful_queue_shutdown_helper.h",
344        "base/task/sequence_manager/intrusive_heap.h",
345        "base/task/sequence_manager/lazily_deallocated_deque.h",
346        "base/task/sequence_manager/lazy_now.h",
347        "base/task/sequence_manager/moveable_auto_lock.h",
348        "base/task/sequence_manager/real_time_domain.h",
349        "base/task/sequence_manager/sequence_manager.h",
350        "base/task/sequence_manager/sequence_manager_impl.h",
351        "base/task/sequence_manager/sequenced_task_source.h",
352        "base/task/sequence_manager/task_queue.h",
353        "base/task/sequence_manager/task_queue_impl.h",
354        "base/task/sequence_manager/task_queue_selector.h",
355        "base/task/sequence_manager/task_queue_selector_logic.h",
356        "base/task/sequence_manager/task_time_observer.h",
357        "base/task/sequence_manager/test/fake_task.h",
358        "base/task/sequence_manager/test/lazy_thread_controller_for_test.h",
359        "base/task/sequence_manager/test/mock_time_domain.h",
360        "base/task/sequence_manager/test/sequence_manager_for_test.h",
361        "base/task/sequence_manager/test/test_task_queue.h",
362        "base/task/sequence_manager/test/test_task_time_observer.h",
363        "base/task/sequence_manager/thread_controller.h",
364        "base/task/sequence_manager/thread_controller_impl.h",
365        "base/task/sequence_manager/thread_controller_with_message_pump_impl.h",
366        "base/task/sequence_manager/time_domain.h",
367        "base/task/sequence_manager/work_queue.h",
368        "base/task/sequence_manager/work_queue_sets.h",
369        "base/task_runner.h",
370        "base/task_runner_util.h",
371        "base/task_scheduler/can_schedule_sequence_observer.h",
372        "base/task_scheduler/delayed_task_manager.h",
373        "base/task_scheduler/environment_config.h",
374        "base/task_scheduler/lazy_task_runner.h",
375        "base/task_scheduler/post_task.h",
376        "base/task_scheduler/priority_queue.h",
377        "base/task_scheduler/scheduler_lock.h",
378        "base/task_scheduler/scheduler_lock_impl.h",
379        "base/task_scheduler/scheduler_single_thread_task_runner_manager.h",
380        "base/task_scheduler/scheduler_worker.h",
381        "base/task_scheduler/scheduler_worker_observer.h",
382        "base/task_scheduler/scheduler_worker_params.h",
383        "base/task_scheduler/scheduler_worker_pool.h",
384        "base/task_scheduler/scheduler_worker_pool_impl.h",
385        "base/task_scheduler/scheduler_worker_pool_params.h",
386        "base/task_scheduler/scheduler_worker_stack.h",
387        "base/task_scheduler/scoped_set_task_priority_for_current_thread.h",
388        "base/task_scheduler/sequence.h",
389        "base/task_scheduler/sequence_sort_key.h",
390        "base/task_scheduler/service_thread.h",
391        "base/task_scheduler/single_thread_task_runner_thread_mode.h",
392        "base/task_scheduler/task.h",
393        "base/task_scheduler/task_scheduler.h",
394        "base/task_scheduler/task_scheduler_impl.h",
395        "base/task_scheduler/task_tracker.h",
396        "base/task_scheduler/task_tracker_posix.h",
397        "base/task_scheduler/task_traits.h",
398        "base/task_scheduler/task_traits_details.h",
399        "base/task_scheduler/test_utils.h",
400        "base/task_scheduler/tracked_ref.h",
401        "base/template_util.h",
402        "base/test/bind_test_util.h",
403        "base/test/copy_only_int.h",
404        "base/test/fontconfig_util_linux.h",
405        "base/test/gtest_util.h",
406        "base/test/metrics/histogram_enum_reader.h",
407        "base/test/metrics/histogram_tester.h",
408        "base/test/mock_entropy_provider.h",
409        "base/test/move_only_int.h",
410        "base/test/multiprocess_test.h",
411        "base/test/scoped_environment_variable_override.h",
412        "base/test/scoped_feature_list.h",
413        "base/test/scoped_locale.h",
414        "base/test/scoped_task_environment.h",
415        "base/test/simple_test_clock.h",
416        "base/test/simple_test_tick_clock.h",
417        "base/test/test_file_util.h",
418        "base/test/test_io_thread.h",
419        "base/test/test_mock_time_task_runner.h",
420        "base/test/test_pending_task.h",
421        "base/test/test_shared_memory_util.h",
422        "base/test/test_simple_task_runner.h",
423        "base/test/test_switches.h",
424        "base/test/test_timeouts.h",
425        "base/third_party/dynamic_annotations/dynamic_annotations.h",
426        "base/third_party/icu/icu_utf.h",
427        "base/third_party/libevent/event.h",
428        "base/third_party/nspr/prtime.h",
429        "base/third_party/symbolize/symbolize.h",
430        "base/third_party/valgrind/memcheck.h",
431        "base/third_party/valgrind/valgrind.h",
432        "base/thread_annotations.h",
433        "base/threading/platform_thread.h",
434        "base/threading/platform_thread_internal_posix.h",
435        "base/threading/post_task_and_reply_impl.h",
436        "base/threading/scoped_blocking_call.h",
437        "base/threading/sequence_local_storage_map.h",
438        "base/threading/sequence_local_storage_slot.h",
439        "base/threading/sequenced_task_runner_handle.h",
440        "base/threading/simple_thread.h",
441        "base/threading/thread.h",
442        "base/threading/thread_checker.h",
443        "base/threading/thread_checker_impl.h",
444        "base/threading/thread_collision_warner.h",
445        "base/threading/thread_id_name_manager.h",
446        "base/threading/thread_local.h",
447        "base/threading/thread_local_storage.h",
448        "base/threading/thread_restrictions.h",
449        "base/threading/thread_task_runner_handle.h",
450        "base/time/clock.h",
451        "base/time/default_clock.h",
452        "base/time/default_tick_clock.h",
453        "base/time/tick_clock.h",
454        "base/time/time.h",
455        "base/time/time_override.h",
456        "base/time/time_to_iso8601.h",
457        "base/timer/elapsed_timer.h",
458        "base/timer/hi_res_timer_manager.h",
459        "base/timer/mock_timer.h",
460        "base/timer/timer.h",
461        "base/token.h",
462        "base/trace_event/common/trace_event_common.h",
463        "base/trace_event/heap_profiler.h",
464        "base/trace_event/trace_event.h",
465        "base/tuple.h",
466        "base/unguessable_token.h",
467        "base/value_iterators.h",
468        "base/values.h",
469        "base/version.h",
470        "base/vlog.h",
471        "build/build_config.h",
472        "build/buildflag.h",
473        "device/bluetooth/bluetooth_advertisement.h",
474        "device/bluetooth/bluetooth_common.h",
475        "device/bluetooth/bluetooth_export.h",
476        "device/bluetooth/bluetooth_uuid.h",
477        "device/bluetooth/bluez/bluetooth_service_attribute_value_bluez.h",
478        "testing/gmock/include/gmock/gmock.h",
479        "testing/gtest/include/gtest/gtest.h",
480        "testing/gtest/include/gtest/gtest_prod.h",
481        "testing/multiprocess_func_list.h",
482        "testing/platform_test.h",
483        "third_party/ashmem/ashmem.h",
484        "third_party/modp_b64/modp_b64.h",
485        "third_party/protobuf/src/google/protobuf/message_lite.h",
486        "third_party/re2/src/re2/re2.h",
487        "ui/gfx/geometry/insets.h",
488        "ui/gfx/geometry/insets_f.h",
489        "ui/gfx/geometry/mojo/geometry_struct_traits.h",
490        "ui/gfx/geometry/point.h",
491        "ui/gfx/geometry/point_conversions.h",
492        "ui/gfx/geometry/point_f.h",
493        "ui/gfx/geometry/rect.h",
494        "ui/gfx/geometry/rect_f.h",
495        "ui/gfx/geometry/safe_integer_conversions.h",
496        "ui/gfx/geometry/scroll_offset.h",
497        "ui/gfx/geometry/size.h",
498        "ui/gfx/geometry/size_conversions.h",
499        "ui/gfx/geometry/size_f.h",
500        "ui/gfx/geometry/vector2d.h",
501        "ui/gfx/geometry/vector2d_f.h",
502        "ui/gfx/gfx_export.h",
503        "ui/gfx/range/gfx_range_export.h",
504        "ui/gfx/range/mojo/range_struct_traits.h",
505        "ui/gfx/range/range.h",
506        "ui/gfx/range/range_f.h",
507    ],
508}
509
510gensrcs {
511    name: "libchrome-include",
512    cmd: "$(location libchrome_tools/include_generator.py) $(in) $(out)",
513    tool_files: ["libchrome_tools/include_generator.py"],
514    export_include_dirs: ["."],
515    srcs: [":libchrome-include-sources"],
516    output_extension: "h",
517}
518
519cc_defaults {
520    name: "libchrome-defaults",
521
522    cflags: [
523        "-Wall",
524        "-Werror",
525        "-Wno-deprecated-declarations",
526        "-Wno-implicit-fallthrough",
527        "-Wno-implicit-int-float-conversion",
528        // memory_mapped_file.cc:80, json_parser.cc:264,
529        // sys_string_conversions_posix.cc:122, and
530        // icu_utf.cc:161,165 have -Wno-implicit-fallthrough.
531        "-Wno-missing-field-initializers",
532        "-Wno-unused-parameter",
533    ],
534
535    // Note: Although the generated header files are exported here, in building
536    // libchrome, "." has priority (unlike building projects using libchrome),
537    // so the raw header files are used for them.
538    generated_headers: ["libchrome-include"],
539    export_generated_headers: ["libchrome-include"],
540    header_libs: ["jni_headers"],
541    export_header_lib_headers: ["jni_headers"],
542    target: {
543        host: {
544            cflags: [
545                "-D__ANDROID_HOST__",
546                "-DDONT_EMBED_BUILD_METADATA",
547            ],
548        },
549        darwin: {
550            enabled: false,
551        },
552    },
553}
554
555cc_defaults {
556    name: "libchrome-test-defaults",
557    defaults: ["libchrome-defaults"],
558    cflags: [
559        "-Wno-unused-function",
560        "-Wno-unused-variable",
561    ],
562}
563
564libchromeCommonSrc = [
565    "base/at_exit.cc",
566    "base/barrier_closure.cc",
567    "base/base64.cc",
568    "base/base64url.cc",
569    "base/base_paths.cc",
570    "base/base_paths_posix.cc",
571    "base/base_switches.cc",
572    "base/big_endian.cc",
573    "base/build_time.cc",
574    "base/callback_helpers.cc",
575    "base/callback_internal.cc",
576    "base/command_line.cc",
577    "base/cpu.cc",
578    "base/debug/activity_tracker.cc",
579    "base/debug/alias.cc",
580    "base/debug/crash_logging.cc",
581    "base/debug/debugger.cc",
582    "base/debug/debugger_posix.cc",
583    "base/debug/dump_without_crashing.cc",
584    "base/debug/proc_maps_linux.cc",
585    "base/debug/profiler.cc",
586    "base/debug/stack_trace.cc",
587    "base/debug/task_annotator.cc",
588    "base/environment.cc",
589    "base/feature_list.cc",
590    "base/files/file.cc",
591    "base/files/file_descriptor_watcher_posix.cc",
592    "base/files/file_enumerator.cc",
593    "base/files/file_enumerator_posix.cc",
594    "base/files/file_path.cc",
595    "base/files/file_path_constants.cc",
596    "base/files/file_path_watcher.cc",
597    "base/files/file_posix.cc",
598    "base/files/file_tracing.cc",
599    "base/files/file_util.cc",
600    "base/files/file_util_posix.cc",
601    "base/files/important_file_writer.cc",
602    "base/files/memory_mapped_file.cc",
603    "base/files/memory_mapped_file_posix.cc",
604    "base/files/scoped_file.cc",
605    "base/files/scoped_temp_dir.cc",
606    "base/guid.cc",
607    "base/hash.cc",
608    "base/json/json_file_value_serializer.cc",
609    "base/json/json_parser.cc",
610    "base/json/json_reader.cc",
611    "base/json/json_string_value_serializer.cc",
612    "base/json/json_value_converter.cc",
613    "base/json/json_writer.cc",
614    "base/json/string_escape.cc",
615    "base/lazy_instance_helpers.cc",
616    "base/location.cc",
617    "base/logging.cc",
618    "base/md5.cc",
619    "base/memory/aligned_memory.cc",
620    "base/memory/platform_shared_memory_region.cc",
621    "base/memory/read_only_shared_memory_region.cc",
622    "base/memory/ref_counted.cc",
623    "base/memory/ref_counted_memory.cc",
624    "base/memory/shared_memory_handle.cc",
625    "base/memory/shared_memory_helper.cc",
626    "base/memory/shared_memory_mapping.cc",
627    "base/memory/unsafe_shared_memory_region.cc",
628    "base/memory/weak_ptr.cc",
629    "base/memory/writable_shared_memory_region.cc",
630    "base/message_loop/incoming_task_queue.cc",
631    "base/message_loop/message_loop.cc",
632    "base/message_loop/message_loop_current.cc",
633    "base/message_loop/message_loop_task_runner.cc",
634    "base/message_loop/message_pump.cc",
635    "base/message_loop/message_pump_default.cc",
636    "base/message_loop/message_pump_libevent.cc",
637    "base/message_loop/watchable_io_message_pump_posix.cc",
638    "base/metrics/bucket_ranges.cc",
639    "base/metrics/dummy_histogram.cc",
640    "base/metrics/field_trial.cc",
641    "base/metrics/field_trial_param_associator.cc",
642    "base/metrics/histogram.cc",
643    "base/metrics/histogram_base.cc",
644    "base/metrics/histogram_functions.cc",
645    "base/metrics/histogram_samples.cc",
646    "base/metrics/histogram_snapshot_manager.cc",
647    "base/metrics/metrics_hashes.cc",
648    "base/metrics/persistent_histogram_allocator.cc",
649    "base/metrics/persistent_memory_allocator.cc",
650    "base/metrics/persistent_sample_map.cc",
651    "base/metrics/sample_map.cc",
652    "base/metrics/sample_vector.cc",
653    "base/metrics/sparse_histogram.cc",
654    "base/metrics/statistics_recorder.cc",
655    "base/native_library.cc",
656    "base/native_library_posix.cc",
657    "base/observer_list_threadsafe.cc",
658    "base/path_service.cc",
659    "base/pending_task.cc",
660    "base/pickle.cc",
661    "base/posix/file_descriptor_shuffle.cc",
662    "base/posix/global_descriptors.cc",
663    "base/posix/safe_strerror.cc",
664    "base/process/kill.cc",
665    "base/process/kill_posix.cc",
666    "base/process/launch.cc",
667    "base/process/launch_posix.cc",
668    "base/process/memory.cc",
669    "base/process/process_handle.cc",
670    "base/process/process_handle_posix.cc",
671    "base/process/process_iterator.cc",
672    "base/process/process_metrics.cc",
673    "base/process/process_metrics_posix.cc",
674    "base/process/process_posix.cc",
675    "base/rand_util.cc",
676    "base/rand_util_posix.cc",
677    "base/run_loop.cc",
678    "base/scoped_native_library.cc",
679    "base/sequence_checker_impl.cc",
680    "base/sequence_token.cc",
681    "base/sequenced_task_runner.cc",
682    "base/sha1.cc",
683    "base/strings/nullable_string16.cc",
684    "base/strings/pattern.cc",
685    "base/strings/safe_sprintf.cc",
686    "base/strings/strcat.cc",
687    "base/strings/string16.cc",
688    "base/strings/string_number_conversions.cc",
689    "base/strings/string_piece.cc",
690    "base/strings/string_split.cc",
691    "base/strings/string_util.cc",
692    "base/strings/string_util_constants.cc",
693    "base/strings/stringprintf.cc",
694    "base/strings/utf_string_conversion_utils.cc",
695    "base/strings/utf_string_conversions.cc",
696    "base/sync_socket_posix.cc",
697    "base/synchronization/atomic_flag.cc",
698    "base/synchronization/condition_variable_posix.cc",
699    "base/synchronization/lock.cc",
700    "base/synchronization/lock_impl_posix.cc",
701    "base/synchronization/waitable_event_posix.cc",
702    "base/sys_info.cc",
703    "base/sys_info_posix.cc",
704    "base/task/cancelable_task_tracker.cc",
705    "base/task_runner.cc",
706    "base/task_scheduler/scheduler_lock_impl.cc",
707    "base/task_scheduler/scoped_set_task_priority_for_current_thread.cc",
708    "base/task_scheduler/sequence.cc",
709    "base/task_scheduler/sequence_sort_key.cc",
710    "base/task_scheduler/task.cc",
711    "base/task_scheduler/task_traits.cc",
712    "base/third_party/dynamic_annotations/dynamic_annotations.c",
713    "base/third_party/icu/icu_utf.cc",
714    "base/third_party/nspr/prtime.cc",
715    "base/threading/platform_thread_posix.cc",
716    "base/threading/post_task_and_reply_impl.cc",
717    "base/threading/scoped_blocking_call.cc",
718    "base/threading/sequence_local_storage_map.cc",
719    "base/threading/sequence_local_storage_slot.cc",
720    "base/threading/sequenced_task_runner_handle.cc",
721    "base/threading/simple_thread.cc",
722    "base/threading/thread.cc",
723    "base/threading/thread_checker_impl.cc",
724    "base/threading/thread_collision_warner.cc",
725    "base/threading/thread_id_name_manager.cc",
726    "base/threading/thread_local_storage.cc",
727    "base/threading/thread_local_storage_posix.cc",
728    "base/threading/thread_restrictions.cc",
729    "base/threading/thread_task_runner_handle.cc",
730    "base/time/clock.cc",
731    "base/time/default_clock.cc",
732    "base/time/default_tick_clock.cc",
733    "base/time/tick_clock.cc",
734    "base/time/time.cc",
735    "base/time/time_conversion_posix.cc",
736    "base/time/time_exploded_posix.cc",
737    "base/time/time_now_posix.cc",
738    "base/time/time_override.cc",
739    "base/timer/elapsed_timer.cc",
740    "base/timer/timer.cc",
741    "base/token.cc",
742    "base/unguessable_token.cc",
743    "base/value_iterators.cc",
744    "base/values.cc",
745    "base/version.cc",
746    "base/vlog.cc",
747    "device/bluetooth/bluetooth_advertisement.cc",
748    "device/bluetooth/bluetooth_uuid.cc",
749    "device/bluetooth/bluez/bluetooth_service_attribute_value_bluez.cc",
750    "ui/gfx/geometry/insets.cc",
751    "ui/gfx/geometry/insets_f.cc",
752    "ui/gfx/geometry/point.cc",
753    "ui/gfx/geometry/point_conversions.cc",
754    "ui/gfx/geometry/point_f.cc",
755    "ui/gfx/geometry/rect.cc",
756    "ui/gfx/geometry/rect_f.cc",
757    "ui/gfx/geometry/size.cc",
758    "ui/gfx/geometry/size_conversions.cc",
759    "ui/gfx/geometry/size_f.cc",
760    "ui/gfx/geometry/vector2d.cc",
761    "ui/gfx/geometry/vector2d_f.cc",
762    "ui/gfx/range/range.cc",
763    "ui/gfx/range/range_f.cc",
764]
765
766libchromeLinuxSrc = [
767    "base/files/file_path_watcher_linux.cc",
768    "base/files/file_util_linux.cc",
769    "base/memory/shared_memory_posix.cc",
770    "base/posix/unix_domain_socket.cc",
771    "base/process/internal_linux.cc",
772    "base/process/memory_linux.cc",
773    "base/process/process_handle_linux.cc",
774    "base/process/process_info_linux.cc",
775    "base/process/process_iterator_linux.cc",
776    "base/process/process_metrics_linux.cc",
777    "base/strings/sys_string_conversions_posix.cc",
778    "base/sys_info_linux.cc",
779    "base/threading/platform_thread_internal_posix.cc",
780    "base/threading/platform_thread_linux.cc",
781]
782
783libchromeMuslSrc = [
784    "base/debug/stack_trace_posix.cc",
785    "base/memory/platform_shared_memory_region_posix.cc",
786    "base/memory/shared_memory_handle_posix.cc",
787]
788
789libchromeGlibcSrc = [
790    "base/allocator/allocator_shim.cc",
791    "base/allocator/allocator_shim_default_dispatch_to_glibc.cc",
792    "base/debug/stack_trace_posix.cc",
793    "base/memory/platform_shared_memory_region_posix.cc",
794    "base/memory/shared_memory_handle_posix.cc",
795]
796
797libchromeLinuxBionicSrc = [
798    "base/debug/stack_trace_android.cc",
799    "base/memory/platform_shared_memory_region_posix.cc",
800    "base/memory/shared_memory_handle_posix.cc",
801]
802
803libchromeAndroidSrc = [
804    "base/android/android_hardware_buffer_compat.cc",
805    "base/android/build_info.cc",
806    "base/android/content_uri_utils.cc",
807    "base/android/java_exception_reporter.cc",
808    "base/android/jni_android.cc",
809    "base/android/jni_array.cc",
810    "base/android/jni_string.cc",
811    "base/android/path_utils.cc",
812    "base/android/scoped_java_ref.cc",
813    "base/android/scoped_hardware_buffer_handle.cc",
814    "base/android/sys_utils.cc",
815    "base/base_paths_android.cc",
816    "base/debug/stack_trace_android.cc",
817    "base/memory/platform_shared_memory_region_android.cc",
818    "base/memory/shared_memory_android.cc",
819    "base/memory/shared_memory_handle_android.cc",
820    "base/os_compat_android.cc",
821    "base/sys_info_android.cc",
822    "base/time/time_android.cc",
823]
824
825// libchrome static+shared for host and device
826// ========================================================
827cc_library {
828    name: "libchrome",
829    host_supported: true,
830    ramdisk_available: true,
831    recovery_available: true,
832    vendor_available: true,
833    defaults: ["libchrome-defaults"],
834    srcs: libchromeCommonSrc,
835
836    export_shared_lib_headers: ["libbase"],
837    export_header_lib_headers: ["libgtest_prod_headers"],
838    shared_libs: [
839        "libbase",
840        "libevent",
841    ],
842    header_libs: [
843        "libgtest_prod_headers",
844    ],
845    static_libs: [
846        "libmodpb64",
847    ],
848    generated_headers: [
849        "libmojo_jni_headers",
850        "libmojo_jni_registration_headers",
851    ],
852    export_generated_headers: [
853        "libmojo_jni_registration_headers",
854    ],
855    target: {
856        linux: {
857            srcs: libchromeLinuxSrc,
858        },
859        linux_bionic: {
860            srcs: libchromeLinuxBionicSrc,
861            shared_libs: [
862                "liblog",
863            ],
864        },
865        glibc: {
866            srcs: libchromeGlibcSrc,
867        },
868        musl: {
869            srcs: libchromeMuslSrc,
870        },
871        android: {
872            srcs: libchromeAndroidSrc,
873            shared_libs: [
874                "libcutils",
875                "liblog",
876            ],
877        },
878    },
879    apex_available: [
880        "//apex_available:platform",
881        "com.android.btservices",
882    ],
883    min_sdk_version: "30",
884    visibility: [
885        "//device/google/bertha:__subpackages__",
886        "//device/google/cheets2/camera/v3",
887        "//external/avb",
888        "//external/gsc-utils:__subpackages__",
889        "//external/libbrillo",
890        "//external/libpalmrejection",
891        "//external/puffin",
892        "//external/v4l2_codec2:__subpackages__",
893        "//external/zucchini",
894        "//frameworks/base/services",
895        "//frameworks/base/services/core/jni",
896        "//frameworks/native/libs/vr/libpdx_default_transport",
897        "//frameworks/native/services/inputflinger:__subpackages__",
898        "//hardware/libhardware/modules/camera/3_4",
899        "//hardware/interfaces/keymaster/4.0/vts/performance",
900        "//hardware/interfaces/security/keymint/aidl/vts/performance",
901        "//hardware/nxp/secure_element/snxxx:__subpackages__",
902        "//hardware/nxp/uwb",
903        "//packages/modules/Bluetooth:__subpackages__",
904        "//system/core/fs_mgr/libfs_avb",
905        "//system/core/fs_mgr/libsnapshot",
906        "//system/security/keystore",
907        "//system/update_engine",
908        "//test/sts/tests/hostside/securityPatch:__subpackages__",
909        "//vendor:__subpackages__",
910    ],
911}
912
913// libchrome-crypto shared library for device
914// ========================================================
915
916// Similar to libchrome, generate wrapped header files. See comments for
917// libchrome-include for the details.
918gensrcs {
919    name: "libchrome-crypto-include",
920    cmd: "$(location libchrome_tools/include_generator.py) $(in) $(out)",
921    tool_files: ["libchrome_tools/include_generator.py"],
922    export_include_dirs: ["."],
923    srcs: ["crypto/**/*.h"],
924    output_extension: "h",
925}
926
927cc_library_shared {
928    name: "libchrome-crypto",
929    vendor_available: true,
930    defaults: ["libchrome-defaults"],
931    srcs: [
932        "crypto/random.cc",
933    ],
934
935    generated_headers: ["libchrome-crypto-include"],
936    export_generated_headers: ["libchrome-crypto-include"],
937
938    shared_libs: [
939        "libchrome",
940    ],
941}
942
943// Helpers needed for unit tests.
944// ========================================================
945cc_library_static {
946    name: "libchrome_test_helpers",
947    defaults: ["libchrome-test-defaults"],
948    shared_libs: ["libchrome"],
949    host_supported: true,
950
951    srcs: [
952        "base/test/gtest_util.cc",
953        "base/test/simple_test_clock.cc",
954        "base/test/simple_test_tick_clock.cc",
955        "base/test/test_file_util.cc",
956        "base/test/test_file_util_linux.cc",
957        "base/test/test_switches.cc",
958        "base/test/test_timeouts.cc",
959    ],
960}
961
962// Helpers needed for unit tests (for host).
963// ========================================================
964cc_library_host_static {
965    name: "libchrome_test_helpers-host",
966    defaults: ["libchrome-test-defaults"],
967    shared_libs: ["libchrome"],
968
969    srcs: ["base/test/simple_test_clock.cc"],
970}
971
972// Host and target unit tests. Run (from repo root) with:
973// ./out/host/<arch>/nativetest/libchrome_test/libchrome_test
974// or
975// adb shell /data/nativetest/libchrome_test/libchrome_test
976// ========================================================
977cc_test {
978    name: "libchrome_test",
979    host_supported: true,
980    defaults: ["libchrome-test-defaults"],
981    srcs: [
982        "base/at_exit_unittest.cc",
983        "base/atomicops_unittest.cc",
984        "base/base64_unittest.cc",
985        "base/base64url_unittest.cc",
986        "base/big_endian_unittest.cc",
987        "base/bind_unittest.cc",
988        "base/bits_unittest.cc",
989        "base/build_time_unittest.cc",
990        "base/callback_helpers_unittest.cc",
991        "base/callback_list_unittest.cc",
992        "base/callback_unittest.cc",
993        "base/cancelable_callback_unittest.cc",
994        "base/command_line_unittest.cc",
995        "base/cpu_unittest.cc",
996        "base/debug/activity_tracker_unittest.cc",
997        "base/debug/debugger_unittest.cc",
998        "base/debug/leak_tracker_unittest.cc",
999        "base/environment_unittest.cc",
1000        "base/files/dir_reader_posix_unittest.cc",
1001        "base/files/file_descriptor_watcher_posix_unittest.cc",
1002        "base/files/file_enumerator_unittest.cc",
1003        "base/files/file_path_unittest.cc",
1004        "base/files/file_path_watcher_unittest.cc",
1005        "base/files/file_unittest.cc",
1006        "base/files/important_file_writer_unittest.cc",
1007        "base/files/scoped_temp_dir_unittest.cc",
1008        "base/gmock_unittest.cc",
1009        "base/guid_unittest.cc",
1010        "base/json/json_parser_unittest.cc",
1011        "base/json/json_reader_unittest.cc",
1012        "base/json/json_value_converter_unittest.cc",
1013        "base/json/json_value_serializer_unittest.cc",
1014        "base/json/json_writer_unittest.cc",
1015        "base/json/string_escape_unittest.cc",
1016        "base/lazy_instance_unittest.cc",
1017        "base/logging_unittest.cc",
1018        "base/md5_unittest.cc",
1019        "base/memory/aligned_memory_unittest.cc",
1020        "base/memory/linked_ptr_unittest.cc",
1021        "base/memory/ref_counted_memory_unittest.cc",
1022        "base/memory/ref_counted_unittest.cc",
1023        "base/memory/singleton_unittest.cc",
1024        "base/memory/weak_ptr_unittest.cc",
1025        "base/message_loop/message_loop_task_runner_unittest.cc",
1026        "base/message_loop/message_loop_unittest.cc",
1027        "base/metrics/bucket_ranges_unittest.cc",
1028        "base/metrics/field_trial_unittest.cc",
1029        "base/metrics/histogram_base_unittest.cc",
1030        "base/metrics/histogram_macros_unittest.cc",
1031        "base/metrics/histogram_snapshot_manager_unittest.cc",
1032        "base/metrics/histogram_unittest.cc",
1033        "base/metrics/metrics_hashes_unittest.cc",
1034        "base/metrics/persistent_histogram_allocator_unittest.cc",
1035        "base/metrics/persistent_memory_allocator_unittest.cc",
1036        "base/metrics/persistent_sample_map_unittest.cc",
1037        "base/metrics/sample_map_unittest.cc",
1038        "base/metrics/sample_vector_unittest.cc",
1039        "base/metrics/sparse_histogram_unittest.cc",
1040        "base/metrics/statistics_recorder_unittest.cc",
1041        "base/observer_list_unittest.cc",
1042        "base/optional_unittest.cc",
1043        "base/pickle_unittest.cc",
1044        "base/posix/file_descriptor_shuffle_unittest.cc",
1045        "base/posix/unix_domain_socket_unittest.cc",
1046        "base/process/process_info_unittest.cc",
1047        "base/process/process_metrics_unittest.cc",
1048        "base/rand_util_unittest.cc",
1049        "base/scoped_clear_errno_unittest.cc",
1050        "base/scoped_generic_unittest.cc",
1051        "base/security_unittest.cc",
1052        "base/sequence_checker_unittest.cc",
1053        "base/sequence_token_unittest.cc",
1054        "base/sha1_unittest.cc",
1055        "base/stl_util_unittest.cc",
1056        "base/strings/pattern_unittest.cc",
1057        "base/strings/string16_unittest.cc",
1058        "base/strings/string_number_conversions_unittest.cc",
1059        "base/strings/string_piece_unittest.cc",
1060        "base/strings/string_split_unittest.cc",
1061        "base/strings/string_util_unittest.cc",
1062        "base/strings/stringprintf_unittest.cc",
1063        "base/strings/sys_string_conversions_unittest.cc",
1064        "base/strings/utf_string_conversions_unittest.cc",
1065        "base/sync_socket_unittest.cc",
1066        "base/synchronization/atomic_flag_unittest.cc",
1067        "base/synchronization/condition_variable_unittest.cc",
1068        "base/synchronization/lock_unittest.cc",
1069        "base/synchronization/waitable_event_unittest.cc",
1070        "base/sys_info_unittest.cc",
1071        "base/task/cancelable_task_tracker_unittest.cc",
1072        "base/task_runner_util_unittest.cc",
1073        "base/task_scheduler/scheduler_lock_unittest.cc",
1074        "base/task_scheduler/scoped_set_task_priority_for_current_thread_unittest.cc",
1075        "base/task_scheduler/sequence_sort_key_unittest.cc",
1076        "base/task_scheduler/sequence_unittest.cc",
1077        "base/task_scheduler/task_traits.cc",
1078        "base/template_util_unittest.cc",
1079        "base/test/metrics/histogram_tester.cc",
1080        "base/test/mock_entropy_provider.cc",
1081        "base/test/multiprocess_test.cc",
1082        "base/test/scoped_feature_list.cc",
1083        "base/test/scoped_locale.cc",
1084        "base/test/simple_test_tick_clock.cc",
1085        "base/test/test_file_util.cc",
1086        "base/test/test_file_util_linux.cc",
1087        "base/test/test_file_util_posix.cc",
1088        "base/test/test_io_thread.cc",
1089        "base/test/test_mock_time_task_runner.cc",
1090        "base/test/test_pending_task.cc",
1091        "base/test/test_shared_memory_util.cc",
1092        "base/test/test_simple_task_runner.cc",
1093        "base/test/test_switches.cc",
1094        "base/test/test_timeouts.cc",
1095        "base/threading/platform_thread_unittest.cc",
1096        "base/threading/simple_thread_unittest.cc",
1097        "base/threading/thread_checker_unittest.cc",
1098        "base/threading/thread_collision_warner_unittest.cc",
1099        "base/threading/thread_id_name_manager_unittest.cc",
1100        "base/threading/thread_local_storage_unittest.cc",
1101        "base/threading/thread_local_unittest.cc",
1102        "base/threading/thread_unittest.cc",
1103        "base/time/pr_time_unittest.cc",
1104        "base/time/time_unittest.cc",
1105        "base/timer/hi_res_timer_manager_unittest.cc",
1106        "base/timer/mock_timer.cc",
1107        "base/tuple_unittest.cc",
1108        "base/values_unittest.cc",
1109        "base/version_unittest.cc",
1110        "base/vlog_unittest.cc",
1111        "testing/multiprocess_func_list.cc",
1112        "testrunner.cc",
1113        "ui/gfx/range/range_unittest.cc",
1114    ],
1115
1116    cflags: ["-DUNIT_TEST"],
1117    shared_libs: [
1118        "libchrome",
1119        "libevent",
1120    ],
1121    static_libs: [
1122        "libgmock",
1123        "libgtest",
1124    ],
1125    target: {
1126        android: {
1127            cflags: ["-DDONT_EMBED_BUILD_METADATA"],
1128        },
1129    },
1130}
1131
1132filegroup {
1133    name: "libmojo_mojom_files",
1134    srcs: [
1135        "ipc/ipc.mojom",
1136        "mojo/public/interfaces/bindings/interface_control_messages.mojom",
1137        "mojo/public/interfaces/bindings/native_struct.mojom",
1138        "mojo/public/interfaces/bindings/pipe_control_messages.mojom",
1139        "mojo/public/mojom/base/big_buffer.mojom",
1140        "mojo/public/mojom/base/big_string.mojom",
1141        "mojo/public/mojom/base/file.mojom",
1142        "mojo/public/mojom/base/file_error.mojom",
1143        "mojo/public/mojom/base/file_info.mojom",
1144        "mojo/public/mojom/base/file_path.mojom",
1145        "mojo/public/mojom/base/process_id.mojom",
1146        "mojo/public/mojom/base/read_only_buffer.mojom",
1147        "mojo/public/mojom/base/ref_counted_memory.mojom",
1148        "mojo/public/mojom/base/shared_memory.mojom",
1149        "mojo/public/mojom/base/string16.mojom",
1150        "mojo/public/mojom/base/text_direction.mojom",
1151        "mojo/public/mojom/base/thread_priority.mojom",
1152        "mojo/public/mojom/base/time.mojom",
1153        "mojo/public/mojom/base/unguessable_token.mojom",
1154        "mojo/public/mojom/base/values.mojom",
1155        "ui/gfx/geometry/mojo/geometry.mojom",
1156        "ui/gfx/range/mojo/range.mojom",
1157    ],
1158}
1159
1160filegroup {
1161    name: "libmojo_mojo_sources",
1162    srcs: [
1163        "mojo/**/*.cc",
1164    ],
1165    exclude_srcs: [
1166        // Unused in Chrome. Looks like mistakenly checked in.
1167        // TODO(hidehiko): Remove this after the file is removed in Chrome
1168        // repository. http://crrev.com/c/644531
1169        "mojo/public/cpp/system/message.cc",
1170
1171        // No WTF support.
1172        "mojo/public/cpp/bindings/lib/string_traits_wtf.cc",
1173
1174        // Exclude windows/mac/ios/fuchsia files.
1175        "**/*_win.cc",
1176        "**/*_fuchsia.cc",
1177        "mojo/core/mach_port_relay.*",
1178        "mojo/public/cpp/base/logfont_win*",
1179        "mojo/public/mojom/base/logfont_win*",
1180
1181        // Exclude js binding related files.
1182        "mojo/public/js/**/*",
1183
1184        // Exclude tests.
1185        "**/*_unittest.cc",
1186        "**/*_unittests.cc",
1187        "**/*_perftest.cc",
1188        "mojo/core/core_test_base.*",
1189        "mojo/core/test/*",
1190        "mojo/core/test_utils.*",
1191        "mojo/public/c/system/tests/**/*",
1192        "mojo/public/cpp/bindings/tests/**/*",
1193        "mojo/public/cpp/system/tests/**/*",
1194        "mojo/public/cpp/test_support/**/*",
1195        "mojo/public/java/system/javatests/**/*",
1196        "mojo/public/tests/**/*",
1197
1198        // Exclude memory allocator unsupported feature
1199        "mojo/public/cpp/base/memory_allocator_dump_cross_process_uid*",
1200
1201        // Exclude fuzzers
1202        "mojo/public/tools/fuzzers/**/*",
1203    ],
1204}
1205
1206python_binary_host {
1207    name: "jni_generator",
1208    main: "base/android/jni_generator/jni_generator.py",
1209    srcs: [
1210        "base/android/jni_generator/jni_generator.py",
1211        "build/**/*.py",
1212    ],
1213    version: {
1214        py3: {
1215            embedded_launcher: true,
1216        },
1217    },
1218}
1219
1220python_binary_host {
1221    name: "jni_registration_generator",
1222    main: "base/android/jni_generator/jni_registration_generator.py",
1223    srcs: [
1224        "base/android/jni_generator/jni_generator.py",
1225        "base/android/jni_generator/jni_registration_generator.py",
1226        "build/**/*.py",
1227    ],
1228    version: {
1229        py3: {
1230            embedded_launcher: true,
1231        },
1232    },
1233}
1234
1235python_binary_host {
1236    name: "mojom_bindings_generator",
1237    main: "mojo/public/tools/bindings/mojom_bindings_generator.py",
1238    srcs: [
1239        "build/**/*.py",
1240        "mojo/public/tools/bindings/**/*.py",
1241        "third_party/jinja2/**/*.py",
1242        "third_party/markupsafe/**/*.py",
1243        "third_party/ply/**/*.py",
1244    ],
1245    data: [
1246        "mojo/public/tools/bindings/generators/cpp_templates/*.tmpl",
1247        "mojo/public/tools/bindings/generators/java_templates/*.tmpl",
1248        "mojo/public/tools/bindings/generators/js_templates/*.tmpl",
1249    ],
1250    version: {
1251        py3: {
1252            // TODO(b/174041232): Enable embedded_launcher
1253            embedded_launcher: false,
1254        },
1255    },
1256}
1257
1258genrule {
1259    name: "libmojo_mojom_templates",
1260    cmd: "$(location mojom_bindings_generator)" +
1261        "    --use_bundled_pylibs precompile" +
1262        "    -o $(genDir)",
1263
1264    tools: [
1265        "mojom_bindings_generator",
1266    ],
1267
1268    out: [
1269        "cpp_templates.zip",
1270        "java_templates.zip",
1271        "js_templates.zip",
1272    ],
1273}
1274
1275python_binary_host {
1276    name: "mojom_generate_type_mappings",
1277    main: "libchrome_tools/mojom_generate_type_mappings.py",
1278    srcs: [
1279        "build/gn_helpers.py",
1280        "libchrome_tools/mojom_generate_type_mappings.py",
1281        "mojo/public/tools/bindings/generate_type_mappings.py",
1282        "mojo/public/tools/bindings/pylib/mojom/fileutil.py",
1283        "mojo/public/tools/bindings/pylib/mojom/generate/generator.py",
1284        "mojo/public/tools/bindings/pylib/mojom/generate/module.py",
1285        "mojo/public/tools/bindings/pylib/mojom/generate/pack.py",
1286    ],
1287    version: {
1288        py3: {
1289            // TODO(b/174041232): Enable embedded_launcher
1290            embedded_launcher: false,
1291        },
1292    },
1293}
1294
1295genrule {
1296    name: "libmojo_common_custom_types__type_mappings",
1297    cmd: "$(location mojom_generate_type_mappings)" +
1298        "    --output=$(out)" +
1299        "    $(in)",
1300
1301    tools: ["mojom_generate_type_mappings"],
1302
1303    srcs: [
1304        "mojo/public/cpp/base/big_buffer.typemap",
1305        "mojo/public/cpp/base/big_string.typemap",
1306        "mojo/public/cpp/base/file.typemap",
1307        "mojo/public/cpp/base/file_error.typemap",
1308        "mojo/public/cpp/base/file_info.typemap",
1309        "mojo/public/cpp/base/file_path.typemap",
1310        "mojo/public/cpp/base/process_id.typemap",
1311        "mojo/public/cpp/base/read_only_buffer.typemap",
1312        "mojo/public/cpp/base/ref_counted_memory.typemap",
1313        "mojo/public/cpp/base/shared_memory.typemap",
1314        "mojo/public/cpp/base/string16.typemap",
1315        "mojo/public/cpp/base/text_direction.typemap",
1316        "mojo/public/cpp/base/thread_priority.typemap",
1317        "mojo/public/cpp/base/time.typemap",
1318        "mojo/public/cpp/base/unguessable_token.typemap",
1319        "mojo/public/cpp/base/values.typemap",
1320        "ui/gfx/geometry/mojo/geometry.typemap",
1321        "ui/gfx/range/mojo/range.typemap",
1322    ],
1323    out: ["common_custom_types__type_mappings"],
1324}
1325
1326python_binary_host {
1327    name: "mojom_types_downgrader",
1328    main: "mojo/public/tools/bindings/mojom_types_downgrader.py",
1329    srcs: [
1330        "mojo/public/tools/bindings/mojom_types_downgrader.py",
1331    ],
1332    version: {
1333        py3: {
1334            embedded_launcher: true,
1335        },
1336    },
1337}
1338
1339generate_mojom_downgraded_files {
1340    name: "libmojo_mojom_downgraded_files",
1341    srcs: [":libmojo_mojom_files"],
1342}
1343
1344generate_mojom_pickles {
1345    name: "libmojo_mojom_pickles",
1346    srcs: [":libmojo_mojom_downgraded_files"],
1347}
1348
1349generate_mojom_headers {
1350    name: "libmojo_mojom_headers",
1351    srcs: [":libmojo_mojom_downgraded_files"],
1352    pickles: [":libmojo_mojom_pickles"],
1353    templates: ":libmojo_mojom_templates",
1354    flags: "--disallow_native_types",
1355    typemaps: [":libmojo_common_custom_types__type_mappings"],
1356}
1357
1358generate_mojom_srcs {
1359    name: "libmojo_mojom_srcs",
1360    srcs: [":libmojo_mojom_downgraded_files"],
1361    pickles: [":libmojo_mojom_pickles"],
1362    templates: ":libmojo_mojom_templates",
1363    flags: "--disallow_native_types",
1364    typemaps: [":libmojo_common_custom_types__type_mappings"],
1365}
1366
1367genrule {
1368    name: "libmojo_jni_headers",
1369    cmd: "$(location libchrome_tools/jni_generator_helper.sh)" +
1370        "    --jni_generator=$(location jni_generator)" +
1371        "    --output_dir=$(genDir)/jni" +
1372        "    --includes=base/android/jni_generator/jni_generator_helper.h" +
1373        "    --ptr_type=long" +
1374        "    $(in)",
1375
1376    tools: [
1377        "jni_generator",
1378    ],
1379
1380    tool_files: [
1381        "libchrome_tools/jni_generator_helper.sh",
1382    ],
1383
1384    srcs: [
1385        "base/android/java/src/org/chromium/base/BuildInfo.java",
1386        "base/android/java/src/org/chromium/base/ContentUriUtils.java",
1387        "base/android/java/src/org/chromium/base/JavaExceptionReporter.java",
1388        "base/android/java/src/org/chromium/base/PathUtils.java",
1389        "base/android/java/src/org/chromium/base/SysUtils.java",
1390        "base/android/java/src/org/chromium/base/ThreadUtils.java",
1391        "mojo/public/java/system/src/org/chromium/mojo/system/impl/BaseRunLoop.java",
1392        "mojo/public/java/system/src/org/chromium/mojo/system/impl/CoreImpl.java",
1393        "mojo/public/java/system/src/org/chromium/mojo/system/impl/WatcherImpl.java",
1394    ],
1395
1396    out: [
1397        "jni/BaseRunLoop_jni.h",
1398        "jni/BuildInfo_jni.h",
1399        "jni/ContentUriUtils_jni.h",
1400        "jni/CoreImpl_jni.h",
1401        "jni/JavaExceptionReporter_jni.h",
1402        "jni/PathUtils_jni.h",
1403        "jni/SysUtils_jni.h",
1404        "jni/WatcherImpl_jni.h",
1405    ],
1406}
1407
1408genrule {
1409    name: "libmojo_jni_registration_headers",
1410    cmd: "$(location libchrome_tools/jni_registration_generator_helper.sh)" +
1411        "    --jni_generator=$(location jni_registration_generator)" +
1412        "    --output=$(genDir)/jni/libmojo_jni_registrations.h" +
1413        "    $(in)",
1414
1415    tools: [
1416        "jni_registration_generator",
1417    ],
1418
1419    tool_files: [
1420        "libchrome_tools/jni_registration_generator_helper.sh",
1421    ],
1422
1423    srcs: [
1424        "base/android/java/src/org/chromium/base/BuildInfo.java",
1425        "base/android/java/src/org/chromium/base/JavaExceptionReporter.java",
1426        "base/android/java/src/org/chromium/base/ThreadUtils.java",
1427        "mojo/public/java/system/src/org/chromium/mojo/system/impl/BaseRunLoop.java",
1428        "mojo/public/java/system/src/org/chromium/mojo/system/impl/CoreImpl.java",
1429        "mojo/public/java/system/src/org/chromium/mojo/system/impl/WatcherImpl.java",
1430    ],
1431
1432    out: [
1433        "jni/libmojo_jni_registrations.h",
1434    ],
1435}
1436
1437cc_library_shared {
1438    name: "libmojo",
1439    vendor_available: true,
1440
1441    generated_sources: ["libmojo_mojom_srcs"],
1442    generated_headers: [
1443        "libmojo_jni_headers",
1444        "libmojo_jni_registration_headers",
1445        "libmojo_mojom_headers",
1446    ],
1447    export_generated_headers: [
1448        "libmojo_jni_registration_headers",
1449        "libmojo_mojom_headers",
1450    ],
1451
1452    srcs: [
1453        ":libmojo_mojo_sources",
1454        "base/android/build_info.cc",
1455        "base/android/java_exception_reporter.cc",
1456        "base/android/jni_android.cc",
1457        "base/android/jni_array.cc",
1458        "base/android/jni_string.cc",
1459        "base/android/scoped_java_ref.cc",
1460        "ipc/ipc_message.cc",
1461        "ipc/ipc_message_attachment.cc",
1462        "ipc/ipc_message_attachment_set.cc",
1463        "ipc/ipc_message_utils.cc",
1464        "ipc/ipc_mojo_handle_attachment.cc",
1465        "ipc/ipc_mojo_message_helper.cc",
1466        "ipc/ipc_mojo_param_traits.cc",
1467        "ipc/ipc_platform_file_attachment_posix.cc",
1468        "ipc/native_handle_type_converters.cc",
1469    ],
1470
1471    cflags: [
1472        "-DMOJO_CORE_LEGACY_PROTOCOL",
1473        "-Wall",
1474        "-Werror",
1475        "-Wno-missing-field-initializers",
1476        "-Wno-unused-parameter",
1477    ],
1478
1479    // We also pass NO_ASHMEM to make base::SharedMemory avoid using it and prefer
1480    // the POSIX versions.
1481    cppflags: [
1482        "-DNO_ASHMEM",
1483        "-Wno-extra",
1484        "-Wno-ignored-qualifiers",
1485        "-Wno-non-virtual-dtor",
1486        "-Wno-sign-promo",
1487    ],
1488
1489    shared_libs: [
1490        "libchrome",
1491        "libchrome-crypto",
1492        "libevent",
1493        "liblog",
1494    ],
1495
1496    header_libs: ["jni_headers"],
1497
1498    export_include_dirs: ["."],
1499}
1500
1501generate_mojom_srcjar {
1502    name: "libmojo_mojom_java_srcs",
1503    srcs: [":libmojo_mojom_downgraded_files"],
1504    pickles: [":libmojo_mojom_pickles"],
1505    srcjar: "libmojo_mojom.srcjar",
1506    templates: ":libmojo_mojom_templates",
1507    flags: "--disallow_native_types",
1508    typemaps: [":libmojo_common_custom_types__type_mappings"],
1509}
1510
1511java_library {
1512    name: "android.mojo",
1513
1514    srcs: [
1515        ":libmojo_mojom_java_srcs",
1516        "base/android/java/src/org/chromium/base/BuildConfig.java",
1517        "base/android/java/src/org/chromium/base/BuildInfo.java",
1518        "base/android/java/src/org/chromium/base/ContextUtils.java",
1519        "base/android/java/src/org/chromium/base/DiscardableReferencePool.java",
1520        "base/android/java/src/org/chromium/base/JavaExceptionReporter.java",
1521        "base/android/java/src/org/chromium/base/Log.java",
1522        "base/android/java/src/org/chromium/base/PackageUtils.java",
1523        "base/android/java/src/org/chromium/base/StrictModeContext.java",
1524        "base/android/java/src/org/chromium/base/Supplier.java",
1525        "base/android/java/src/org/chromium/base/ThreadUtils.java",
1526        "base/android/java/src/org/chromium/base/TimezoneUtils.java",
1527        "base/android/java/src/org/chromium/base/VisibleForTesting.java",
1528        "base/android/java/src/org/chromium/base/annotations/AccessedByNative.java",
1529        "base/android/java/src/org/chromium/base/annotations/CalledByNative.java",
1530        "base/android/java/src/org/chromium/base/annotations/CalledByNativeUnchecked.java",
1531        "base/android/java/src/org/chromium/base/annotations/JNIAdditionalImport.java",
1532        "base/android/java/src/org/chromium/base/annotations/JNINamespace.java",
1533        "base/android/java/src/org/chromium/base/annotations/MainDex.java",
1534        "base/android/java/src/org/chromium/base/annotations/NativeCall.java",
1535        "base/android/java/src/org/chromium/base/annotations/NativeClassQualifiedName.java",
1536        "base/android/java/src/org/chromium/base/annotations/RemovableInRelease.java",
1537        "base/android/java/src/org/chromium/base/annotations/UsedByReflection.java",
1538        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/AssociatedInterfaceNotSupported.java",
1539        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/AssociatedInterfaceRequestNotSupported.java",
1540        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/AutoCloseableRouter.java",
1541        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/BindingsHelper.java",
1542        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/Callbacks.java",
1543        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/ConnectionErrorHandler.java",
1544        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/Connector.java",
1545        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/DataHeader.java",
1546        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/Decoder.java",
1547        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/DelegatingConnectionErrorHandler.java",
1548        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/DeserializationException.java",
1549        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/Encoder.java",
1550        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/ExceptionHandler.java",
1551        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/ExecutorFactory.java",
1552        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/HandleOwner.java",
1553        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/Interface.java",
1554        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/InterfaceControlMessagesHelper.java",
1555        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/InterfaceRequest.java",
1556        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/Message.java",
1557        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/MessageHeader.java",
1558        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/MessageReceiver.java",
1559        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/MessageReceiverWithResponder.java",
1560        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/Router.java",
1561        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/RouterImpl.java",
1562        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/SerializationException.java",
1563        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/ServiceMessage.java",
1564        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/SideEffectFreeCloseable.java",
1565        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/Struct.java",
1566        "mojo/public/java/bindings/src/org/chromium/mojo/bindings/Union.java",
1567        "mojo/public/java/system/src/org/chromium/mojo/system/Core.java",
1568        "mojo/public/java/system/src/org/chromium/mojo/system/DataPipe.java",
1569        "mojo/public/java/system/src/org/chromium/mojo/system/Flags.java",
1570        "mojo/public/java/system/src/org/chromium/mojo/system/Handle.java",
1571        "mojo/public/java/system/src/org/chromium/mojo/system/InvalidHandle.java",
1572        "mojo/public/java/system/src/org/chromium/mojo/system/MessagePipeHandle.java",
1573        "mojo/public/java/system/src/org/chromium/mojo/system/MojoException.java",
1574        "mojo/public/java/system/src/org/chromium/mojo/system/MojoResult.java",
1575        "mojo/public/java/system/src/org/chromium/mojo/system/Pair.java",
1576        "mojo/public/java/system/src/org/chromium/mojo/system/ResultAnd.java",
1577        "mojo/public/java/system/src/org/chromium/mojo/system/RunLoop.java",
1578        "mojo/public/java/system/src/org/chromium/mojo/system/SharedBufferHandle.java",
1579        "mojo/public/java/system/src/org/chromium/mojo/system/UntypedHandle.java",
1580        "mojo/public/java/system/src/org/chromium/mojo/system/Watcher.java",
1581        "mojo/public/java/system/src/org/chromium/mojo/system/impl/BaseRunLoop.java",
1582        "mojo/public/java/system/src/org/chromium/mojo/system/impl/CoreImpl.java",
1583        "mojo/public/java/system/src/org/chromium/mojo/system/impl/DataPipeConsumerHandleImpl.java",
1584        "mojo/public/java/system/src/org/chromium/mojo/system/impl/DataPipeProducerHandleImpl.java",
1585        "mojo/public/java/system/src/org/chromium/mojo/system/impl/HandleBase.java",
1586        "mojo/public/java/system/src/org/chromium/mojo/system/impl/MessagePipeHandleImpl.java",
1587        "mojo/public/java/system/src/org/chromium/mojo/system/impl/SharedBufferHandleImpl.java",
1588        "mojo/public/java/system/src/org/chromium/mojo/system/impl/UntypedHandleImpl.java",
1589        "mojo/public/java/system/src/org/chromium/mojo/system/impl/WatcherImpl.java",
1590    ],
1591
1592    static_libs: [
1593        "android-support-annotations",
1594    ],
1595}
1596