[M85 Dev][EFL] Fix crashes at webview launch
[platform/framework/web/chromium-efl.git] / base / BUILD.gn
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 # HOW TO WRITE CONDITIONALS IN THIS FILE
6 # ======================================
7 #
8 # In many other places, one would write a conditional that expresses all the
9 # cases when a source file is used or unused, and then either add or subtract
10 # it from the sources list in that case
11 #
12 # Since base includes so many low-level things that vary widely and
13 # unpredictably for the various build types, we prefer a slightly different
14 # style. Instead, there are big per-platform blocks of inclusions and
15 # exclusions. If a given file has an inclusion or exclusion rule that applies
16 # for multiple conditions, prefer to duplicate it in both lists. This makes it
17 # a bit easier to see which files apply in which cases rather than having a
18 # huge sequence of random-looking conditionals.
19
20 import("//base/allocator/allocator.gni")
21 import("//build/buildflag_header.gni")
22 import("//build/config/allocator.gni")
23 import("//build/config/arm.gni")
24 import("//build/config/c++/c++.gni")
25 import("//build/config/chromecast_build.gni")
26 import("//build/config/compiler/compiler.gni")
27 import("//build/config/dcheck_always_on.gni")
28 import("//build/config/jumbo.gni")
29 import("//build/config/logging.gni")
30 import("//build/config/nacl/config.gni")
31 import("//build/config/profiling/profiling.gni")
32 import("//build/config/sysroot.gni")
33 import("//build/config/ui.gni")
34 import("//build/nocompile.gni")
35 import("//build/timestamp.gni")
36 import("//build_overrides/build.gni")
37 import("//testing/libfuzzer/fuzzer_test.gni")
38 import("//testing/test.gni")
39 import("//third_party/icu/config.gni")
40 if (use_efl) {
41   import("//tizen_src/chromium_impl/base/base_efl.gni")
42 }
43
44 if (is_mac) {
45   # Used to generate fuzzer corpus :base_mach_port_rendezvous_convert_corpus.
46   import("//third_party/protobuf/proto_library.gni")
47 }
48
49 # Reset sources_assignment_filter for the BUILD.gn file to prevent
50 # regression during the migration of Chromium away from the feature.
51 # See docs/no_sources_assignment_filter.md for more information.
52 # TODO(crbug.com/1018739): remove this when migration is done.
53 set_sources_assignment_filter([])
54
55 declare_args() {
56   # Indicates if the Location object contains the source code information
57   # (file, function, line). False means only the program counter (and currently
58   # file name) is saved.
59   enable_location_source = true
60
61   # Whether or not the FROM_HERE macro uses base::Location::Current(). This
62   # allows the implementation to be reverted if needed while validating its
63   # replacement base::Location::Current(). On by default in non-official builds
64   # for testing purposes.
65   # TODO(https://crbug.com/974061): remove this eventually.
66   from_here_uses_location_builtins = !is_official_build
67
68   # Unsafe developer build. Has developer-friendly features that may weaken or
69   # disable security measures like sandboxing or ASLR.
70   # IMPORTANT: Unsafe developer builds should never be distributed to end users.
71   is_unsafe_developer_build = !is_official_build
72
73   # Set to true to disable COM init check hooks.
74   com_init_check_hook_disabled = false
75
76   # Set to true to enable mutex priority inheritance. See the comments in
77   # LockImpl::PriorityInheritanceAvailable() in lock_impl_posix.cc for the
78   # platform requirements to safely enable priority inheritance.
79   enable_mutex_priority_inheritance = false
80 }
81
82 # Mutex priority inheritance is disabled by default due to security
83 # vulnerabilities in older versions of Linux kernel and glibc. However,
84 # Chromecast builds have full control over the platform and ensure that
85 # the kernel and glibc versions used have patched the vulnerabilities,
86 # so it is safe to use mutex priority inheritance on Chromecast platform.
87 assert(!enable_mutex_priority_inheritance || is_chromecast,
88        "Do not enable PI mutexes without consulting the security team")
89
90 # Determines whether libevent should be dep.
91 dep_libevent =
92     !is_fuchsia && !is_win && !is_mac && !(is_nacl && !is_nacl_nonsfi)
93
94 # Determines whether message_pump_libevent should be used.
95 use_libevent = dep_libevent && !is_ios
96
97 # Whether or not cfi table should be enabled on arm.
98 # TODO(crbug.com/1090409): Replace can_unwind_with_cfi_table once sampling
99 # profiler is enabled on android.
100 enable_arm_cfi_table = is_android && !is_component_build && current_cpu == "arm"
101
102 if (is_android) {
103   import("//build/config/android/rules.gni")
104 }
105
106 if (is_fuchsia) {
107   import("//third_party/fuchsia-sdk/sdk/build/fidl_library.gni")
108 }
109
110 config("base_flags") {
111   if (is_clang) {
112     cflags = [
113       # Ideally all product code (but no test code) in chrome would have these
114       # flags. But this isn't trivial so start with //base as a minimum
115       # requirement.
116       # https://groups.google.com/a/chromium.org/d/topic/chromium-dev/B9Q5KTD7iCo/discussion
117       "-Wglobal-constructors",
118     ]
119   }
120 }
121
122 config("base_implementation") {
123   defines = [ "BASE_IMPLEMENTATION" ]
124   configs = [ "//build/config/compiler:wexit_time_destructors" ]
125 }
126
127 if (is_win) {
128   # This is in a separate config so the flags can be applied to dependents.
129   # ldflags in GN aren't automatically inherited.
130   config("base_win_linker_flags") {
131     ldflags = [
132       "/DELAYLOAD:cfgmgr32.dll",
133       "/DELAYLOAD:powrprof.dll",
134       "/DELAYLOAD:setupapi.dll",
135     ]
136   }
137 }
138
139 if (is_android) {
140   config("android_system_libs") {
141     libs = [
142       "android",
143       "log",  # Used by logging.cc.
144     ]
145   }
146 }
147
148 # Base and everything it depends on should be a static library rather than
149 # a source set. Base is more of a "library" in the classic sense in that many
150 # small parts of it are used in many different contexts. This combined with a
151 # few static initializers floating around means that dead code stripping
152 # still leaves a lot of code behind that isn't always used. For example, this
153 # saves more than 40K for a smaller target like chrome_elf.
154 #
155 # Use static libraries for the helper stuff as well like //base/debug since
156 # those things refer back to base code, which will force base compilation units
157 # to be linked in where they wouldn't have otherwise. This does not include
158 # test code (test support and anything in the test directory) which should use
159 # source_set as is recommended for GN targets).
160 jumbo_component("base") {
161   if (is_nacl || is_ios) {
162     # Link errors related to malloc functions if libbase for nacl is
163     # compiled with jumbo: https://crbug.com/775959.
164     # Same for ios: https://crbug.com/776313.
165     never_build_jumbo = true
166   }
167
168   sources = [
169     "allocator/allocator_check.cc",
170     "allocator/allocator_check.h",
171     "allocator/allocator_extension.cc",
172     "allocator/allocator_extension.h",
173     "at_exit.cc",
174     "at_exit.h",
175     "atomic_ref_count.h",
176     "atomic_sequence_num.h",
177     "atomicops.h",
178     "atomicops_internals_atomicword_compat.h",
179     "atomicops_internals_portable.h",
180     "atomicops_internals_x86_msvc.h",
181     "auto_reset.h",
182     "barrier_closure.cc",
183     "barrier_closure.h",
184     "base64.cc",
185     "base64.h",
186     "base64url.cc",
187     "base64url.h",
188     "base_export.h",
189     "base_switches.h",
190     "big_endian.cc",
191     "big_endian.h",
192     "bind.h",
193     "bind_helpers.h",
194     "bind_internal.h",
195     "bit_cast.h",
196     "bits.h",
197     "build_time.cc",
198     "build_time.h",
199     "callback.h",
200     "callback_forward.h",
201     "callback_helpers.cc",
202     "callback_helpers.h",
203     "callback_internal.cc",
204     "callback_internal.h",
205     "callback_list.h",
206     "cancelable_callback.h",
207     "check.cc",
208     "check.h",
209     "check_op.cc",
210     "check_op.h",
211     "command_line.cc",
212     "command_line.h",
213     "compiler_specific.h",
214     "component_export.h",
215     "containers/adapters.h",
216     "containers/buffer_iterator.h",
217     "containers/checked_iterators.h",
218     "containers/checked_range.h",
219     "containers/circular_deque.h",
220     "containers/flat_map.h",
221     "containers/flat_set.h",
222     "containers/flat_tree.h",
223     "containers/id_map.h",
224     "containers/intrusive_heap.cc",
225     "containers/intrusive_heap.h",
226     "containers/linked_list.h",
227     "containers/mru_cache.h",
228     "containers/small_map.h",
229     "containers/span.h",
230     "containers/stack.h",
231     "containers/stack_container.h",
232     "containers/unique_ptr_adapters.h",
233     "containers/util.h",
234     "containers/vector_buffer.h",
235     "cpu.cc",
236     "cpu.h",
237     "critical_closure.h",
238     "dcheck_is_on.h",
239     "debug/activity_analyzer.cc",
240     "debug/activity_analyzer.h",
241     "debug/activity_tracker.cc",
242     "debug/activity_tracker.h",
243     "debug/alias.cc",
244     "debug/alias.h",
245     "debug/asan_invalid_access.cc",
246     "debug/asan_invalid_access.h",
247     "debug/crash_logging.cc",
248     "debug/crash_logging.h",
249     "debug/debugger.cc",
250     "debug/debugger.h",
251     "debug/dump_without_crashing.cc",
252     "debug/dump_without_crashing.h",
253     "debug/leak_annotations.h",
254     "debug/leak_tracker.h",
255     "debug/profiler.cc",
256     "debug/profiler.h",
257     "debug/stack_trace.cc",
258     "debug/stack_trace.h",
259     "debug/task_trace.cc",
260     "debug/task_trace.h",
261     "deferred_sequenced_task_runner.cc",
262     "deferred_sequenced_task_runner.h",
263     "enterprise_util.h",
264     "environment.cc",
265     "environment.h",
266     "export_template.h",
267     "feature_list.cc",
268     "feature_list.h",
269     "file_descriptor_store.cc",
270     "file_descriptor_store.h",
271     "file_version_info.h",
272     "files/dir_reader_fallback.h",
273     "files/file.cc",
274     "files/file.h",
275     "files/file_enumerator.cc",
276     "files/file_enumerator.h",
277     "files/file_path.cc",
278     "files/file_path.h",
279     "files/file_path_constants.cc",
280     "files/file_path_watcher.cc",
281     "files/file_path_watcher.h",
282     "files/file_proxy.cc",
283     "files/file_proxy.h",
284     "files/file_tracing.cc",
285     "files/file_tracing.h",
286     "files/file_util.cc",
287     "files/file_util.h",
288     "files/important_file_writer.cc",
289     "files/important_file_writer.h",
290     "files/memory_mapped_file.cc",
291     "files/memory_mapped_file.h",
292     "files/platform_file.h",
293     "files/scoped_file.cc",
294     "files/scoped_file.h",
295     "files/scoped_temp_dir.cc",
296     "files/scoped_temp_dir.h",
297     "format_macros.h",
298     "gtest_prod_util.h",
299     "guid.cc",
300     "guid.h",
301     "hash/hash.cc",
302     "hash/hash.h",
303     "hash/legacy_hash.cc",
304     "hash/legacy_hash.h",
305     "immediate_crash.h",
306     "json/json_common.h",
307     "json/json_file_value_serializer.cc",
308     "json/json_file_value_serializer.h",
309     "json/json_parser.cc",
310     "json/json_parser.h",
311     "json/json_reader.cc",
312     "json/json_reader.h",
313     "json/json_string_value_serializer.cc",
314     "json/json_string_value_serializer.h",
315     "json/json_value_converter.cc",
316     "json/json_value_converter.h",
317     "json/json_writer.cc",
318     "json/json_writer.h",
319     "json/string_escape.cc",
320     "json/string_escape.h",
321     "lazy_instance.h",
322     "lazy_instance_helpers.cc",
323     "lazy_instance_helpers.h",
324     "linux_util.cc",
325     "linux_util.h",
326     "location.cc",
327     "location.h",
328     "logging.cc",
329     "logging.h",
330     "macros.h",
331     "memory/aligned_memory.cc",
332     "memory/aligned_memory.h",
333     "memory/checked_ptr.cc",
334     "memory/checked_ptr.h",
335     "memory/discardable_memory.cc",
336     "memory/discardable_memory.h",
337     "memory/discardable_memory_allocator.cc",
338     "memory/discardable_memory_allocator.h",
339     "memory/discardable_memory_internal.h",
340     "memory/discardable_shared_memory.cc",
341     "memory/discardable_shared_memory.h",
342     "memory/free_deleter.h",
343     "memory/memory_pressure_listener.cc",
344     "memory/memory_pressure_listener.h",
345     "memory/memory_pressure_monitor.cc",
346     "memory/memory_pressure_monitor.h",
347     "memory/platform_shared_memory_region.cc",
348     "memory/platform_shared_memory_region.h",
349     "memory/ptr_util.h",
350     "memory/raw_scoped_refptr_mismatch_checker.h",
351     "memory/read_only_shared_memory_region.cc",
352     "memory/read_only_shared_memory_region.h",
353     "memory/ref_counted.cc",
354     "memory/ref_counted.h",
355     "memory/ref_counted_delete_on_sequence.h",
356     "memory/ref_counted_memory.cc",
357     "memory/ref_counted_memory.h",
358     "memory/scoped_policy.h",
359     "memory/scoped_refptr.h",
360     "memory/shared_memory_hooks.h",
361     "memory/shared_memory_mapping.cc",
362     "memory/shared_memory_mapping.h",
363     "memory/shared_memory_security_policy.cc",
364     "memory/shared_memory_security_policy.h",
365     "memory/shared_memory_tracker.cc",
366     "memory/shared_memory_tracker.h",
367     "memory/singleton.h",
368     "memory/unsafe_shared_memory_region.cc",
369     "memory/unsafe_shared_memory_region.h",
370     "memory/weak_ptr.cc",
371     "memory/weak_ptr.h",
372     "memory/writable_shared_memory_region.cc",
373     "memory/writable_shared_memory_region.h",
374     "message_loop/message_loop_current.cc",
375     "message_loop/message_loop_current.h",
376     "message_loop/message_pump.cc",
377     "message_loop/message_pump.h",
378     "message_loop/message_pump_default.cc",
379     "message_loop/message_pump_default.h",
380     "message_loop/message_pump_for_io.h",
381     "message_loop/message_pump_for_ui.h",
382     "message_loop/message_pump_glib.cc",
383     "message_loop/message_pump_glib.h",
384     "message_loop/message_pump_type.h",
385     "message_loop/timer_slack.h",
386     "message_loop/work_id_provider.cc",
387     "message_loop/work_id_provider.h",
388     "metrics/bucket_ranges.cc",
389     "metrics/bucket_ranges.h",
390     "metrics/crc32.cc",
391     "metrics/crc32.h",
392     "metrics/dummy_histogram.cc",
393     "metrics/dummy_histogram.h",
394     "metrics/field_trial.cc",
395     "metrics/field_trial.h",
396     "metrics/field_trial_param_associator.cc",
397     "metrics/field_trial_param_associator.h",
398     "metrics/field_trial_params.cc",
399     "metrics/field_trial_params.h",
400     "metrics/histogram.cc",
401     "metrics/histogram.h",
402     "metrics/histogram_base.cc",
403     "metrics/histogram_base.h",
404     "metrics/histogram_delta_serialization.cc",
405     "metrics/histogram_delta_serialization.h",
406     "metrics/histogram_flattener.h",
407     "metrics/histogram_functions.cc",
408     "metrics/histogram_functions.h",
409     "metrics/histogram_macros.h",
410     "metrics/histogram_macros_internal.h",
411     "metrics/histogram_macros_local.h",
412     "metrics/histogram_samples.cc",
413     "metrics/histogram_samples.h",
414     "metrics/histogram_snapshot_manager.cc",
415     "metrics/histogram_snapshot_manager.h",
416     "metrics/metrics_hashes.cc",
417     "metrics/metrics_hashes.h",
418     "metrics/persistent_histogram_allocator.cc",
419     "metrics/persistent_histogram_allocator.h",
420     "metrics/persistent_memory_allocator.cc",
421     "metrics/persistent_memory_allocator.h",
422     "metrics/persistent_sample_map.cc",
423     "metrics/persistent_sample_map.h",
424     "metrics/record_histogram_checker.h",
425     "metrics/sample_map.cc",
426     "metrics/sample_map.h",
427     "metrics/sample_vector.cc",
428     "metrics/sample_vector.h",
429     "metrics/single_sample_metrics.cc",
430     "metrics/single_sample_metrics.h",
431     "metrics/sparse_histogram.cc",
432     "metrics/sparse_histogram.h",
433     "metrics/statistics_recorder.cc",
434     "metrics/statistics_recorder.h",
435     "metrics/ukm_source_id.cc",
436     "metrics/ukm_source_id.h",
437     "metrics/user_metrics.cc",
438     "metrics/user_metrics.h",
439     "metrics/user_metrics_action.h",
440     "native_library.cc",
441     "native_library.h",
442     "no_destructor.h",
443     "notreached.cc",
444     "notreached.h",
445     "observer_list.h",
446     "observer_list_internal.cc",
447     "observer_list_internal.h",
448     "observer_list_threadsafe.cc",
449     "observer_list_threadsafe.h",
450     "observer_list_types.cc",
451     "observer_list_types.h",
452     "one_shot_event.cc",
453     "one_shot_event.h",
454     "optional.h",
455     "os_compat_nacl.cc",
456     "os_compat_nacl.h",
457     "parameter_pack.h",
458     "path_service.cc",
459     "path_service.h",
460     "pending_task.cc",
461     "pending_task.h",
462     "pickle.cc",
463     "pickle.h",
464     "post_task_and_reply_with_result_internal.h",
465     "power_monitor/power_monitor.cc",
466     "power_monitor/power_monitor.h",
467     "power_monitor/power_monitor_device_source.cc",
468     "power_monitor/power_monitor_device_source.h",
469     "power_monitor/power_monitor_source.cc",
470     "power_monitor/power_monitor_source.h",
471     "power_monitor/power_observer.h",
472     "process/environment_internal.cc",
473     "process/environment_internal.h",
474     "process/kill.cc",
475     "process/kill.h",
476     "process/launch.cc",
477     "process/launch.h",
478     "process/memory.cc",
479     "process/memory.h",
480     "process/process.h",
481     "process/process_handle.cc",
482     "process/process_handle.h",
483     "process/process_info.h",
484     "process/process_iterator.cc",
485     "process/process_iterator.h",
486     "process/process_metrics.cc",
487     "process/process_metrics.h",
488     "profiler/arm_cfi_table.cc",
489     "profiler/arm_cfi_table.h",
490     "profiler/frame.cc",
491     "profiler/frame.h",
492     "profiler/metadata_recorder.cc",
493     "profiler/metadata_recorder.h",
494     "profiler/module_cache.cc",
495     "profiler/module_cache.h",
496     "profiler/native_unwinder.h",
497     "profiler/profile_builder.h",
498     "profiler/register_context.h",
499     "profiler/sample_metadata.cc",
500     "profiler/sample_metadata.h",
501     "profiler/sampling_profiler_thread_token.cc",
502     "profiler/sampling_profiler_thread_token.h",
503     "profiler/stack_buffer.cc",
504     "profiler/stack_buffer.h",
505     "profiler/stack_copier.cc",
506     "profiler/stack_copier.h",
507     "profiler/stack_copier_suspend.cc",
508     "profiler/stack_copier_suspend.h",
509     "profiler/stack_sampler.cc",
510     "profiler/stack_sampler.h",
511     "profiler/stack_sampler_impl.cc",
512     "profiler/stack_sampler_impl.h",
513     "profiler/stack_sampling_profiler.cc",
514     "profiler/stack_sampling_profiler.h",
515     "profiler/suspendable_thread_delegate.h",
516     "profiler/thread_delegate.h",
517     "profiler/unwinder.h",
518     "rand_util.cc",
519     "rand_util.h",
520     "rand_util_nacl.cc",
521     "run_loop.cc",
522     "run_loop.h",
523     "sampling_heap_profiler/lock_free_address_hash_set.cc",
524     "sampling_heap_profiler/lock_free_address_hash_set.h",
525     "sampling_heap_profiler/poisson_allocation_sampler.cc",
526     "sampling_heap_profiler/poisson_allocation_sampler.h",
527     "sampling_heap_profiler/sampling_heap_profiler.cc",
528     "sampling_heap_profiler/sampling_heap_profiler.h",
529     "scoped_clear_last_error.h",
530     "scoped_generic.h",
531     "scoped_native_library.cc",
532     "scoped_native_library.h",
533     "scoped_observer.h",
534     "sequence_checker.h",
535     "sequence_checker_impl.cc",
536     "sequence_checker_impl.h",
537     "sequence_token.cc",
538     "sequence_token.h",
539     "sequenced_task_runner.cc",
540     "sequenced_task_runner.h",
541     "sequenced_task_runner_helpers.h",
542     "single_thread_task_runner.h",
543     "stl_util.h",
544     "strings/char_traits.h",
545     "strings/latin1_string_conversions.cc",
546     "strings/latin1_string_conversions.h",
547     "strings/nullable_string16.cc",
548     "strings/nullable_string16.h",
549     "strings/pattern.cc",
550     "strings/pattern.h",
551     "strings/safe_sprintf.cc",
552     "strings/safe_sprintf.h",
553     "strings/strcat.cc",
554     "strings/strcat.h",
555     "strings/strcat_internal.h",
556     "strings/string16.cc",
557     "strings/string16.h",
558     "strings/string_number_conversions.cc",
559     "strings/string_number_conversions.h",
560     "strings/string_number_conversions_internal.h",
561     "strings/string_piece.cc",
562     "strings/string_piece.h",
563     "strings/string_piece_forward.h",
564     "strings/string_split.cc",
565     "strings/string_split.h",
566     "strings/string_split_internal.h",
567     "strings/string_tokenizer.h",
568     "strings/string_util.cc",
569     "strings/string_util.h",
570     "strings/string_util_constants.cc",
571     "strings/string_util_internal.h",
572     "strings/stringize_macros.h",
573     "strings/stringprintf.cc",
574     "strings/stringprintf.h",
575     "strings/sys_string_conversions.h",
576     "strings/utf_offset_string_conversions.cc",
577     "strings/utf_offset_string_conversions.h",
578     "strings/utf_string_conversion_utils.cc",
579     "strings/utf_string_conversion_utils.h",
580     "strings/utf_string_conversions.cc",
581     "strings/utf_string_conversions.h",
582     "supports_user_data.cc",
583     "supports_user_data.h",
584     "sync_socket.cc",
585     "sync_socket.h",
586     "synchronization/atomic_flag.cc",
587     "synchronization/atomic_flag.h",
588     "synchronization/condition_variable.h",
589     "synchronization/lock.cc",
590     "synchronization/lock.h",
591     "synchronization/lock_impl.h",
592     "synchronization/waitable_event.h",
593     "synchronization/waitable_event_watcher.h",
594     "sys_byteorder.h",
595     "syslog_logging.cc",
596     "syslog_logging.h",
597     "system/sys_info.cc",
598     "system/sys_info.h",
599     "system/sys_info_internal.h",
600     "system/system_monitor.cc",
601     "system/system_monitor.h",
602     "task/cancelable_task_tracker.cc",
603     "task/cancelable_task_tracker.h",
604     "task/common/checked_lock.h",
605     "task/common/checked_lock_impl.cc",
606     "task/common/checked_lock_impl.h",
607     "task/common/intrusive_heap.h",
608     "task/common/operations_controller.cc",
609     "task/common/operations_controller.h",
610     "task/common/scoped_defer_task_posting.cc",
611     "task/common/scoped_defer_task_posting.h",
612     "task/common/task_annotator.cc",
613     "task/common/task_annotator.h",
614     "task/lazy_thread_pool_task_runner.cc",
615     "task/lazy_thread_pool_task_runner.h",
616     "task/post_job.cc",
617     "task/post_job.h",
618     "task/post_task.cc",
619     "task/post_task.h",
620     "task/scoped_set_task_priority_for_current_thread.cc",
621     "task/scoped_set_task_priority_for_current_thread.h",
622     "task/sequence_manager/associated_thread_id.cc",
623     "task/sequence_manager/associated_thread_id.h",
624     "task/sequence_manager/atomic_flag_set.cc",
625     "task/sequence_manager/atomic_flag_set.h",
626     "task/sequence_manager/enqueue_order.h",
627     "task/sequence_manager/enqueue_order_generator.cc",
628     "task/sequence_manager/enqueue_order_generator.h",
629     "task/sequence_manager/lazily_deallocated_deque.h",
630     "task/sequence_manager/lazy_now.cc",
631     "task/sequence_manager/lazy_now.h",
632     "task/sequence_manager/real_time_domain.cc",
633     "task/sequence_manager/real_time_domain.h",
634     "task/sequence_manager/sequence_manager.cc",
635     "task/sequence_manager/sequence_manager.h",
636     "task/sequence_manager/sequence_manager_impl.cc",
637     "task/sequence_manager/sequence_manager_impl.h",
638     "task/sequence_manager/sequenced_task_source.h",
639     "task/sequence_manager/task_queue.cc",
640     "task/sequence_manager/task_queue.h",
641     "task/sequence_manager/task_queue_impl.cc",
642     "task/sequence_manager/task_queue_impl.h",
643     "task/sequence_manager/task_queue_selector.cc",
644     "task/sequence_manager/task_queue_selector.h",
645     "task/sequence_manager/task_queue_selector_logic.h",
646     "task/sequence_manager/task_time_observer.h",
647     "task/sequence_manager/tasks.cc",
648     "task/sequence_manager/tasks.h",
649     "task/sequence_manager/thread_controller.h",
650     "task/sequence_manager/thread_controller_impl.cc",
651     "task/sequence_manager/thread_controller_impl.h",
652     "task/sequence_manager/thread_controller_power_monitor.cc",
653     "task/sequence_manager/thread_controller_power_monitor.h",
654     "task/sequence_manager/thread_controller_with_message_pump_impl.cc",
655     "task/sequence_manager/thread_controller_with_message_pump_impl.h",
656     "task/sequence_manager/time_domain.cc",
657     "task/sequence_manager/time_domain.h",
658     "task/sequence_manager/work_deduplicator.cc",
659     "task/sequence_manager/work_deduplicator.h",
660     "task/sequence_manager/work_queue.cc",
661     "task/sequence_manager/work_queue.h",
662     "task/sequence_manager/work_queue_sets.cc",
663     "task/sequence_manager/work_queue_sets.h",
664     "task/simple_task_executor.cc",
665     "task/simple_task_executor.h",
666     "task/single_thread_task_executor.cc",
667     "task/single_thread_task_executor.h",
668     "task/single_thread_task_runner_thread_mode.h",
669     "task/task_executor.cc",
670     "task/task_executor.h",
671     "task/task_features.cc",
672     "task/task_features.h",
673     "task/task_observer.h",
674     "task/task_traits.cc",
675     "task/task_traits.h",
676     "task/task_traits_extension.h",
677     "task/thread_pool.cc",
678     "task/thread_pool.h",
679     "task/thread_pool/delayed_task_manager.cc",
680     "task/thread_pool/delayed_task_manager.h",
681     "task/thread_pool/environment_config.cc",
682     "task/thread_pool/environment_config.h",
683     "task/thread_pool/initialization_util.cc",
684     "task/thread_pool/initialization_util.h",
685     "task/thread_pool/job_task_source.cc",
686     "task/thread_pool/job_task_source.h",
687     "task/thread_pool/pooled_parallel_task_runner.cc",
688     "task/thread_pool/pooled_parallel_task_runner.h",
689     "task/thread_pool/pooled_sequenced_task_runner.cc",
690     "task/thread_pool/pooled_sequenced_task_runner.h",
691     "task/thread_pool/pooled_single_thread_task_runner_manager.cc",
692     "task/thread_pool/pooled_single_thread_task_runner_manager.h",
693     "task/thread_pool/pooled_task_runner_delegate.cc",
694     "task/thread_pool/pooled_task_runner_delegate.h",
695     "task/thread_pool/priority_queue.cc",
696     "task/thread_pool/priority_queue.h",
697     "task/thread_pool/sequence.cc",
698     "task/thread_pool/sequence.h",
699     "task/thread_pool/sequence_sort_key.cc",
700     "task/thread_pool/sequence_sort_key.h",
701     "task/thread_pool/service_thread.cc",
702     "task/thread_pool/service_thread.h",
703     "task/thread_pool/task.cc",
704     "task/thread_pool/task.h",
705     "task/thread_pool/task_source.cc",
706     "task/thread_pool/task_source.h",
707     "task/thread_pool/task_tracker.cc",
708     "task/thread_pool/task_tracker.h",
709     "task/thread_pool/thread_group.cc",
710     "task/thread_pool/thread_group.h",
711     "task/thread_pool/thread_group_impl.cc",
712     "task/thread_pool/thread_group_impl.h",
713     "task/thread_pool/thread_group_native.cc",
714     "task/thread_pool/thread_group_native.h",
715     "task/thread_pool/thread_pool_impl.cc",
716     "task/thread_pool/thread_pool_impl.h",
717     "task/thread_pool/thread_pool_instance.cc",
718     "task/thread_pool/thread_pool_instance.h",
719     "task/thread_pool/tracked_ref.h",
720     "task/thread_pool/worker_thread.cc",
721     "task/thread_pool/worker_thread.h",
722     "task/thread_pool/worker_thread_observer.h",
723     "task/thread_pool/worker_thread_stack.cc",
724     "task/thread_pool/worker_thread_stack.h",
725     "task_runner.cc",
726     "task_runner.h",
727     "task_runner_util.h",
728     "template_util.h",
729     "test/malloc_wrapper.h",
730     "test/spin_wait.h",
731     "third_party/cityhash/city.cc",
732     "third_party/cityhash/city.h",
733     "third_party/cityhash_v103/src/city_v103.cc",
734     "third_party/cityhash_v103/src/city_v103.h",
735     "third_party/icu/icu_utf.cc",
736     "third_party/icu/icu_utf.h",
737     "third_party/nspr/prtime.cc",
738     "third_party/nspr/prtime.h",
739     "third_party/superfasthash/superfasthash.c",
740     "thread_annotations.h",
741     "threading/hang_watcher.cc",
742     "threading/hang_watcher.h",
743     "threading/platform_thread.cc",
744     "threading/platform_thread.h",
745     "threading/post_task_and_reply_impl.cc",
746     "threading/post_task_and_reply_impl.h",
747     "threading/scoped_blocking_call.cc",
748     "threading/scoped_blocking_call.h",
749     "threading/scoped_blocking_call_internal.cc",
750     "threading/scoped_blocking_call_internal.h",
751     "threading/scoped_thread_priority.cc",
752     "threading/scoped_thread_priority.h",
753     "threading/sequence_bound.h",
754     "threading/sequence_local_storage_map.cc",
755     "threading/sequence_local_storage_map.h",
756     "threading/sequence_local_storage_slot.cc",
757     "threading/sequence_local_storage_slot.h",
758     "threading/sequenced_task_runner_handle.cc",
759     "threading/sequenced_task_runner_handle.h",
760     "threading/simple_thread.cc",
761     "threading/simple_thread.h",
762     "threading/thread.cc",
763     "threading/thread.h",
764     "threading/thread_checker.h",
765     "threading/thread_checker_impl.cc",
766     "threading/thread_checker_impl.h",
767     "threading/thread_collision_warner.cc",
768     "threading/thread_collision_warner.h",
769     "threading/thread_id_name_manager.cc",
770     "threading/thread_id_name_manager.h",
771     "threading/thread_local.h",
772     "threading/thread_local_internal.h",
773     "threading/thread_local_storage.cc",
774     "threading/thread_local_storage.h",
775     "threading/thread_restrictions.cc",
776     "threading/thread_restrictions.h",
777     "threading/thread_task_runner_handle.cc",
778     "threading/thread_task_runner_handle.h",
779     "threading/watchdog.cc",
780     "threading/watchdog.h",
781     "time/clock.cc",
782     "time/clock.h",
783     "time/default_clock.cc",
784     "time/default_clock.h",
785     "time/default_tick_clock.cc",
786     "time/default_tick_clock.h",
787     "time/tick_clock.cc",
788     "time/tick_clock.h",
789     "time/time.cc",
790     "time/time.h",
791     "time/time_override.cc",
792     "time/time_override.h",
793     "time/time_to_iso8601.cc",
794     "time/time_to_iso8601.h",
795     "timer/elapsed_timer.cc",
796     "timer/elapsed_timer.h",
797     "timer/hi_res_timer_manager.h",
798     "timer/lap_timer.cc",
799     "timer/lap_timer.h",
800     "timer/timer.cc",
801     "timer/timer.h",
802     "token.cc",
803     "token.h",
804     "trace_event/base_tracing.h",
805     "trace_event/common/trace_event_common.h",
806     "trace_event/heap_profiler_allocation_context.cc",
807     "trace_event/heap_profiler_allocation_context.h",
808     "trace_event/heap_profiler_allocation_context_tracker.cc",
809     "trace_event/heap_profiler_allocation_context_tracker.h",
810     "trace_event/memory_allocator_dump_guid.cc",
811     "trace_event/memory_allocator_dump_guid.h",
812     "traits_bag.h",
813     "tuple.h",
814     "unguessable_token.cc",
815     "unguessable_token.h",
816     "updateable_sequenced_task_runner.h",
817     "value_iterators.cc",
818     "value_iterators.h",
819     "values.cc",
820     "values.h",
821     "version.cc",
822     "version.h",
823     "vlog.cc",
824     "vlog.h",
825   ]
826
827   if (use_efl) {
828     sources += external_base_sources
829   }
830
831   if (is_tizen) {
832     libs = [
833       "event",
834       "dlog",
835     ]
836   }
837
838   # Various files that are unused in the Chromium build, but presumably here to
839   # make downstream's life easier. They are not included in the main sources
840   # list to avoid breaking GN formatting's auto-sorting.
841   sources += [
842     #"process/process_handle_freebsd.cc",
843     #"process/process_iterator_freebsd.cc",
844     #"process/process_metrics_freebsd.cc",
845     #"system/sys_info_freebsd.cc",
846     #"process/process_iterator_openbsd.cc",
847     #"process/process_handle_openbsd.cc",
848     #"process/process_metrics_openbsd.cc",
849     #"system/sys_info_openbsd.cc",
850   ]
851
852   if (is_posix) {
853     sources += [
854       "debug/debugger_posix.cc",
855       "debug/stack_trace_posix.cc",
856       "file_descriptor_posix.h",
857       "files/dir_reader_posix.h",
858       "files/file_descriptor_watcher_posix.cc",
859       "files/file_descriptor_watcher_posix.h",
860       "files/file_enumerator_posix.cc",
861       "files/file_posix.cc",
862       "files/file_util_posix.cc",
863       "files/memory_mapped_file_posix.cc",
864       "memory/madv_free_discardable_memory_allocator_posix.cc",
865       "memory/madv_free_discardable_memory_allocator_posix.h",
866       "memory/madv_free_discardable_memory_posix.cc",
867       "memory/madv_free_discardable_memory_posix.h",
868       "message_loop/watchable_io_message_pump_posix.cc",
869       "message_loop/watchable_io_message_pump_posix.h",
870       "native_library_posix.cc",
871       "posix/eintr_wrapper.h",
872       "posix/file_descriptor_shuffle.cc",
873       "posix/file_descriptor_shuffle.h",
874       "posix/global_descriptors.cc",
875       "posix/global_descriptors.h",
876       "posix/safe_strerror.cc",
877       "posix/safe_strerror.h",
878       "posix/unix_domain_socket.cc",
879       "posix/unix_domain_socket.h",
880       "process/kill_posix.cc",
881       "process/launch_posix.cc",
882       "process/process_handle_posix.cc",
883       "process/process_metrics_posix.cc",
884       "process/process_posix.cc",
885       "profiler/module_cache_posix.cc",
886       "rand_util_posix.cc",
887       "strings/string_util_posix.h",
888       "strings/sys_string_conversions_posix.cc",
889       "sync_socket_posix.cc",
890       "synchronization/condition_variable_posix.cc",
891       "synchronization/lock_impl_posix.cc",
892       "synchronization/waitable_event_posix.cc",
893       "synchronization/waitable_event_watcher_posix.cc",
894       "system/sys_info_posix.cc",
895       "task/thread_pool/task_tracker_posix.cc",
896       "task/thread_pool/task_tracker_posix.h",
897       "threading/platform_thread_internal_posix.cc",
898       "threading/platform_thread_internal_posix.h",
899       "threading/platform_thread_posix.cc",
900       "threading/thread_local_storage_posix.cc",
901       "timer/hi_res_timer_manager_posix.cc",
902     ]
903
904     if (!is_nacl && !is_mac && !is_ios) {
905       sources += [
906         "profiler/stack_copier_signal.cc",
907         "profiler/stack_copier_signal.h",
908         "profiler/stack_sampler_posix.cc",
909         "profiler/thread_delegate_posix.cc",
910         "profiler/thread_delegate_posix.h",
911       ]
912     }
913   }
914
915   if (is_win) {
916     sources += [
917       "debug/close_handle_hook_win.cc",
918       "debug/close_handle_hook_win.h",
919       "debug/debugger_win.cc",
920       "debug/gdi_debug_util_win.cc",
921       "debug/gdi_debug_util_win.h",
922       "debug/invalid_access_win.cc",
923       "debug/invalid_access_win.h",
924       "debug/stack_trace_win.cc",
925       "enterprise_util_win.cc",
926       "file_version_info_win.cc",
927       "file_version_info_win.h",
928       "files/file_path_watcher_win.cc",
929       "files/file_util_win.cc",
930       "files/file_win.cc",
931       "files/important_file_writer_cleaner.cc",
932       "files/important_file_writer_cleaner.h",
933       "files/memory_mapped_file_win.cc",
934       "logging_win.cc",
935       "logging_win.h",
936       "message_loop/message_pump_win.cc",
937       "message_loop/message_pump_win.h",
938       "native_library_win.cc",
939       "process/kill_win.cc",
940       "process/launch_win.cc",
941       "process/memory_win.cc",
942       "process/process_handle_win.cc",
943       "process/process_info_win.cc",
944       "process/process_iterator_win.cc",
945       "process/process_metrics_win.cc",
946       "process/process_win.cc",
947       "profiler/module_cache_win.cc",
948       "profiler/native_unwinder_win.cc",
949       "profiler/native_unwinder_win.h",
950       "profiler/stack_sampler_win.cc",
951       "profiler/suspendable_thread_delegate_win.cc",
952       "profiler/suspendable_thread_delegate_win.h",
953       "scoped_clear_last_error_win.cc",
954       "strings/strcat_win.cc",
955       "strings/strcat_win.h",
956       "strings/string_number_conversions_win.cc",
957       "strings/string_number_conversions_win.h",
958       "strings/string_split_win.cc",
959       "strings/string_split_win.h",
960       "strings/string_util_win.cc",
961       "strings/string_util_win.h",
962       "strings/sys_string_conversions_win.cc",
963       "sync_socket_win.cc",
964       "synchronization/condition_variable_win.cc",
965       "synchronization/lock_impl_win.cc",
966       "synchronization/waitable_event_watcher_win.cc",
967       "synchronization/waitable_event_win.cc",
968       "task/thread_pool/thread_group_native_win.cc",
969       "task/thread_pool/thread_group_native_win.h",
970       "threading/platform_thread_win.cc",
971       "threading/platform_thread_win.h",
972       "threading/thread_local_storage_win.cc",
973       "timer/hi_res_timer_manager_win.cc",
974       "win/async_operation.h",
975       "win/atl.h",
976       "win/atl_throw.cc",
977       "win/atl_throw.h",
978       "win/com_init_check_hook.cc",
979       "win/com_init_check_hook.h",
980       "win/com_init_util.cc",
981       "win/com_init_util.h",
982       "win/core_winrt_util.cc",
983       "win/core_winrt_util.h",
984       "win/current_module.h",
985       "win/embedded_i18n/language_selector.cc",
986       "win/embedded_i18n/language_selector.h",
987       "win/enum_variant.cc",
988       "win/enum_variant.h",
989       "win/event_trace_consumer.h",
990       "win/event_trace_controller.cc",
991       "win/event_trace_controller.h",
992       "win/event_trace_provider.cc",
993       "win/event_trace_provider.h",
994       "win/hstring_compare.cc",
995       "win/hstring_compare.h",
996       "win/hstring_reference.cc",
997       "win/hstring_reference.h",
998       "win/i18n.cc",
999       "win/i18n.h",
1000       "win/iat_patch_function.cc",
1001       "win/iat_patch_function.h",
1002       "win/map.h",
1003       "win/message_window.cc",
1004       "win/message_window.h",
1005       "win/object_watcher.cc",
1006       "win/object_watcher.h",
1007       "win/patch_util.cc",
1008       "win/patch_util.h",
1009       "win/post_async_results.h",
1010       "win/process_startup_helper.cc",
1011       "win/process_startup_helper.h",
1012       "win/propvarutil.h",
1013       "win/reference.h",
1014       "win/registry.cc",
1015       "win/registry.h",
1016       "win/resource_util.cc",
1017       "win/resource_util.h",
1018       "win/scoped_bstr.cc",
1019       "win/scoped_bstr.h",
1020       "win/scoped_co_mem.h",
1021       "win/scoped_com_initializer.cc",
1022       "win/scoped_com_initializer.h",
1023       "win/scoped_gdi_object.h",
1024       "win/scoped_handle.cc",
1025       "win/scoped_handle.h",
1026       "win/scoped_handle_verifier.cc",
1027       "win/scoped_handle_verifier.h",
1028       "win/scoped_hdc.h",
1029       "win/scoped_hglobal.h",
1030       "win/scoped_hstring.cc",
1031       "win/scoped_hstring.h",
1032       "win/scoped_process_information.cc",
1033       "win/scoped_process_information.h",
1034       "win/scoped_propvariant.h",
1035       "win/scoped_safearray.h",
1036       "win/scoped_select_object.h",
1037       "win/scoped_variant.cc",
1038       "win/scoped_variant.h",
1039       "win/scoped_windows_thread_environment.h",
1040       "win/scoped_winrt_initializer.cc",
1041       "win/scoped_winrt_initializer.h",
1042       "win/shlwapi.h",
1043       "win/shortcut.cc",
1044       "win/shortcut.h",
1045       "win/sphelper.h",
1046       "win/startup_information.cc",
1047       "win/startup_information.h",
1048       "win/variant_util.h",
1049       "win/vector.cc",
1050       "win/vector.h",
1051       "win/win_util.cc",
1052       "win/win_util.h",
1053       "win/wincrypt_shim.h",
1054       "win/windows_defines.inc",
1055       "win/windows_types.h",
1056       "win/windows_undefines.inc",
1057       "win/windows_version.cc",
1058       "win/windows_version.h",
1059       "win/windowsx_shim.h",
1060       "win/winrt_foundation_helpers.h",
1061       "win/winrt_storage_util.cc",
1062       "win/winrt_storage_util.h",
1063       "win/wmi.cc",
1064       "win/wmi.h",
1065       "win/wrapped_window_proc.cc",
1066       "win/wrapped_window_proc.h",
1067     ]
1068   }
1069
1070   if (is_mac) {
1071     sources += [
1072       "allocator/allocator_interception_mac.h",
1073       "allocator/allocator_interception_mac.mm",
1074       "allocator/malloc_zone_functions_mac.cc",
1075       "allocator/malloc_zone_functions_mac.h",
1076       "enterprise_util_mac.mm",
1077       "file_version_info_mac.h",
1078       "file_version_info_mac.mm",
1079       "files/file_path_watcher_mac.cc",
1080       "files/file_util_mac.mm",
1081       "mac/authorization_util.h",
1082       "mac/authorization_util.mm",
1083       "mac/bundle_locations.h",
1084       "mac/bundle_locations.mm",
1085       "mac/call_with_eh_frame.cc",
1086       "mac/call_with_eh_frame.h",
1087       "mac/call_with_eh_frame_asm.S",
1088       "mac/close_nocancel.cc",
1089       "mac/dispatch_source_mach.cc",
1090       "mac/dispatch_source_mach.h",
1091       "mac/foundation_util.h",
1092       "mac/foundation_util.mm",
1093       "mac/launch_services_util.h",
1094       "mac/launch_services_util.mm",
1095       "mac/launchd.cc",
1096       "mac/launchd.h",
1097       "mac/mac_logging.h",
1098       "mac/mac_logging.mm",
1099       "mac/mac_util.h",
1100       "mac/mac_util.mm",
1101       "mac/mach_logging.cc",
1102       "mac/mach_logging.h",
1103       "mac/mach_port_rendezvous.cc",
1104       "mac/mach_port_rendezvous.h",
1105       "mac/objc_release_properties.h",
1106       "mac/objc_release_properties.mm",
1107       "mac/os_crash_dumps.cc",
1108       "mac/os_crash_dumps.h",
1109       "mac/scoped_aedesc.h",
1110       "mac/scoped_authorizationref.h",
1111       "mac/scoped_authorizationref.mm",
1112       "mac/scoped_block.h",
1113       "mac/scoped_cffiledescriptorref.h",
1114       "mac/scoped_cftyperef.h",
1115       "mac/scoped_dispatch_object.h",
1116       "mac/scoped_ionotificationportref.h",
1117       "mac/scoped_ioobject.h",
1118       "mac/scoped_ioplugininterface.h",
1119       "mac/scoped_launch_data.h",
1120       "mac/scoped_mach_msg_destroy.h",
1121       "mac/scoped_mach_port.cc",
1122       "mac/scoped_mach_port.h",
1123       "mac/scoped_mach_vm.cc",
1124       "mac/scoped_mach_vm.h",
1125       "mac/scoped_nsautorelease_pool.h",
1126       "mac/scoped_nsautorelease_pool.mm",
1127       "mac/scoped_nsobject.h",
1128       "mac/scoped_objc_class_swizzler.h",
1129       "mac/scoped_objc_class_swizzler.mm",
1130       "mac/scoped_sending_event.h",
1131       "mac/scoped_sending_event.mm",
1132       "mac/sdk_forward_declarations.h",
1133       "mac/sdk_forward_declarations.mm",
1134       "message_loop/message_pump_mac.h",
1135       "message_loop/message_pump_mac.mm",
1136       "native_library_mac.mm",
1137       "process/kill_mac.cc",
1138       "process/launch_mac.cc",
1139       "process/memory_mac.mm",
1140       "process/port_provider_mac.cc",
1141       "process/port_provider_mac.h",
1142       "process/process_handle_mac.cc",
1143       "process/process_iterator_mac.cc",
1144       "process/process_mac.cc",
1145       "process/process_metrics_mac.cc",
1146       "profiler/module_cache_mac.cc",
1147       "profiler/native_unwinder_mac.cc",
1148       "profiler/native_unwinder_mac.h",
1149       "profiler/stack_sampler_mac.cc",
1150       "profiler/suspendable_thread_delegate_mac.cc",
1151       "profiler/suspendable_thread_delegate_mac.h",
1152       "strings/sys_string_conversions_mac.mm",
1153       "synchronization/waitable_event_mac.cc",
1154       "synchronization/waitable_event_watcher_mac.cc",
1155       "task/thread_pool/thread_group_native_mac.h",
1156       "task/thread_pool/thread_group_native_mac.mm",
1157       "threading/platform_thread_mac.mm",
1158     ]
1159   }
1160
1161   if (is_ios) {
1162     sources += [
1163       "critical_closure_internal_ios.mm",
1164       "ios/block_types.h",
1165       "ios/crb_protocol_observers.h",
1166       "ios/crb_protocol_observers.mm",
1167       "ios/device_util.h",
1168       "ios/device_util.mm",
1169       "ios/ios_util.h",
1170       "ios/ios_util.mm",
1171       "ios/ns_error_util.h",
1172       "ios/ns_error_util.mm",
1173       "ios/scoped_critical_action.h",
1174       "ios/scoped_critical_action.mm",
1175       "message_loop/message_pump_io_ios.cc",
1176       "message_loop/message_pump_io_ios.h",
1177       "native_library_ios.mm",
1178       "process/launch_ios.cc",
1179       "process/process_metrics_ios.cc",
1180       "profiler/module_cache_mac.cc",
1181       "profiler/stack_sampler_ios.cc",
1182     ]
1183   }
1184
1185   if (is_android) {
1186     sources += [
1187       "debug/stack_trace_android.cc",
1188       "files/file_util_android.cc",
1189       "files/scoped_file_android.cc",
1190       "message_loop/message_pump_android.cc",
1191       "message_loop/message_pump_android.h",
1192       "os_compat_android.cc",
1193       "os_compat_android.h",
1194       "profiler/stack_sampler_android.cc",
1195       "threading/platform_thread_android.cc",
1196     ]
1197   }
1198
1199   if (is_linux) {
1200     sources += [
1201       "debug/proc_maps_linux.cc",
1202       "debug/proc_maps_linux.h",
1203       "files/dir_reader_linux.h",
1204       "files/file_path_watcher_linux.cc",
1205       "files/file_util_linux.cc",
1206       "process/internal_linux.cc",
1207       "process/internal_linux.h",
1208       "process/memory_linux.cc",
1209       "process/process_handle_linux.cc",
1210       "process/process_iterator_linux.cc",
1211       "process/process_linux.cc",
1212       "process/process_metrics_linux.cc",
1213       "threading/platform_thread_linux.cc",
1214     ]
1215   }
1216
1217   if (!is_nacl) {
1218     sources += [
1219       "base_paths.cc",
1220       "base_paths.h",
1221       "metrics/persistent_histogram_storage.cc",
1222       "metrics/persistent_histogram_storage.h",
1223     ]
1224
1225     if (is_win) {
1226       sources += [
1227         "base_paths_win.cc",
1228         "base_paths_win.h",
1229       ]
1230     }
1231
1232     if (is_mac) {
1233       sources += [
1234         "base_paths_mac.h",
1235         "base_paths_mac.mm",
1236       ]
1237     }
1238
1239     if (is_android) {
1240       sources += [
1241         "base_paths_android.cc",
1242         "base_paths_android.h",
1243       ]
1244     }
1245
1246     if (is_posix) {
1247       sources += [ "base_paths_posix.h" ]
1248     }
1249
1250     if (is_linux || is_tizen) {
1251       set_sources_assignment_filter([])
1252       sources += [
1253         "base_paths_posix.cc",
1254         "debug/elf_reader.cc",
1255         "debug/elf_reader.h",
1256       ]
1257       set_sources_assignment_filter(sources_assignment_filter)
1258     }
1259   }
1260
1261   all_dependent_configs = []
1262   defines = []
1263   data = []
1264   data_deps = []
1265   libs = []
1266
1267   configs += [
1268     ":base_flags",
1269     ":base_implementation",
1270     "//build/config:precompiled_headers",
1271     "//build/config/compiler:noshadowing",
1272   ]
1273
1274   deps = [
1275     "//base/allocator",
1276     "//base/allocator:buildflags",
1277     "//base/third_party/double_conversion",
1278     "//base/third_party/dynamic_annotations",
1279     "//build:branding_buildflags",
1280     "//third_party/modp_b64",
1281   ]
1282
1283   # native_unwinder_android is intended for use solely via a dynamic feature
1284   # module, to avoid increasing Chrome's executable size.
1285   assert_no_deps = [ ":native_unwinder_android" ]
1286
1287   public_deps = [
1288     ":anchor_functions_buildflags",
1289     ":base_static",
1290     ":build_date",
1291     ":cfi_buildflags",
1292     ":clang_profiling_buildflags",
1293     ":debugging_buildflags",
1294     ":logging_buildflags",
1295     ":orderfile_buildflags",
1296     ":partition_alloc_buildflags",
1297     ":sanitizer_buildflags",
1298     ":synchronization_buildflags",
1299     ":tracing_buildflags",
1300     "//base/numerics:base_numerics",
1301   ]
1302
1303   # Needed for <atomic> if using newer C++ library than sysroot, except if
1304   # building inside the cros_sdk environment - use host_toolchain as a
1305   # more robust check for this.
1306   if (!use_sysroot && (is_android || (is_linux && !is_chromecast)) &&
1307       host_toolchain != "//build/toolchain/cros:host") {
1308     libs += [ "atomic" ]
1309   }
1310
1311   if (is_tizen) {
1312     libs += [
1313       "pthread",
1314       "dlog",
1315     ]
1316   }
1317
1318   if (use_allocator_shim) {
1319     sources += [
1320       "allocator/allocator_shim.cc",
1321       "allocator/allocator_shim.h",
1322       "allocator/allocator_shim_internals.h",
1323       "allocator/allocator_shim_override_cpp_symbols.h",
1324       "allocator/allocator_shim_override_libc_symbols.h",
1325     ]
1326     if (is_win) {
1327       sources += [
1328         "allocator/allocator_shim_default_dispatch_to_winheap.cc",
1329         "allocator/allocator_shim_override_ucrt_symbols_win.h",
1330         "allocator/winheap_stubs_win.cc",
1331         "allocator/winheap_stubs_win.h",
1332       ]
1333     } else if (is_linux && use_allocator == "tcmalloc") {
1334       sources += [
1335         "allocator/allocator_shim_default_dispatch_to_tcmalloc.cc",
1336         "allocator/allocator_shim_override_glibc_weak_symbols.h",
1337       ]
1338       deps += [ "//base/allocator:tcmalloc" ]
1339     } else if (is_linux && use_allocator == "none") {
1340       sources += [ "allocator/allocator_shim_default_dispatch_to_glibc.cc" ]
1341     } else if ((is_linux || is_android) && use_allocator == "partition") {
1342       # Cannot use the same dispatching for host-side binaries.
1343       if (is_a_target_toolchain) {
1344         sources += [
1345           "allocator/allocator_shim_default_dispatch_to_partition_alloc.cc",
1346         ]
1347       } else {
1348         sources += [ "allocator/allocator_shim_default_dispatch_to_glibc.cc" ]
1349       }
1350     } else if (is_android) {
1351       sources +=
1352           [ "allocator/allocator_shim_override_linker_wrapped_symbols.h" ]
1353       all_dependent_configs += [ "//base/allocator:wrap_malloc_symbols" ]
1354       if (use_allocator == "none") {
1355         sources += [ "allocator/allocator_shim_default_dispatch_to_linker_wrapped_symbols.cc" ]
1356       }
1357     } else if (is_mac || is_ios) {
1358       sources += [
1359         "allocator/allocator_shim_default_dispatch_to_mac_zoned_malloc.cc",
1360         "allocator/allocator_shim_default_dispatch_to_mac_zoned_malloc.h",
1361         "allocator/allocator_shim_override_mac_symbols.h",
1362       ]
1363     }
1364   }
1365
1366   if (use_clang_profiling) {
1367     # Call-sites use this conditional on the CLANG_PROFILING macro, for clarity.
1368     sources += [
1369       "test/clang_profiling.cc",
1370       "test/clang_profiling.h",
1371     ]
1372   }
1373
1374   # Allow more direct string conversions on platforms with native utf8
1375   # strings
1376   if (is_mac || is_ios || is_chromeos || is_chromecast || is_fuchsia) {
1377     defines += [ "SYSTEM_NATIVE_UTF8" ]
1378   }
1379
1380   # Android.
1381   if (is_android) {
1382     sources -= [
1383       "debug/stack_trace_posix.cc",
1384       "profiler/stack_sampler_posix.cc",
1385     ]
1386     sources += [
1387       "android/android_hardware_buffer_compat.cc",
1388       "android/android_hardware_buffer_compat.h",
1389       "android/android_image_reader_abi.h",
1390       "android/android_image_reader_compat.cc",
1391       "android/android_image_reader_compat.h",
1392       "android/apk_assets.cc",
1393       "android/apk_assets.h",
1394       "android/application_status_listener.cc",
1395       "android/application_status_listener.h",
1396       "android/base_jni_onload.cc",
1397       "android/base_jni_onload.h",
1398       "android/build_info.cc",
1399       "android/build_info.h",
1400       "android/bundle_utils.cc",
1401       "android/bundle_utils.h",
1402       "android/callback_android.cc",
1403       "android/callback_android.h",
1404       "android/child_process_binding_types.h",
1405       "android/child_process_service.cc",
1406       "android/command_line_android.cc",
1407       "android/content_uri_utils.cc",
1408       "android/content_uri_utils.h",
1409       "android/cpu_features.cc",
1410       "android/early_trace_event_binding.cc",
1411       "android/early_trace_event_binding.h",
1412       "android/event_log.cc",
1413       "android/event_log.h",
1414       "android/feature_list_jni.cc",
1415       "android/field_trial_list.cc",
1416       "android/important_file_writer_android.cc",
1417       "android/int_string_callback.cc",
1418       "android/int_string_callback.h",
1419       "android/java_exception_reporter.cc",
1420       "android/java_exception_reporter.h",
1421       "android/java_handler_thread.cc",
1422       "android/java_handler_thread.h",
1423       "android/java_heap_dump_generator.cc",
1424       "android/java_heap_dump_generator.h",
1425       "android/java_runtime.cc",
1426       "android/java_runtime.h",
1427       "android/jni_android.cc",
1428       "android/jni_android.h",
1429       "android/jni_array.cc",
1430       "android/jni_array.h",
1431       "android/jni_generator/jni_generator_helper.h",
1432       "android/jni_int_wrapper.h",
1433       "android/jni_registrar.cc",
1434       "android/jni_registrar.h",
1435       "android/jni_string.cc",
1436       "android/jni_string.h",
1437       "android/jni_utils.cc",
1438       "android/jni_utils.h",
1439       "android/jni_weak_ref.cc",
1440       "android/jni_weak_ref.h",
1441       "android/library_loader/anchor_functions.cc",
1442       "android/library_loader/anchor_functions.h",
1443       "android/library_loader/library_loader_hooks.cc",
1444       "android/library_loader/library_loader_hooks.h",
1445       "android/library_loader/library_prefetcher.cc",
1446       "android/library_loader/library_prefetcher.h",
1447       "android/library_loader/library_prefetcher_hooks.cc",
1448       "android/locale_utils.cc",
1449       "android/locale_utils.h",
1450       "android/memory_pressure_listener_android.cc",
1451       "android/memory_pressure_listener_android.h",
1452       "android/native_uma_recorder.cc",
1453       "android/path_service_android.cc",
1454       "android/path_utils.cc",
1455       "android/path_utils.h",
1456       "android/reached_addresses_bitset.cc",
1457       "android/reached_addresses_bitset.h",
1458       "android/reached_code_profiler.cc",
1459       "android/reached_code_profiler.h",
1460       "android/record_histogram.cc",
1461       "android/record_user_action.cc",
1462       "android/scoped_hardware_buffer_fence_sync.cc",
1463       "android/scoped_hardware_buffer_fence_sync.h",
1464       "android/scoped_hardware_buffer_handle.cc",
1465       "android/scoped_hardware_buffer_handle.h",
1466       "android/scoped_java_ref.cc",
1467       "android/scoped_java_ref.h",
1468       "android/statistics_recorder_android.cc",
1469       "android/sys_utils.cc",
1470       "android/sys_utils.h",
1471       "android/task_scheduler/post_task_android.cc",
1472       "android/task_scheduler/post_task_android.h",
1473       "android/task_scheduler/task_runner_android.cc",
1474       "android/task_scheduler/task_runner_android.h",
1475       "android/time_utils.cc",
1476       "android/timezone_utils.cc",
1477       "android/timezone_utils.h",
1478       "android/trace_event_binding.cc",
1479       "android/trace_event_binding.h",
1480       "android/unguessable_token_android.cc",
1481       "android/unguessable_token_android.h",
1482       "memory/platform_shared_memory_region_android.cc",
1483       "system/sys_info_android.cc",
1484
1485       # Android uses some Linux sources.
1486       "debug/elf_reader.cc",
1487       "debug/elf_reader.h",
1488       "debug/proc_maps_linux.cc",
1489       "debug/proc_maps_linux.h",
1490       "files/file_path_watcher_linux.cc",
1491       "power_monitor/power_monitor_device_source_android.cc",
1492       "process/internal_linux.cc",
1493       "process/internal_linux.h",
1494       "process/memory_linux.cc",
1495       "process/process_handle_linux.cc",
1496       "process/process_iterator_linux.cc",
1497       "process/process_metrics_linux.cc",
1498       "system/sys_info_linux.cc",
1499     ]
1500
1501     deps += [
1502       ":base_jni_headers",
1503       "//third_party/android_ndk:cpu_features",
1504       "//third_party/ashmem",
1505     ]
1506
1507     # Needs to be a public config so that dependent targets link against it as
1508     # well when doing a component build.
1509     public_configs = [ ":android_system_libs" ]
1510
1511     if (can_unwind_with_cfi_table) {
1512       sources += [
1513         "trace_event/cfi_backtrace_android.cc",
1514         "trace_event/cfi_backtrace_android.h",
1515       ]
1516     }
1517     if (current_cpu == "arm") {
1518       sources += [
1519         "profiler/chrome_unwinder_android.cc",
1520         "profiler/chrome_unwinder_android.h",
1521       ]
1522     }
1523
1524     if (current_cpu != "arm") {
1525       # The reached code profiler is only supported on Android with 32-bit arm
1526       # arch.
1527       sources -= [ "android/reached_code_profiler.cc" ]
1528       sources += [ "android/reached_code_profiler_stub.cc" ]
1529     }
1530
1531     # This is actually a linker script, but it can be added to the link in the
1532     # same way as a library.
1533     libs += [ "android/library_loader/anchor_functions.lds" ]
1534   }
1535
1536   # Chromeos.
1537   if (is_chromeos) {
1538     sources += [
1539       "power_monitor/power_monitor_device_source_chromeos.cc",
1540       "system/sys_info_chromeos.cc",
1541     ]
1542   }
1543
1544   # Fuchsia.
1545   if (is_fuchsia) {
1546     sources += [
1547       "base_paths_fuchsia.cc",
1548       "base_paths_fuchsia.h",
1549       "debug/debugger_posix.cc",
1550       "debug/elf_reader.cc",
1551       "debug/elf_reader.h",
1552       "debug/stack_trace_fuchsia.cc",
1553       "file_descriptor_posix.h",
1554       "files/dir_reader_posix.h",
1555       "files/file_descriptor_watcher_posix.cc",
1556       "files/file_descriptor_watcher_posix.h",
1557       "files/file_enumerator_posix.cc",
1558       "files/file_path_watcher_fuchsia.cc",
1559       "files/file_posix.cc",
1560       "files/file_util_posix.cc",
1561       "files/memory_mapped_file_posix.cc",
1562       "fuchsia/default_job.cc",
1563       "fuchsia/default_job.h",
1564       "fuchsia/file_utils.cc",
1565       "fuchsia/file_utils.h",
1566       "fuchsia/filtered_service_directory.cc",
1567       "fuchsia/filtered_service_directory.h",
1568       "fuchsia/fuchsia_logging.cc",
1569       "fuchsia/fuchsia_logging.h",
1570       "fuchsia/intl_profile_watcher.cc",
1571       "fuchsia/intl_profile_watcher.h",
1572       "fuchsia/process_context.cc",
1573       "fuchsia/process_context.h",
1574       "fuchsia/scoped_service_binding.h",
1575       "fuchsia/scoped_service_publisher.h",
1576       "fuchsia/service_provider_impl.cc",
1577       "fuchsia/service_provider_impl.h",
1578       "fuchsia/startup_context.cc",
1579       "fuchsia/startup_context.h",
1580       "memory/platform_shared_memory_region_fuchsia.cc",
1581       "message_loop/message_pump_fuchsia.cc",
1582       "message_loop/message_pump_fuchsia.h",
1583       "message_loop/watchable_io_message_pump_posix.cc",
1584       "message_loop/watchable_io_message_pump_posix.h",
1585       "native_library_fuchsia.cc",
1586       "posix/eintr_wrapper.h",
1587       "posix/file_descriptor_shuffle.cc",
1588       "posix/file_descriptor_shuffle.h",
1589       "posix/global_descriptors.cc",
1590       "posix/global_descriptors.h",
1591       "posix/safe_strerror.cc",
1592       "posix/safe_strerror.h",
1593       "process/kill_fuchsia.cc",
1594       "process/launch_fuchsia.cc",
1595       "process/memory_fuchsia.cc",
1596       "process/process_fuchsia.cc",
1597       "process/process_handle_fuchsia.cc",
1598       "process/process_iterator_fuchsia.cc",
1599       "process/process_metrics_fuchsia.cc",
1600       "process/process_metrics_posix.cc",
1601       "profiler/module_cache_posix.cc",
1602       "profiler/stack_sampler_posix.cc",
1603       "rand_util_fuchsia.cc",
1604       "strings/string_util_posix.h",
1605       "strings/sys_string_conversions_posix.cc",
1606       "sync_socket_posix.cc",
1607       "synchronization/condition_variable_posix.cc",
1608       "synchronization/lock_impl_posix.cc",
1609       "synchronization/waitable_event_posix.cc",
1610       "synchronization/waitable_event_watcher_posix.cc",
1611       "system/sys_info_fuchsia.cc",
1612       "task/thread_pool/task_tracker_posix.cc",
1613       "task/thread_pool/task_tracker_posix.h",
1614       "threading/platform_thread_fuchsia.cc",
1615       "threading/platform_thread_posix.cc",
1616       "threading/thread_local_storage_posix.cc",
1617       "time/time_conversion_posix.cc",
1618       "time/time_exploded_icu.cc",
1619       "time/time_fuchsia.cc",
1620       "timer/hi_res_timer_manager_posix.cc",
1621     ]
1622
1623     # These only need to be public deps because of includes of their headers
1624     # by public //base headers, which requires they be on the include path.
1625     # TODO(https://crbug.com/841171): Move these back to |deps|.
1626     public_deps += [
1627       "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.intl",
1628       "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.io",
1629       "//third_party/fuchsia-sdk/sdk/pkg/async",
1630       "//third_party/fuchsia-sdk/sdk/pkg/fdio",
1631       "//third_party/fuchsia-sdk/sdk/pkg/fidl_cpp",
1632       "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
1633       "//third_party/fuchsia-sdk/sdk/pkg/vfs_cpp",
1634       "//third_party/fuchsia-sdk/sdk/pkg/zx",
1635     ]
1636
1637     deps += [
1638       "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.sys",
1639       "//third_party/fuchsia-sdk/sdk/pkg/async-default",
1640       "//third_party/fuchsia-sdk/sdk/pkg/async-loop-cpp",
1641       "//third_party/fuchsia-sdk/sdk/pkg/async-loop-default",
1642       "//third_party/fuchsia-sdk/sdk/pkg/fidl",
1643       "//third_party/fuchsia-sdk/sdk/pkg/sys_inspect_cpp",
1644       "//third_party/fuchsia-sdk/sdk/pkg/syslog",
1645       "//third_party/icu",
1646     ]
1647   }
1648
1649   # Use the base implementation of hash functions when building for
1650   # NaCl. Otherwise, use boringssl. Building boringssl for NaCl opens
1651   # a can of worms surrounding the nacl_io library.
1652   #
1653   # TODO(crbug.com/702997) Use only boringssl when NaCl is removed.
1654   sources += [
1655     "hash/md5.h",
1656     "hash/md5_constexpr.h",
1657     "hash/md5_constexpr_internal.h",
1658     "hash/sha1.h",
1659   ]
1660   if (is_nacl) {
1661     sources += [
1662       "hash/md5_nacl.cc",
1663       "hash/md5_nacl.h",
1664       "hash/sha1.cc",
1665     ]
1666   } else {
1667     sources += [
1668       "hash/md5_boringssl.cc",
1669       "hash/md5_boringssl.h",
1670       "hash/sha1_boringssl.cc",
1671     ]
1672     public_deps += [ "//third_party/boringssl" ]
1673   }
1674
1675   # NaCl.
1676   if (is_nacl) {
1677     # Explicitly include the linux file.
1678     sources += [
1679       "files/file_path_watcher_stub.cc",
1680       "process/process_metrics_nacl.cc",
1681       "sync_socket_nacl.cc",
1682       "threading/platform_thread_linux.cc",
1683     ]
1684
1685     sources -= [
1686       "cpu.cc",
1687       "debug/crash_logging.cc",
1688       "debug/crash_logging.h",
1689       "debug/stack_trace.cc",
1690       "debug/stack_trace_posix.cc",
1691       "files/file_enumerator.cc",
1692       "files/file_enumerator_posix.cc",
1693       "files/file_proxy.cc",
1694       "files/important_file_writer.cc",
1695       "files/important_file_writer.h",
1696       "files/scoped_temp_dir.cc",
1697       "memory/discardable_memory.cc",
1698       "memory/discardable_memory.h",
1699       "memory/discardable_memory_allocator.cc",
1700       "memory/discardable_memory_allocator.h",
1701       "memory/discardable_shared_memory.cc",
1702       "memory/discardable_shared_memory.h",
1703       "memory/madv_free_discardable_memory_allocator_posix.cc",
1704       "memory/madv_free_discardable_memory_allocator_posix.h",
1705       "memory/madv_free_discardable_memory_posix.cc",
1706       "memory/madv_free_discardable_memory_posix.h",
1707       "native_library.cc",
1708       "native_library_posix.cc",
1709       "path_service.cc",
1710       "process/kill.cc",
1711       "process/kill.h",
1712       "process/memory.cc",
1713       "process/memory.h",
1714       "process/process_iterator.cc",
1715       "process/process_iterator.h",
1716       "process/process_metrics.cc",
1717       "process/process_metrics_posix.cc",
1718       "process/process_posix.cc",
1719       "profiler/module_cache_posix.cc",
1720       "scoped_native_library.cc",
1721       "sync_socket_posix.cc",
1722       "system/sys_info.cc",
1723       "system/sys_info_posix.cc",
1724       "task/thread_pool/initialization_util.cc",
1725       "task/thread_pool/initialization_util.h",
1726     ]
1727
1728     if (is_nacl_nonsfi) {
1729       sources -= [ "rand_util_nacl.cc" ]
1730     } else {
1731       sources -= [
1732         "files/file_descriptor_watcher_posix.cc",
1733         "files/file_descriptor_watcher_posix.h",
1734         "files/file_util.cc",
1735         "files/file_util.h",
1736         "files/file_util_posix.cc",
1737         "json/json_file_value_serializer.cc",
1738         "json/json_file_value_serializer.h",
1739         "posix/unix_domain_socket.cc",
1740         "process/kill_posix.cc",
1741         "process/launch.cc",
1742         "process/launch.h",
1743         "process/launch_posix.cc",
1744         "rand_util_posix.cc",
1745         "task/thread_pool/task_tracker_posix.cc",
1746         "task/thread_pool/task_tracker_posix.h",
1747       ]
1748     }
1749   } else {
1750     # Remove NaCl stuff.
1751     sources -= [
1752       "os_compat_nacl.cc",
1753       "os_compat_nacl.h",
1754       "rand_util_nacl.cc",
1755     ]
1756
1757     if (use_partition_alloc) {
1758       # Add stuff that doesn't work in NaCl.
1759       sources += [
1760         # PartitionAlloc uses SpinLock, which doesn't work in NaCl (see below).
1761         "allocator/partition_allocator/address_pool_manager.cc",
1762         "allocator/partition_allocator/address_pool_manager.h",
1763         "allocator/partition_allocator/address_space_randomization.cc",
1764         "allocator/partition_allocator/address_space_randomization.h",
1765         "allocator/partition_allocator/memory_reclaimer.cc",
1766         "allocator/partition_allocator/memory_reclaimer.h",
1767         "allocator/partition_allocator/oom.h",
1768         "allocator/partition_allocator/oom_callback.cc",
1769         "allocator/partition_allocator/oom_callback.h",
1770         "allocator/partition_allocator/page_allocator.cc",
1771         "allocator/partition_allocator/page_allocator.h",
1772         "allocator/partition_allocator/page_allocator_internal.h",
1773         "allocator/partition_allocator/partition_address_space.cc",
1774         "allocator/partition_allocator/partition_address_space.h",
1775         "allocator/partition_allocator/partition_alloc.cc",
1776         "allocator/partition_allocator/partition_alloc.h",
1777         "allocator/partition_allocator/partition_alloc_check.h",
1778         "allocator/partition_allocator/partition_alloc_constants.h",
1779         "allocator/partition_allocator/partition_alloc_features.cc",
1780         "allocator/partition_allocator/partition_alloc_features.h",
1781         "allocator/partition_allocator/partition_alloc_forward.h",
1782         "allocator/partition_allocator/partition_bucket.cc",
1783         "allocator/partition_allocator/partition_bucket.h",
1784         "allocator/partition_allocator/partition_cookie.h",
1785         "allocator/partition_allocator/partition_direct_map_extent.h",
1786         "allocator/partition_allocator/partition_freelist_entry.h",
1787         "allocator/partition_allocator/partition_oom.cc",
1788         "allocator/partition_allocator/partition_oom.h",
1789         "allocator/partition_allocator/partition_page.cc",
1790         "allocator/partition_allocator/partition_page.h",
1791         "allocator/partition_allocator/random.cc",
1792         "allocator/partition_allocator/random.h",
1793         "allocator/partition_allocator/spin_lock.cc",
1794         "allocator/partition_allocator/spin_lock.h",
1795       ]
1796       if (is_win) {
1797         sources +=
1798             [ "allocator/partition_allocator/page_allocator_internals_win.h" ]
1799       } else if (is_posix) {
1800         sources +=
1801             [ "allocator/partition_allocator/page_allocator_internals_posix.h" ]
1802       } else if (is_fuchsia) {
1803         sources += [
1804           "allocator/partition_allocator/page_allocator_internals_fuchsia.h",
1805         ]
1806       }
1807     }
1808   }
1809
1810   # Windows.
1811   if (is_win) {
1812     sources += [
1813       "files/file_enumerator_win.cc",
1814       "memory/platform_shared_memory_region_win.cc",
1815       "power_monitor/power_monitor_device_source_win.cc",
1816       "profiler/win32_stack_frame_unwinder.cc",
1817       "profiler/win32_stack_frame_unwinder.h",
1818       "rand_util_win.cc",
1819       "system/sys_info_win.cc",
1820       "time/time_win.cc",
1821       "time/time_win_features.cc",
1822       "time/time_win_features.h",
1823     ]
1824
1825     sources -= [
1826       "file_descriptor_store.cc",
1827       "file_descriptor_store.h",
1828       "strings/string16.cc",
1829     ]
1830
1831     # winternl.h and NTSecAPI.h have different definitions of UNICODE_STRING.
1832     # There's only one client of NTSecAPI.h in base but several of winternl.h,
1833     # so exclude the NTSecAPI.h one.
1834     jumbo_excluded_sources = [ "rand_util_win.cc" ]
1835
1836     deps += [ "//base/win:base_win_buildflags" ]
1837
1838     data_deps += [ "//build/win:runtime_libs" ]
1839
1840     if (com_init_check_hook_disabled) {
1841       defines += [ "COM_INIT_CHECK_HOOK_DISABLED" ]
1842     }
1843
1844     # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
1845     configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
1846
1847     libs += [
1848       "cfgmgr32.lib",
1849       "powrprof.lib",
1850       "propsys.lib",
1851       "setupapi.lib",
1852       "userenv.lib",
1853       "wbemuuid.lib",
1854       "winmm.lib",
1855     ]
1856     all_dependent_configs += [
1857       ":base_win_linker_flags",
1858       "//tools/win/DebugVisualizers:chrome",
1859     ]
1860     inputs = [
1861       # chrome.natvis listed as an input here instead of in
1862       # //tools/win/DebugVisualizers:chrome to prevent unnecessary size increase
1863       # in generated build files.
1864       "//tools/win/DebugVisualizers/chrome.natvis",
1865     ]
1866   }
1867
1868   # Desktop Mac.
1869   if (is_mac) {
1870     sources -= [ "process/launch_posix.cc" ]
1871     sources += [
1872       "files/file_path_watcher_fsevents.cc",
1873       "files/file_path_watcher_fsevents.h",
1874       "files/file_path_watcher_kqueue.cc",
1875       "files/file_path_watcher_kqueue.h",
1876       "mac/scoped_typeref.h",
1877       "memory/platform_shared_memory_region_mac.cc",
1878       "message_loop/message_pump_kqueue.cc",
1879       "message_loop/message_pump_kqueue.h",
1880       "power_monitor/power_monitor_device_source_mac.mm",
1881       "power_monitor/thermal_state_observer_mac.h",
1882       "power_monitor/thermal_state_observer_mac.mm",
1883       "system/sys_info_mac.mm",
1884       "time/time_conversion_posix.cc",
1885       "time/time_exploded_posix.cc",
1886       "time/time_mac.cc",
1887     ]
1888
1889     libs += [
1890       "ApplicationServices.framework",
1891       "AppKit.framework",
1892       "bsm",
1893       "CoreFoundation.framework",
1894       "IOKit.framework",
1895       "OpenDirectory.framework",
1896       "pmenergy",
1897       "pmsample",
1898       "Security.framework",
1899     ]
1900   }
1901
1902   # Mac or iOS.
1903   if (is_mac || is_ios) {
1904     sources -= [
1905       "native_library_posix.cc",
1906       "profiler/module_cache_posix.cc",
1907       "strings/sys_string_conversions_posix.cc",
1908       "synchronization/waitable_event_posix.cc",
1909       "synchronization/waitable_event_watcher_posix.cc",
1910       "threading/platform_thread_internal_posix.cc",
1911     ]
1912   }
1913
1914   # Linux.
1915   if (is_linux || is_tizen) {
1916     # TODO(brettw) this will need to be parameterized at some point.
1917     linux_configs = []
1918     if (use_glib) {
1919       linux_configs += [ "//build/config/linux:glib" ]
1920     }
1921
1922     configs += linux_configs
1923     all_dependent_configs += linux_configs
1924
1925     sources += [
1926       "nix/mime_util_xdg.cc",
1927       "nix/mime_util_xdg.h",
1928       "nix/xdg_util.cc",
1929       "nix/xdg_util.h",
1930       "system/sys_info_linux.cc",
1931     ]
1932
1933     defines += [ "USE_SYMBOLIZE" ]
1934
1935     # These dependencies are not required on Android, and in the case
1936     # of xdg_mime must be excluded due to licensing restrictions.
1937     deps += [
1938       "//base/third_party/symbolize",
1939       "//base/third_party/xdg_mime",
1940       "//base/third_party/xdg_user_dirs",
1941     ]
1942   } else {
1943     if (!is_android) {
1944       sources -= [
1945         "linux_util.cc",
1946         "linux_util.h",
1947       ]
1948     }
1949   }
1950
1951   # iOS
1952   if (is_ios) {
1953     sources -= [
1954       "files/file_path_watcher.cc",
1955       "files/file_path_watcher.h",
1956       "memory/discardable_shared_memory.cc",
1957       "memory/discardable_shared_memory.h",
1958       "process/kill.cc",
1959       "process/kill.h",
1960       "process/kill_posix.cc",
1961       "process/launch.cc",
1962       "process/launch.h",
1963       "process/launch_posix.cc",
1964       "process/memory.cc",
1965       "process/memory.h",
1966       "process/process_iterator.cc",
1967       "process/process_iterator.h",
1968       "process/process_metrics_posix.cc",
1969       "process/process_posix.cc",
1970       "sync_socket.h",
1971       "sync_socket_posix.cc",
1972       "synchronization/waitable_event_watcher.h",
1973     ]
1974     sources += [
1975       "base_paths_mac.h",
1976       "base_paths_mac.mm",
1977       "file_version_info_mac.h",
1978       "file_version_info_mac.mm",
1979       "files/file_util_mac.mm",
1980       "mac/bundle_locations.h",
1981       "mac/bundle_locations.mm",
1982       "mac/call_with_eh_frame.cc",
1983       "mac/call_with_eh_frame.h",
1984       "mac/foundation_util.h",
1985       "mac/foundation_util.mm",
1986       "mac/mac_logging.h",
1987       "mac/mac_logging.mm",
1988       "mac/mach_logging.cc",
1989       "mac/mach_logging.h",
1990       "mac/objc_release_properties.h",
1991       "mac/objc_release_properties.mm",
1992       "mac/scoped_block.h",
1993       "mac/scoped_mach_port.cc",
1994       "mac/scoped_mach_port.h",
1995       "mac/scoped_mach_vm.cc",
1996       "mac/scoped_mach_vm.h",
1997       "mac/scoped_nsautorelease_pool.h",
1998       "mac/scoped_nsautorelease_pool.mm",
1999       "mac/scoped_nsobject.h",
2000       "mac/scoped_objc_class_swizzler.h",
2001       "mac/scoped_objc_class_swizzler.mm",
2002       "mac/scoped_typeref.h",
2003       "message_loop/message_pump_mac.h",
2004       "message_loop/message_pump_mac.mm",
2005       "power_monitor/power_monitor_device_source_ios.mm",
2006       "process/memory_stubs.cc",
2007       "strings/sys_string_conversions_mac.mm",
2008       "synchronization/waitable_event_mac.cc",
2009       "system/sys_info_ios.mm",
2010       "task/thread_pool/thread_group_native_mac.h",
2011       "task/thread_pool/thread_group_native_mac.mm",
2012       "threading/platform_thread_mac.mm",
2013       "time/time_conversion_posix.cc",
2014       "time/time_mac.cc",
2015     ]
2016
2017     if (use_allocator_shim) {
2018       sources += [
2019         "allocator/allocator_interception_mac.h",
2020         "allocator/allocator_interception_mac.mm",
2021         "allocator/malloc_zone_functions_mac.cc",
2022         "allocator/malloc_zone_functions_mac.h",
2023       ]
2024     } else {
2025       sources -= [
2026         "sampling_heap_profiler/poisson_allocation_sampler.cc",
2027         "sampling_heap_profiler/poisson_allocation_sampler.h",
2028         "sampling_heap_profiler/sampling_heap_profiler.cc",
2029         "sampling_heap_profiler/sampling_heap_profiler.h",
2030       ]
2031     }
2032
2033     if (current_cpu == "x64" || current_cpu == "arm64") {
2034       sources += [ "time/time_exploded_posix.cc" ]
2035     } else {
2036       sources += [ "time/time_exploded_ios.cc" ]
2037     }
2038
2039     libs += [ "UIKit.framework" ]
2040   }
2041
2042   if (dep_libevent) {
2043     deps += [ "//base/third_party/libevent" ]
2044   }
2045
2046   if (use_libevent) {
2047     sources += [
2048       "message_loop/message_pump_libevent.cc",
2049       "message_loop/message_pump_libevent.h",
2050     ]
2051   }
2052
2053   # Android and MacOS have their own custom shared memory handle
2054   # implementations. e.g. due to supporting both POSIX and native handles.
2055   if (is_posix && !is_android && !is_mac) {
2056     sources += [ "memory/platform_shared_memory_region_posix.cc" ]
2057   }
2058
2059   if (is_posix && !is_mac && !is_ios) {
2060     sources += [
2061       "time/time_conversion_posix.cc",
2062       "time/time_exploded_posix.cc",
2063       "time/time_now_posix.cc",
2064     ]
2065   }
2066
2067   if (is_posix && !is_mac && !is_ios && !is_nacl) {
2068     sources += [
2069       "posix/can_lower_nice_to.cc",
2070       "posix/can_lower_nice_to.h",
2071     ]
2072   }
2073
2074   if ((is_posix && !is_mac && !is_ios && !is_android && !is_chromeos) ||
2075       is_fuchsia) {
2076     sources += [ "power_monitor/power_monitor_device_source_stub.cc" ]
2077   }
2078
2079   if (is_tizen) {
2080     set_sources_assignment_filter([])
2081     sources += [
2082       "files/file_path_watcher_linux.cc",
2083       "files/file_util_linux.cc",
2084       "process/internal_linux.cc",
2085       "process/internal_linux.h",
2086       "process/memory_linux.cc",
2087       "process/process_handle_linux.cc",
2088       "process/process_iterator_linux.cc",
2089       "process/process_linux.cc",
2090       "process/process_metrics_linux.cc",
2091       "system/sys_info_linux.cc",
2092       "threading/platform_thread_linux.cc",
2093     ]
2094     set_sources_assignment_filter(sources_assignment_filter)
2095   }
2096
2097   # On ARC++-enabled ChromeOS system, we need TimeTicks::FromUptimeMillis to
2098   # interpret time values sent from Android container.
2099   if (is_android || is_chromeos) {
2100     sources += [ "time/time_android.cc" ]
2101   }
2102
2103   if (!use_glib) {
2104     sources -= [
2105       "message_loop/message_pump_glib.cc",
2106       "message_loop/message_pump_glib.h",
2107     ]
2108   }
2109
2110   if (enable_base_tracing) {
2111     sources += [
2112       "trace_event/auto_open_close_event.h",
2113       "trace_event/blame_context.cc",
2114       "trace_event/blame_context.h",
2115       "trace_event/builtin_categories.cc",
2116       "trace_event/builtin_categories.h",
2117       "trace_event/category_registry.cc",
2118       "trace_event/category_registry.h",
2119       "trace_event/event_name_filter.cc",
2120       "trace_event/event_name_filter.h",
2121       "trace_event/heap_profiler.h",
2122       "trace_event/heap_profiler_event_filter.cc",
2123       "trace_event/heap_profiler_event_filter.h",
2124       "trace_event/log_message.cc",
2125       "trace_event/log_message.h",
2126       "trace_event/malloc_dump_provider.cc",
2127       "trace_event/malloc_dump_provider.h",
2128       "trace_event/memory_allocator_dump.cc",
2129       "trace_event/memory_allocator_dump.h",
2130       "trace_event/memory_dump_manager.cc",
2131       "trace_event/memory_dump_manager.h",
2132       "trace_event/memory_dump_manager_test_utils.h",
2133       "trace_event/memory_dump_provider.h",
2134       "trace_event/memory_dump_provider_info.cc",
2135       "trace_event/memory_dump_provider_info.h",
2136       "trace_event/memory_dump_request_args.cc",
2137       "trace_event/memory_dump_request_args.h",
2138       "trace_event/memory_dump_scheduler.cc",
2139       "trace_event/memory_dump_scheduler.h",
2140       "trace_event/memory_infra_background_allowlist.cc",
2141       "trace_event/memory_infra_background_allowlist.h",
2142       "trace_event/memory_usage_estimator.cc",
2143       "trace_event/memory_usage_estimator.h",
2144       "trace_event/process_memory_dump.cc",
2145       "trace_event/process_memory_dump.h",
2146       "trace_event/thread_instruction_count.cc",
2147       "trace_event/thread_instruction_count.h",
2148       "trace_event/trace_arguments.cc",
2149       "trace_event/trace_arguments.h",
2150       "trace_event/trace_buffer.cc",
2151       "trace_event/trace_buffer.h",
2152       "trace_event/trace_category.h",
2153       "trace_event/trace_config.cc",
2154       "trace_event/trace_config.h",
2155       "trace_event/trace_config_category_filter.cc",
2156       "trace_event/trace_config_category_filter.h",
2157       "trace_event/trace_event.h",
2158       "trace_event/trace_event_filter.cc",
2159       "trace_event/trace_event_filter.h",
2160       "trace_event/trace_event_impl.cc",
2161       "trace_event/trace_event_impl.h",
2162       "trace_event/trace_event_memory_overhead.cc",
2163       "trace_event/trace_event_memory_overhead.h",
2164       "trace_event/trace_log.cc",
2165       "trace_event/trace_log.h",
2166       "trace_event/trace_log_constants.cc",
2167       "trace_event/traced_value.cc",
2168       "trace_event/traced_value.h",
2169       "trace_event/tracing_agent.cc",
2170       "trace_event/tracing_agent.h",
2171       "trace_event/typed_macros.h",
2172       "trace_event/typed_macros_embedder_support.h",
2173       "trace_event/typed_macros_internal.cc",
2174       "trace_event/typed_macros_internal.h",
2175     ]
2176
2177     public_deps += [ "//third_party/perfetto:libperfetto" ]
2178
2179     deps += [ "//third_party/perfetto/include/perfetto/protozero" ]
2180
2181     all_dependent_configs += [ "//third_party/perfetto/gn:public_config" ]
2182
2183     if (is_win) {
2184       sources += [
2185         "trace_event/trace_event_etw_export_win.cc",
2186         "trace_event/trace_event_etw_export_win.h",
2187         "trace_event/trace_logging_minimal_win.cc",
2188         "trace_event/trace_logging_minimal_win.h",
2189       ]
2190     }
2191
2192     if (is_android) {
2193       sources += [
2194         "trace_event/cpufreq_monitor_android.cc",
2195         "trace_event/cpufreq_monitor_android.h",
2196         "trace_event/java_heap_dump_provider_android.cc",
2197         "trace_event/java_heap_dump_provider_android.h",
2198         "trace_event/trace_event_android.cc",
2199       ]
2200     }
2201   } else {
2202     sources += [
2203       "trace_event/trace_event_stub.cc",
2204       "trace_event/trace_event_stub.h",
2205     ]
2206   }
2207
2208   if (using_sanitizer) {
2209     data += [ "//tools/valgrind/asan/" ]
2210     if (is_win) {
2211       data +=
2212           [ "//third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer.exe" ]
2213     } else {
2214       data += [ "//third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer" ]
2215     }
2216   }
2217
2218   configs += [ "//build/config/compiler:wexit_time_destructors" ]
2219   if (!is_debug) {
2220     configs -= [ "//build/config/compiler:default_optimization" ]
2221     configs += [ "//build/config/compiler:optimize_max" ]
2222   }
2223 }
2224
2225 # Build flags for Control Flow Integrity
2226 # https://www.chromium.org/developers/testing/control-flow-integrity
2227 buildflag_header("cfi_buildflags") {
2228   header = "cfi_buildflags.h"
2229
2230   flags = [
2231     # TODO(pcc): remove CFI_CAST_CHECK, see https://crbug.com/626794.
2232     "CFI_CAST_CHECK=$is_cfi && $use_cfi_cast",
2233     "CFI_ICALL_CHECK=$is_cfi && $use_cfi_icall",
2234     "CFI_ENFORCEMENT_TRAP=$is_cfi && !$use_cfi_diag",
2235     "CFI_ENFORCEMENT_DIAGNOSTIC=$is_cfi && $use_cfi_diag && !$use_cfi_recover",
2236   ]
2237 }
2238
2239 buildflag_header("debugging_buildflags") {
2240   header = "debugging_buildflags.h"
2241   header_dir = "base/debug"
2242   enable_gdbinit_warning =
2243       is_debug && (strip_absolute_paths_from_debug_symbols || use_custom_libcxx)
2244   enable_lldbinit_warning =
2245       is_debug && strip_absolute_paths_from_debug_symbols && is_mac
2246
2247   flags = [
2248     "ENABLE_LOCATION_SOURCE=$enable_location_source",
2249     "FROM_HERE_USES_LOCATION_BUILTINS=$from_here_uses_location_builtins",
2250     "ENABLE_PROFILING=$enable_profiling",
2251     "CAN_UNWIND_WITH_FRAME_POINTERS=$can_unwind_with_frame_pointers",
2252     "UNSAFE_DEVELOPER_BUILD=$is_unsafe_developer_build",
2253     "CAN_UNWIND_WITH_CFI_TABLE=$can_unwind_with_cfi_table",
2254     "ENABLE_ARM_CFI_TABLE=$enable_arm_cfi_table",
2255     "EXCLUDE_UNWIND_TABLES=$exclude_unwind_tables",
2256     "ENABLE_GDBINIT_WARNING=$enable_gdbinit_warning",
2257     "ENABLE_LLDBINIT_WARNING=$enable_lldbinit_warning",
2258   ]
2259 }
2260
2261 buildflag_header("logging_buildflags") {
2262   header = "logging_buildflags.h"
2263
2264   flags = [ "ENABLE_LOG_ERROR_NOT_REACHED=$enable_log_error_not_reached" ]
2265 }
2266
2267 buildflag_header("orderfile_buildflags") {
2268   header = "orderfile_buildflags.h"
2269   header_dir = "base/android/orderfile"
2270   using_order_profiling = is_android && use_order_profiling
2271   using_devtools_dumping =
2272       is_android && devtools_instrumentation_dumping && enable_base_tracing
2273
2274   flags = [
2275     "DEVTOOLS_INSTRUMENTATION_DUMPING=$using_devtools_dumping",
2276     "ORDERFILE_INSTRUMENTATION=$using_order_profiling",
2277   ]
2278 }
2279
2280 buildflag_header("synchronization_buildflags") {
2281   header = "synchronization_buildflags.h"
2282   header_dir = "base/synchronization"
2283
2284   flags =
2285       [ "ENABLE_MUTEX_PRIORITY_INHERITANCE=$enable_mutex_priority_inheritance" ]
2286 }
2287
2288 buildflag_header("anchor_functions_buildflags") {
2289   header = "anchor_functions_buildflags.h"
2290   header_dir = "base/android/library_loader"
2291   _supports_code_ordering =
2292       is_android && (current_cpu == "arm" || current_cpu == "arm64" ||
2293                      current_cpu == "x86" || current_cpu == "x64")
2294
2295   flags = [
2296     "USE_LLD=$use_lld",
2297     "SUPPORTS_CODE_ORDERING=$_supports_code_ordering",
2298   ]
2299 }
2300
2301 buildflag_header("partition_alloc_buildflags") {
2302   header = "partition_alloc_buildflags.h"
2303   header_dir = "base"
2304
2305   flags = [ "USE_PARTITION_ALLOC=$use_partition_alloc" ]
2306 }
2307
2308 buildflag_header("clang_profiling_buildflags") {
2309   header = "clang_profiling_buildflags.h"
2310   header_dir = "base"
2311
2312   flags = [
2313     "CLANG_PROFILING=$use_clang_profiling",
2314     "CLANG_PROFILING_INSIDE_SANDBOX=$use_clang_profiling_inside_sandbox",
2315     "USE_CLANG_COVERAGE=$use_clang_coverage",
2316   ]
2317 }
2318
2319 buildflag_header("sanitizer_buildflags") {
2320   header = "sanitizer_buildflags.h"
2321   header_dir = "base"
2322
2323   flags = [ "IS_HWASAN=$is_hwasan" ]
2324 }
2325
2326 buildflag_header("tracing_buildflags") {
2327   header = "tracing_buildflags.h"
2328
2329   flags = [ "ENABLE_BASE_TRACING=$enable_base_tracing" ]
2330 }
2331
2332 # This is the subset of files from base that should not be used with a dynamic
2333 # library. Note that this library cannot depend on base because base depends on
2334 # base_static.
2335 static_library("base_static") {
2336   sources = [
2337     "base_switches.cc",
2338     "base_switches.h",
2339   ]
2340
2341   if (is_win) {
2342     sources += [
2343       "win/static_constants.cc",
2344       "win/static_constants.h",
2345     ]
2346
2347     public_deps = [ "//base/win:pe_image" ]
2348
2349     # Disable sanitizer coverage in win/pe_image.cc. It is called by the sandbox
2350     # before sanitizer coverage can initialize. http://crbug.com/484711
2351     configs -= [ "//build/config/sanitizers:default_sanitizer_flags" ]
2352     configs +=
2353         [ "//build/config/sanitizers:default_sanitizer_flags_but_coverage" ]
2354   }
2355
2356   if (!is_debug) {
2357     configs -= [ "//build/config/compiler:default_optimization" ]
2358     configs += [ "//build/config/compiler:optimize_max" ]
2359   }
2360 }
2361
2362 component("i18n") {
2363   output_name = "base_i18n"
2364   sources = [
2365     "i18n/base_i18n_export.h",
2366     "i18n/base_i18n_switches.cc",
2367     "i18n/base_i18n_switches.h",
2368     "i18n/break_iterator.cc",
2369     "i18n/break_iterator.h",
2370     "i18n/case_conversion.cc",
2371     "i18n/case_conversion.h",
2372     "i18n/char_iterator.cc",
2373     "i18n/char_iterator.h",
2374     "i18n/character_encoding.cc",
2375     "i18n/character_encoding.h",
2376     "i18n/encoding_detection.cc",
2377     "i18n/encoding_detection.h",
2378     "i18n/file_util_icu.cc",
2379     "i18n/file_util_icu.h",
2380     "i18n/i18n_constants.cc",
2381     "i18n/i18n_constants.h",
2382     "i18n/icu_string_conversions.cc",
2383     "i18n/icu_string_conversions.h",
2384     "i18n/icu_util.cc",
2385     "i18n/icu_util.h",
2386     "i18n/message_formatter.cc",
2387     "i18n/message_formatter.h",
2388     "i18n/number_formatting.cc",
2389     "i18n/number_formatting.h",
2390     "i18n/rtl.cc",
2391     "i18n/rtl.h",
2392     "i18n/streaming_utf8_validator.cc",
2393     "i18n/streaming_utf8_validator.h",
2394     "i18n/string_compare.cc",
2395     "i18n/string_compare.h",
2396     "i18n/string_search.cc",
2397     "i18n/string_search.h",
2398     "i18n/time_formatting.cc",
2399     "i18n/time_formatting.h",
2400     "i18n/timezone.cc",
2401     "i18n/timezone.h",
2402     "i18n/unicodestring.h",
2403     "i18n/utf8_validator_tables.cc",
2404     "i18n/utf8_validator_tables.h",
2405   ]
2406   defines = [ "BASE_I18N_IMPLEMENTATION" ]
2407   configs += [ "//build/config/compiler:wexit_time_destructors" ]
2408   public_deps = [
2409     "//third_party/ced",
2410     "//third_party/icu",
2411   ]
2412   deps = [
2413     ":base",
2414     "//base/third_party/dynamic_annotations",
2415     "//build:chromecast_buildflags",
2416   ]
2417
2418   if (!is_debug) {
2419     configs -= [ "//build/config/compiler:default_optimization" ]
2420     configs += [ "//build/config/compiler:optimize_max" ]
2421   }
2422
2423   # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
2424   configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
2425
2426   if (is_mac) {
2427     libs = [ "CoreFoundation.framework" ]
2428   }
2429 }
2430
2431 test("base_perftests") {
2432   sources = [
2433     "hash/sha1_perftest.cc",
2434     "message_loop/message_pump_perftest.cc",
2435     "observer_list_perftest.cc",
2436     "strings/string_util_perftest.cc",
2437     "task/job_perftest.cc",
2438     "task/sequence_manager/sequence_manager_perftest.cc",
2439     "task/thread_pool/thread_pool_perftest.cc",
2440     "threading/thread_local_storage_perftest.cc",
2441
2442     # "test/run_all_unittests.cc",
2443     "json/json_perftest.cc",
2444     "synchronization/waitable_event_perftest.cc",
2445     "threading/thread_perftest.cc",
2446   ]
2447   if (!is_ios) {
2448     # iOS doesn't use the partition allocator, therefore it can't run this test.
2449     sources += [
2450       "allocator/partition_allocator/partition_alloc_perftest.cc",
2451       "allocator/partition_allocator/spin_lock_perftest.cc",
2452     ]
2453   }
2454   deps = [
2455     ":base",
2456     "//base/test:test_support",
2457     "//base/test:test_support_perf",
2458     "//testing/gtest",
2459     "//testing/perf",
2460   ]
2461   data_deps = [
2462     # Needed for isolate script to execute.
2463     "//testing:run_perf_test",
2464   ]
2465
2466   if (is_android) {
2467     deps += [ "//testing/android/native_test:native_test_native_code" ]
2468     shard_timeout = 600
2469   }
2470 }
2471
2472 test("base_i18n_perftests") {
2473   sources = [ "i18n/streaming_utf8_validator_perftest.cc" ]
2474   deps = [
2475     ":base",
2476     ":i18n",
2477     "//base/test:test_support",
2478     "//base/test:test_support_perf",
2479     "//testing/gtest",
2480   ]
2481 }
2482
2483 if (!is_ios) {
2484   executable("build_utf8_validator_tables") {
2485     sources = [ "i18n/build_utf8_validator_tables.cc" ]
2486     deps = [
2487       ":base",
2488       "//build/win:default_exe_manifest",
2489       "//third_party/icu:icuuc",
2490     ]
2491   }
2492
2493   executable("check_example") {
2494     sources = [ "check_example.cc" ]
2495     deps = [
2496       ":base",
2497       "//build/win:default_exe_manifest",
2498     ]
2499   }
2500
2501   executable("json_perftest_decodebench") {
2502     sources = [ "json/json_perftest_decodebench.cc" ]
2503     deps = [ ":base" ]
2504   }
2505 }
2506
2507 if (is_win) {
2508   # Target to manually rebuild pe_image_test.dll which is checked into
2509   # base/test/data/pe_image.
2510   shared_library("pe_image_test") {
2511     sources = [ "win/pe_image_test.cc" ]
2512     ldflags = [
2513       "/DELAYLOAD:cfgmgr32.dll",
2514       "/DELAYLOAD:shell32.dll",
2515       "/SUBSYSTEM:WINDOWS",
2516     ]
2517     libs = [
2518       "cfgmgr32.lib",
2519       "shell32.lib",
2520     ]
2521   }
2522
2523   loadable_module("scoped_handle_test_dll") {
2524     sources = [ "win/scoped_handle_test_dll.cc" ]
2525     deps = [
2526       ":base",
2527       "//base/win:base_win_buildflags",
2528     ]
2529   }
2530 }
2531
2532 if ((is_win && (current_cpu == "x64" || current_cpu == "arm64")) || is_mac ||
2533     (is_android && (current_cpu == "arm" || current_cpu == "arm64"))) {
2534   # Must be a loadable module so that it can be loaded/unloaded at runtime
2535   # during testing.
2536   loadable_module("base_profiler_test_support_library") {
2537     testonly = true
2538     sources = [ "profiler/test_support_library.cc" ]
2539   }
2540 }
2541
2542 if (is_android) {
2543   source_set("native_unwinder_android") {
2544     # This target is intended to be used only within the stack_unwinder dynamic
2545     # feature module, to avoid binary size increase in Chrome due to the
2546     # libunwindstack dependency. The additional :* visibility is needed to allow
2547     # use by base test targets.
2548     visibility = [
2549       ":*",
2550       "//chrome/android/modules/stack_unwinder/internal:*",
2551     ]
2552     sources = [
2553       "profiler/native_unwinder_android.cc",
2554       "profiler/native_unwinder_android.h",
2555     ]
2556
2557     public_deps = [
2558       ":base",
2559       "//third_party/libunwindstack",
2560     ]
2561   }
2562 }
2563
2564 source_set("base_stack_sampling_profiler_test_util") {
2565   testonly = true
2566   sources = [
2567     "profiler/stack_sampling_profiler_test_util.cc",
2568     "profiler/stack_sampling_profiler_test_util.h",
2569   ]
2570   deps = [
2571     ":base",
2572     "//base/test:test_support",
2573     "//testing/gtest",
2574   ]
2575   if (is_android) {
2576     deps += [ ":native_unwinder_android" ]
2577   }
2578 }
2579
2580 bundle_data("base_unittests_bundle_data") {
2581   testonly = true
2582   sources = [
2583     "//tools/metrics/histograms/enums.xml",
2584     "test/data/file_util/binary_file.bin",
2585     "test/data/file_util/binary_file_diff.bin",
2586     "test/data/file_util/binary_file_same.bin",
2587     "test/data/file_util/blank_line.txt",
2588     "test/data/file_util/blank_line_crlf.txt",
2589     "test/data/file_util/crlf.txt",
2590     "test/data/file_util/different.txt",
2591     "test/data/file_util/different_first.txt",
2592     "test/data/file_util/different_last.txt",
2593     "test/data/file_util/empty1.txt",
2594     "test/data/file_util/empty2.txt",
2595     "test/data/file_util/first1.txt",
2596     "test/data/file_util/first2.txt",
2597     "test/data/file_util/original.txt",
2598     "test/data/file_util/same.txt",
2599     "test/data/file_util/same_length.txt",
2600     "test/data/file_util/shortened.txt",
2601     "test/data/json/bom_feff.json",
2602     "test/data/serializer_nested_test.json",
2603     "test/data/serializer_test.json",
2604     "test/data/serializer_test_nowhitespace.json",
2605   ]
2606   outputs = [ "{{bundle_resources_dir}}/" +
2607               "{{source_root_relative_dir}}/{{source_file_part}}" ]
2608 }
2609
2610 if (is_ios || is_mac) {
2611   source_set("base_unittests_arc") {
2612     testonly = true
2613     sources = [ "mac/bind_objc_block_unittest_arc.mm" ]
2614     configs += [ "//build/config/compiler:enable_arc" ]
2615     deps = [
2616       ":base",
2617       "//testing/gtest",
2618     ]
2619   }
2620 }
2621
2622 if (is_fuchsia) {
2623   fidl_library("testfidl") {
2624     library_name = "base.fuchsia.testfidl"
2625
2626     sources = [ "fuchsia/test.fidl" ]
2627   }
2628
2629   source_set("test_interface_impl") {
2630     testonly = true
2631     sources = [
2632       "fuchsia/test_interface_impl.cc",
2633       "fuchsia/test_interface_impl.h",
2634     ]
2635     deps = [
2636       ":base",
2637       ":testfidl",
2638     ]
2639   }
2640 }
2641
2642 source_set("base_unittests_tasktraits") {
2643   testonly = true
2644   sources = [
2645     "task/test_task_traits_extension.cc",
2646     "task/test_task_traits_extension.h",
2647   ]
2648   deps = [ ":base" ]
2649 }
2650
2651 test("base_unittests") {
2652   sources = [
2653     "allocator/tcmalloc_unittest.cc",
2654     "at_exit_unittest.cc",
2655     "atomicops_unittest.cc",
2656     "auto_reset_unittest.cc",
2657     "barrier_closure_unittest.cc",
2658     "base64_unittest.cc",
2659     "base64url_unittest.cc",
2660     "big_endian_unittest.cc",
2661     "bind_unittest.cc",
2662     "bit_cast_unittest.cc",
2663     "bits_unittest.cc",
2664     "build_time_unittest.cc",
2665     "callback_helpers_unittest.cc",
2666     "callback_list_unittest.cc",
2667     "callback_unittest.cc",
2668     "cancelable_callback_unittest.cc",
2669     "check_unittest.cc",
2670     "command_line_unittest.cc",
2671     "component_export_unittest.cc",
2672     "containers/adapters_unittest.cc",
2673     "containers/buffer_iterator_unittest.cc",
2674     "containers/checked_iterators_unittest.cc",
2675     "containers/checked_range_unittest.cc",
2676     "containers/circular_deque_unittest.cc",
2677     "containers/flat_map_unittest.cc",
2678     "containers/flat_set_unittest.cc",
2679     "containers/flat_tree_unittest.cc",
2680     "containers/id_map_unittest.cc",
2681     "containers/intrusive_heap_unittest.cc",
2682     "containers/linked_list_unittest.cc",
2683     "containers/mru_cache_unittest.cc",
2684     "containers/small_map_unittest.cc",
2685     "containers/span_unittest.cc",
2686     "containers/stack_container_unittest.cc",
2687     "containers/unique_ptr_adapters_unittest.cc",
2688     "containers/vector_buffer_unittest.cc",
2689     "cpu_unittest.cc",
2690     "debug/activity_analyzer_unittest.cc",
2691     "debug/activity_tracker_unittest.cc",
2692     "debug/alias_unittest.cc",
2693     "debug/crash_logging_unittest.cc",
2694     "debug/debugger_unittest.cc",
2695     "debug/leak_tracker_unittest.cc",
2696     "debug/stack_trace_unittest.cc",
2697     "debug/task_trace_unittest.cc",
2698     "deferred_sequenced_task_runner_unittest.cc",
2699     "environment_unittest.cc",
2700     "feature_list_unittest.cc",
2701     "files/file_enumerator_unittest.cc",
2702     "files/file_path_unittest.cc",
2703     "files/file_path_watcher_unittest.cc",
2704     "files/file_proxy_unittest.cc",
2705     "files/file_unittest.cc",
2706     "files/file_util_unittest.cc",
2707     "files/important_file_writer_unittest.cc",
2708     "files/memory_mapped_file_unittest.cc",
2709     "files/scoped_temp_dir_unittest.cc",
2710     "gmock_unittest.cc",
2711     "guid_unittest.cc",
2712     "hash/hash_unittest.cc",
2713     "hash/legacy_hash_unittest.cc",
2714     "hash/md5_constexpr_unittest.cc",
2715     "hash/md5_unittest.cc",
2716     "hash/sha1_unittest.cc",
2717     "i18n/break_iterator_unittest.cc",
2718     "i18n/case_conversion_unittest.cc",
2719     "i18n/char_iterator_unittest.cc",
2720     "i18n/character_encoding_unittest.cc",
2721     "i18n/file_util_icu_unittest.cc",
2722     "i18n/icu_string_conversions_unittest.cc",
2723     "i18n/icu_util_unittest.cc",
2724     "i18n/message_formatter_unittest.cc",
2725     "i18n/number_formatting_unittest.cc",
2726     "i18n/rtl_unittest.cc",
2727     "i18n/streaming_utf8_validator_unittest.cc",
2728     "i18n/string_search_unittest.cc",
2729     "i18n/time_formatting_unittest.cc",
2730     "i18n/timezone_unittest.cc",
2731     "immediate_crash_unittest.cc",
2732     "json/json_parser_unittest.cc",
2733     "json/json_reader_unittest.cc",
2734     "json/json_value_converter_unittest.cc",
2735     "json/json_value_serializer_unittest.cc",
2736     "json/json_writer_unittest.cc",
2737     "json/string_escape_unittest.cc",
2738     "lazy_instance_unittest.cc",
2739     "location_unittest.cc",
2740     "logging_unittest.cc",
2741     "memory/aligned_memory_unittest.cc",
2742     "memory/checked_ptr_unittest.cc",
2743     "memory/discardable_memory_backing_field_trial_unittest.cc",
2744     "memory/discardable_shared_memory_unittest.cc",
2745     "memory/memory_pressure_listener_unittest.cc",
2746     "memory/memory_pressure_monitor_unittest.cc",
2747     "memory/platform_shared_memory_region_unittest.cc",
2748     "memory/ptr_util_unittest.cc",
2749     "memory/ref_counted_memory_unittest.cc",
2750     "memory/ref_counted_unittest.cc",
2751     "memory/shared_memory_hooks_unittest.cc",
2752     "memory/shared_memory_mapping_unittest.cc",
2753     "memory/shared_memory_region_unittest.cc",
2754     "memory/singleton_unittest.cc",
2755     "memory/weak_ptr_unittest.cc",
2756     "message_loop/message_pump_glib_unittest.cc",
2757     "message_loop/message_pump_unittest.cc",
2758     "message_loop/work_id_provider_unittest.cc",
2759     "metrics/bucket_ranges_unittest.cc",
2760     "metrics/crc32_unittest.cc",
2761     "metrics/field_trial_params_unittest.cc",
2762     "metrics/field_trial_unittest.cc",
2763     "metrics/histogram_base_unittest.cc",
2764     "metrics/histogram_delta_serialization_unittest.cc",
2765     "metrics/histogram_functions_unittest.cc",
2766     "metrics/histogram_macros_unittest.cc",
2767     "metrics/histogram_samples_unittest.cc",
2768     "metrics/histogram_snapshot_manager_unittest.cc",
2769     "metrics/histogram_unittest.cc",
2770     "metrics/metrics_hashes_unittest.cc",
2771     "metrics/persistent_histogram_allocator_unittest.cc",
2772     "metrics/persistent_histogram_storage_unittest.cc",
2773     "metrics/persistent_memory_allocator_unittest.cc",
2774     "metrics/persistent_sample_map_unittest.cc",
2775     "metrics/sample_map_unittest.cc",
2776     "metrics/sample_vector_unittest.cc",
2777     "metrics/single_sample_metrics_unittest.cc",
2778     "metrics/sparse_histogram_unittest.cc",
2779     "metrics/statistics_recorder_unittest.cc",
2780     "native_library_unittest.cc",
2781     "no_destructor_unittest.cc",
2782     "observer_list_threadsafe_unittest.cc",
2783     "observer_list_unittest.cc",
2784     "one_shot_event_unittest.cc",
2785     "optional_unittest.cc",
2786     "parameter_pack_unittest.cc",
2787     "path_service_unittest.cc",
2788     "pickle_unittest.cc",
2789     "power_monitor/power_monitor_device_source_unittest.cc",
2790     "power_monitor/power_monitor_unittest.cc",
2791     "process/environment_internal_unittest.cc",
2792     "process/memory_unittest.cc",
2793     "process/process_metrics_unittest.cc",
2794     "process/process_unittest.cc",
2795     "process/process_util_unittest.cc",
2796     "profiler/arm_cfi_table_unittest.cc",
2797     "profiler/metadata_recorder_unittest.cc",
2798     "profiler/module_cache_unittest.cc",
2799     "profiler/sample_metadata_unittest.cc",
2800     "profiler/stack_copier_suspend_unittest.cc",
2801     "profiler/stack_copier_unittest.cc",
2802     "profiler/stack_sampler_impl_unittest.cc",
2803     "profiler/stack_sampling_profiler_unittest.cc",
2804     "rand_util_unittest.cc",
2805     "run_loop_unittest.cc",
2806     "safe_numerics_unittest.cc",
2807     "sampling_heap_profiler/lock_free_address_hash_set_unittest.cc",
2808     "scoped_clear_last_error_unittest.cc",
2809     "scoped_generic_unittest.cc",
2810     "scoped_native_library_unittest.cc",
2811     "security_unittest.cc",
2812     "sequence_checker_unittest.cc",
2813     "sequence_token_unittest.cc",
2814     "sequenced_task_runner_unittest.cc",
2815     "stl_util_unittest.cc",
2816     "strings/char_traits_unittest.cc",
2817     "strings/no_trigraphs_unittest.cc",
2818     "strings/nullable_string16_unittest.cc",
2819     "strings/pattern_unittest.cc",
2820     "strings/safe_sprintf_unittest.cc",
2821     "strings/strcat_unittest.cc",
2822     "strings/string16_unittest.cc",
2823     "strings/string_number_conversions_unittest.cc",
2824     "strings/string_piece_unittest.cc",
2825     "strings/string_split_unittest.cc",
2826     "strings/string_tokenizer_unittest.cc",
2827     "strings/string_util_unittest.cc",
2828     "strings/stringize_macros_unittest.cc",
2829     "strings/stringprintf_unittest.cc",
2830     "strings/sys_string_conversions_unittest.cc",
2831     "strings/utf_offset_string_conversions_unittest.cc",
2832     "strings/utf_string_conversions_unittest.cc",
2833     "supports_user_data_unittest.cc",
2834     "sync_socket_unittest.cc",
2835     "synchronization/atomic_flag_unittest.cc",
2836     "synchronization/condition_variable_unittest.cc",
2837     "synchronization/lock_unittest.cc",
2838     "synchronization/waitable_event_unittest.cc",
2839     "synchronization/waitable_event_watcher_unittest.cc",
2840     "sys_byteorder_unittest.cc",
2841     "system/sys_info_unittest.cc",
2842     "system/system_monitor_unittest.cc",
2843     "task/cancelable_task_tracker_unittest.cc",
2844     "task/common/checked_lock_unittest.cc",
2845     "task/common/operations_controller_unittest.cc",
2846     "task/common/task_annotator_unittest.cc",
2847     "task/lazy_thread_pool_task_runner_unittest.cc",
2848     "task/post_job_unittest.cc",
2849     "task/post_task_unittest.cc",
2850     "task/scoped_set_task_priority_for_current_thread_unittest.cc",
2851     "task/sequence_manager/atomic_flag_set_unittest.cc",
2852     "task/sequence_manager/lazily_deallocated_deque_unittest.cc",
2853     "task/sequence_manager/sequence_manager_impl_unittest.cc",
2854     "task/sequence_manager/task_queue_selector_unittest.cc",
2855     "task/sequence_manager/task_queue_unittest.cc",
2856     "task/sequence_manager/test/mock_time_message_pump_unittest.cc",
2857     "task/sequence_manager/thread_controller_power_monitor_unittest.cc",
2858     "task/sequence_manager/thread_controller_with_message_pump_impl_unittest.cc",
2859     "task/sequence_manager/time_domain_unittest.cc",
2860     "task/sequence_manager/work_deduplicator_unittest.cc",
2861     "task/sequence_manager/work_queue_sets_unittest.cc",
2862     "task/sequence_manager/work_queue_unittest.cc",
2863     "task/single_thread_task_executor_unittest.cc",
2864     "task/task_traits_extension_unittest.cc",
2865     "task/task_traits_unittest.cc",
2866     "task/thread_pool/can_run_policy_test.h",
2867     "task/thread_pool/delayed_task_manager_unittest.cc",
2868     "task/thread_pool/environment_config_unittest.cc",
2869     "task/thread_pool/job_task_source_unittest.cc",
2870     "task/thread_pool/pooled_single_thread_task_runner_manager_unittest.cc",
2871     "task/thread_pool/priority_queue_unittest.cc",
2872     "task/thread_pool/sequence_sort_key_unittest.cc",
2873     "task/thread_pool/sequence_unittest.cc",
2874     "task/thread_pool/service_thread_unittest.cc",
2875     "task/thread_pool/task_tracker_unittest.cc",
2876     "task/thread_pool/test_task_factory.cc",
2877     "task/thread_pool/test_task_factory.h",
2878     "task/thread_pool/test_utils.cc",
2879     "task/thread_pool/test_utils.h",
2880     "task/thread_pool/thread_group_impl_unittest.cc",
2881     "task/thread_pool/thread_group_unittest.cc",
2882     "task/thread_pool/thread_pool_impl_unittest.cc",
2883     "task/thread_pool/tracked_ref_unittest.cc",
2884     "task/thread_pool/worker_thread_stack_unittest.cc",
2885     "task/thread_pool/worker_thread_unittest.cc",
2886     "task/thread_pool_unittest.cc",
2887     "task_runner_unittest.cc",
2888     "task_runner_util_unittest.cc",
2889     "template_util_unittest.cc",
2890     "test/gmock_callback_support_unittest.cc",
2891     "test/gmock_move_support_unittest.cc",
2892     "test/gtest_links_unittest.cc",
2893     "test/gtest_xml_unittest_result_printer_unittest.cc",
2894     "test/launcher/test_launcher_unittest.cc",
2895     "test/launcher/test_results_tracker_unittest.cc",
2896     "test/metrics/histogram_enum_reader_unittest.cc",
2897     "test/metrics/histogram_tester_unittest.cc",
2898     "test/metrics/user_action_tester_unittest.cc",
2899     "test/mock_callback_unittest.cc",
2900     "test/scoped_feature_list_unittest.cc",
2901     "test/scoped_mock_clock_override_unittest.cc",
2902     "test/scoped_mock_time_message_loop_task_runner_unittest.cc",
2903     "test/scoped_run_loop_timeout_unittest.cc",
2904     "test/task_environment_unittest.cc",
2905     "test/test_mock_time_task_runner_unittest.cc",
2906     "test/test_pending_task_unittest.cc",
2907     "test/test_waitable_event_unittest.cc",
2908     "thread_annotations_unittest.cc",
2909     "threading/hang_watcher_unittest.cc",
2910     "threading/platform_thread_unittest.cc",
2911     "threading/post_task_and_reply_impl_unittest.cc",
2912     "threading/scoped_blocking_call_unittest.cc",
2913     "threading/scoped_thread_priority_unittest.cc",
2914     "threading/sequence_bound_unittest.cc",
2915     "threading/sequence_local_storage_map_unittest.cc",
2916     "threading/sequence_local_storage_slot_unittest.cc",
2917     "threading/sequenced_task_runner_handle_unittest.cc",
2918     "threading/simple_thread_unittest.cc",
2919     "threading/thread_checker_unittest.cc",
2920     "threading/thread_collision_warner_unittest.cc",
2921     "threading/thread_id_name_manager_unittest.cc",
2922     "threading/thread_local_storage_unittest.cc",
2923     "threading/thread_local_unittest.cc",
2924     "threading/thread_restrictions_unittest.cc",
2925     "threading/thread_task_runner_handle_unittest.cc",
2926     "threading/thread_unittest.cc",
2927     "threading/watchdog_unittest.cc",
2928     "time/pr_time_unittest.cc",
2929     "time/time_unittest.cc",
2930     "timer/elapsed_timer_unittest.cc",
2931     "timer/hi_res_timer_manager_unittest.cc",
2932     "timer/lap_timer_unittest.cc",
2933     "timer/mock_timer_unittest.cc",
2934     "timer/timer_unittest.cc",
2935     "token_unittest.cc",
2936     "tools_sanity_unittest.cc",
2937     "traits_bag_unittest.cc",
2938     "tuple_unittest.cc",
2939     "unguessable_token_unittest.cc",
2940     "value_iterators_unittest.cc",
2941     "values_unittest.cc",
2942     "version_unittest.cc",
2943     "vlog_unittest.cc",
2944   ]
2945
2946   defines = []
2947
2948   if (use_efl) {
2949     configs += external_base_configs
2950   }
2951
2952   deps = [
2953     ":base",
2954     ":base_stack_sampling_profiler_test_util",
2955     ":base_unittests_tasktraits",
2956     ":i18n",
2957     ":sanitizer_buildflags",
2958     "//base/allocator:buildflags",
2959     "//base/test:native_library_test_utils",
2960     "//base/test:run_all_base_unittests",
2961     "//base/test:test_support",
2962     "//base/third_party/dynamic_annotations",
2963     "//testing/gmock",
2964     "//testing/gtest",
2965     "//third_party/icu",
2966   ]
2967
2968   data_deps = [
2969     "//base/test:immediate_crash_test_helper",
2970     "//base/test:test_child_process",
2971     "//base/test:test_shared_library",
2972   ]
2973
2974   if (is_ios || is_mac) {
2975     deps += [ ":base_unittests_arc" ]
2976   }
2977
2978   public_deps = [ ":base_unittests_bundle_data" ]
2979
2980   data = [
2981     "test/data/",
2982     "//tools/metrics/histograms/enums.xml",
2983   ]
2984
2985   if (is_win) {
2986     sources += [
2987       "debug/gdi_debug_util_win_unittest.cc",
2988       "file_version_info_win_unittest.cc",
2989       "files/important_file_writer_cleaner_unittest.cc",
2990       "process/launch_unittest_win.cc",
2991       "test/test_reg_util_win_unittest.cc",
2992       "threading/platform_thread_win_unittest.cc",
2993       "time/time_win_unittest.cc",
2994       "win/async_operation_unittest.cc",
2995       "win/com_init_check_hook_unittest.cc",
2996       "win/com_init_util_unittest.cc",
2997       "win/core_winrt_util_unittest.cc",
2998       "win/dispatch_stub.cc",
2999       "win/dispatch_stub.h",
3000       "win/dllmain.cc",
3001       "win/embedded_i18n/language_selector_unittest.cc",
3002       "win/enum_variant_unittest.cc",
3003       "win/event_trace_consumer_unittest.cc",
3004       "win/event_trace_controller_unittest.cc",
3005       "win/event_trace_provider_unittest.cc",
3006       "win/hstring_compare_unittest.cc",
3007       "win/hstring_reference_unittest.cc",
3008       "win/i18n_unittest.cc",
3009       "win/map_unittest.cc",
3010       "win/message_window_unittest.cc",
3011       "win/object_watcher_unittest.cc",
3012       "win/pe_image_unittest.cc",
3013       "win/reference_unittest.cc",
3014       "win/registry_unittest.cc",
3015       "win/scoped_bstr_unittest.cc",
3016       "win/scoped_handle_unittest.cc",
3017       "win/scoped_hstring_unittest.cc",
3018       "win/scoped_process_information_unittest.cc",
3019       "win/scoped_safearray_unittest.cc",
3020       "win/scoped_variant_unittest.cc",
3021       "win/scoped_winrt_initializer_unittest.cc",
3022       "win/shortcut_unittest.cc",
3023       "win/startup_information_unittest.cc",
3024       "win/variant_util_unittest.cc",
3025       "win/vector_unittest.cc",
3026       "win/win_includes_unittest.cc",
3027       "win/win_util_unittest.cc",
3028       "win/windows_version_unittest.cc",
3029       "win/winrt_storage_util_unittest.cc",
3030       "win/wmi_unittest.cc",
3031       "win/wrapped_window_proc_unittest.cc",
3032     ]
3033   }
3034
3035   if (is_linux) {
3036     sources += [ "debug/proc_maps_linux_unittest.cc" ]
3037   }
3038
3039   if (is_mac) {
3040     sources += [
3041       "allocator/allocator_interception_mac_unittest.mm",
3042       "allocator/malloc_zone_functions_mac_unittest.cc",
3043       "enterprise_util_mac_unittest.mm",
3044       "mac/bind_objc_block_unittest.mm",
3045       "mac/call_with_eh_frame_unittest.mm",
3046       "mac/dispatch_source_mach_unittest.cc",
3047       "mac/foundation_util_unittest.mm",
3048       "mac/mac_util_unittest.mm",
3049       "mac/mach_port_rendezvous_unittest.cc",
3050       "mac/objc_release_properties_unittest.mm",
3051       "mac/scoped_mach_vm_unittest.cc",
3052       "mac/scoped_nsobject_unittest.mm",
3053       "mac/scoped_objc_class_swizzler_unittest.mm",
3054       "mac/scoped_sending_event_unittest.mm",
3055       "message_loop/message_pump_mac_unittest.mm",
3056       "power_monitor/thermal_state_observer_mac_unittest.mm",
3057       "process/memory_unittest_mac.h",
3058       "process/memory_unittest_mac.mm",
3059       "strings/sys_string_conversions_mac_unittest.mm",
3060     ]
3061   }
3062
3063   if (is_posix) {
3064     sources += [
3065       "files/dir_reader_posix_unittest.cc",
3066       "files/file_descriptor_watcher_posix_unittest.cc",
3067       "memory/madv_free_discardable_memory_allocator_posix_unittest.cc",
3068       "memory/madv_free_discardable_memory_posix_unittest.cc",
3069       "message_loop/fd_watch_controller_posix_unittest.cc",
3070       "posix/file_descriptor_shuffle_unittest.cc",
3071       "posix/unix_domain_socket_unittest.cc",
3072       "task/thread_pool/task_tracker_posix_unittest.cc",
3073     ]
3074     if (!is_nacl && !is_mac && !is_ios) {
3075       sources += [ "profiler/stack_copier_signal_unittest.cc" ]
3076     }
3077   }
3078
3079   # Allow more direct string conversions on platforms with native utf8
3080   # strings
3081   if (is_mac || is_ios || is_chromeos || is_chromecast || is_fuchsia) {
3082     defines += [ "SYSTEM_NATIVE_UTF8" ]
3083   }
3084
3085   if (is_android) {
3086     # Add unwind tables in base_unittests_apk test apk. The unwind tables are
3087     # generated from debug info in the binary. Removing "default_symbols" and
3088     # adding symbols config removes the "strip_debug" config that strips the
3089     # debug info, on base unittests apk.
3090     if (can_unwind_with_cfi_table || enable_arm_cfi_table) {
3091       configs -= [ "//build/config/compiler:default_symbols" ]
3092       if (symbol_level == 2) {
3093         configs += [ "//build/config/compiler:symbols" ]
3094       } else {
3095         configs += [ "//build/config/compiler:minimal_symbols" ]
3096       }
3097       add_unwind_tables_in_apk = true
3098     }
3099     if (can_unwind_with_cfi_table) {
3100       sources += [ "trace_event/cfi_backtrace_android_unittest.cc" ]
3101     }
3102     if (current_cpu == "arm") {
3103       sources += [ "profiler/chrome_unwinder_android_unittest.cc" ]
3104     }
3105     if (!exclude_unwind_tables &&
3106         (current_cpu == "arm" || current_cpu == "arm64")) {
3107       sources += [ "profiler/native_unwinder_android_unittest.cc" ]
3108       deps += [
3109         ":base_profiler_test_support_java",
3110         ":base_profiler_test_support_jni_headers",
3111         ":base_profiler_test_support_library",
3112         ":native_unwinder_android",
3113       ]
3114     }
3115
3116     sources += [
3117       "android/android_image_reader_compat_unittest.cc",
3118       "android/application_status_listener_unittest.cc",
3119       "android/child_process_unittest.cc",
3120       "android/content_uri_utils_unittest.cc",
3121       "android/java_handler_thread_unittest.cc",
3122       "android/jni_android_unittest.cc",
3123       "android/jni_array_unittest.cc",
3124       "android/jni_string_unittest.cc",
3125       "android/library_loader/library_prefetcher_unittest.cc",
3126       "android/path_utils_unittest.cc",
3127       "android/reached_addresses_bitset_unittest.cc",
3128       "android/scoped_java_ref_unittest.cc",
3129       "android/sys_utils_unittest.cc",
3130       "android/unguessable_token_android_unittest.cc",
3131       "os_compat_android_unittest.cc",
3132     ]
3133
3134     # Android does not use test_launcher to run gtests.
3135     sources -= [
3136       "process/process_unittest.cc",
3137       "process/process_util_unittest.cc",
3138       "test/gtest_links_unittest.cc",
3139       "test/gtest_xml_unittest_result_printer_unittest.cc",
3140       "test/launcher/test_launcher_unittest.cc",
3141       "test/launcher/test_results_tracker_unittest.cc",
3142     ]
3143     deps += [
3144       ":base_java",
3145       ":base_java_unittest_support",
3146       "//base/test:test_support_java",
3147     ]
3148   }
3149
3150   if (icu_use_data_file) {
3151     if (is_android) {
3152       deps += [ "//third_party/icu:icu_extra_assets" ]
3153     } else {
3154       deps += [ "//third_party/icu:extra_icudata" ]
3155       data += [ "$root_out_dir/icudtl_extra.dat" ]
3156     }
3157   }
3158
3159   if (is_ios) {
3160     sources += [
3161       "ios/crb_protocol_observers_unittest.mm",
3162       "ios/device_util_unittest.mm",
3163       "ios/weak_nsobject_unittest.mm",
3164       "message_loop/message_pump_io_ios_unittest.cc",
3165     ]
3166
3167     # ios does not use test_launcher to run gtests.
3168     sources -= [
3169       "files/file_path_watcher_unittest.cc",
3170       "memory/discardable_shared_memory_unittest.cc",
3171       "process/memory_unittest.cc",
3172       "process/process_unittest.cc",
3173       "process/process_util_unittest.cc",
3174       "sync_socket_unittest.cc",
3175       "synchronization/waitable_event_watcher_unittest.cc",
3176       "test/gtest_links_unittest.cc",
3177       "test/gtest_xml_unittest_result_printer_unittest.cc",
3178       "test/launcher/test_launcher_unittest.cc",
3179       "test/launcher/test_results_tracker_unittest.cc",
3180     ]
3181
3182     sources += [
3183       # Pull in specific Mac files for iOS.
3184       "mac/bind_objc_block_unittest.mm",
3185       "mac/foundation_util_unittest.mm",
3186       "mac/objc_release_properties_unittest.mm",
3187       "mac/scoped_nsobject_unittest.mm",
3188       "strings/sys_string_conversions_mac_unittest.mm",
3189     ]
3190
3191     if (use_allocator_shim) {
3192       sources += [
3193         "allocator/allocator_interception_mac_unittest.mm",
3194         "allocator/malloc_zone_functions_mac_unittest.cc",
3195       ]
3196     }
3197   }
3198
3199   if (use_partition_alloc) {
3200     sources += [
3201       "allocator/partition_allocator/address_pool_manager_unittest.cc",
3202       "allocator/partition_allocator/address_space_randomization_unittest.cc",
3203       "allocator/partition_allocator/memory_reclaimer_unittest.cc",
3204       "allocator/partition_allocator/page_allocator_unittest.cc",
3205       "allocator/partition_allocator/partition_alloc_unittest.cc",
3206       "allocator/partition_allocator/spin_lock_unittest.cc",
3207     ]
3208   }
3209
3210   if (is_mac) {
3211     sources += [ "message_loop/message_pump_kqueue_unittest.cc" ]
3212     libs = [
3213       "CoreFoundation.framework",
3214       "Foundation.framework",
3215     ]
3216     if (current_cpu == "x64") {
3217       deps += [ ":base_profiler_test_support_library" ]
3218     }
3219   }
3220
3221   if (is_fuchsia || is_linux) {
3222     sources += [ "debug/elf_reader_unittest.cc" ]
3223
3224     deps += [ "//base/test:malloc_wrapper" ]
3225     defines += [
3226       # This library is used by ElfReaderTest to test reading elf files.
3227       "MALLOC_WRAPPER_LIB=\"${shlib_prefix}malloc_wrapper${shlib_extension}\"",
3228     ]
3229
3230     if (!is_component_build) {
3231       # Set rpath to find libmalloc_wrapper.so even in a non-component build.
3232       configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
3233     }
3234   }
3235
3236   if (is_desktop_linux) {
3237     sources += [
3238       "linux_util_unittest.cc",
3239       "nix/xdg_util_unittest.cc",
3240     ]
3241   }
3242
3243   if (!use_glib) {
3244     sources -= [ "message_loop/message_pump_glib_unittest.cc" ]
3245   }
3246
3247   if (use_libevent) {
3248     sources += [ "message_loop/message_pump_libevent_unittest.cc" ]
3249     deps += [ "//base/third_party/libevent" ]
3250   }
3251
3252   if (is_fuchsia) {
3253     sources += [
3254       "files/dir_reader_posix_unittest.cc",
3255       "files/file_descriptor_watcher_posix_unittest.cc",
3256       "fuchsia/file_utils_unittest.cc",
3257       "fuchsia/filtered_service_directory_unittest.cc",
3258       "fuchsia/intl_profile_watcher_unittest.cc",
3259       "fuchsia/scoped_service_binding_unittest.cc",
3260       "fuchsia/scoped_service_publisher_unittest.cc",
3261       "fuchsia/service_directory_test_base.cc",
3262       "fuchsia/service_directory_test_base.h",
3263       "fuchsia/service_provider_impl_unittest.cc",
3264       "fuchsia/test_component_context_for_process_unittest.cc",
3265       "fuchsia/time_zone_data_unittest.cc",
3266       "message_loop/fd_watch_controller_posix_unittest.cc",
3267       "posix/file_descriptor_shuffle_unittest.cc",
3268       "task/thread_pool/task_tracker_posix_unittest.cc",
3269     ]
3270
3271     # TODO(crbug.com/851641): FilePatchWatcherImpl is not implemented.
3272     sources -= [ "files/file_path_watcher_unittest.cc" ]
3273
3274     deps += [
3275       ":test_interface_impl",
3276       ":testfidl",
3277       "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.intl",
3278       "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.logger",
3279       "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.sys",
3280       "//third_party/fuchsia-sdk/sdk/pkg/async",
3281       "//third_party/fuchsia-sdk/sdk/pkg/async-default",
3282       "//third_party/fuchsia-sdk/sdk/pkg/fdio",
3283       "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
3284     ]
3285
3286     manifest = "//build/config/fuchsia/tests.cmx"
3287   }
3288
3289   if (!is_fuchsia && !is_ios) {
3290     sources += [ "files/file_locking_unittest.cc" ]
3291   }
3292
3293   if (is_android) {
3294     deps += [ "//testing/android/native_test:native_test_native_code" ]
3295     sources += [
3296       "debug/elf_reader_unittest.cc",
3297       "debug/proc_maps_linux_unittest.cc",
3298     ]
3299   }
3300
3301   if (is_win) {
3302     deps += [ "//base:scoped_handle_test_dll" ]
3303     if (current_cpu == "x64" || current_cpu == "arm64") {
3304       sources += [ "profiler/win32_stack_frame_unwinder_unittest.cc" ]
3305       deps += [ ":base_profiler_test_support_library" ]
3306     }
3307     sources += [ "files/os_validation_win_unittest.cc" ]
3308   }
3309
3310   if (use_allocator_shim) {
3311     sources += [
3312       "allocator/allocator_shim_unittest.cc",
3313       "sampling_heap_profiler/sampling_heap_profiler_unittest.cc",
3314     ]
3315
3316     if (is_win) {
3317       sources += [ "allocator/winheap_stubs_win_unittest.cc" ]
3318     }
3319   }
3320
3321   if (enable_base_tracing) {
3322     sources += [
3323       "test/trace_event_analyzer_unittest.cc",
3324       "trace_event/blame_context_unittest.cc",
3325       "trace_event/event_name_filter_unittest.cc",
3326       "trace_event/heap_profiler_allocation_context_tracker_unittest.cc",
3327       "trace_event/memory_allocator_dump_unittest.cc",
3328       "trace_event/memory_dump_manager_unittest.cc",
3329       "trace_event/memory_dump_scheduler_unittest.cc",
3330       "trace_event/memory_infra_background_allowlist_unittest.cc",
3331       "trace_event/memory_usage_estimator_unittest.cc",
3332       "trace_event/process_memory_dump_unittest.cc",
3333       "trace_event/trace_arguments_unittest.cc",
3334       "trace_event/trace_category_unittest.cc",
3335       "trace_event/trace_config_unittest.cc",
3336       "trace_event/trace_event_filter_test_utils.cc",
3337       "trace_event/trace_event_filter_test_utils.h",
3338       "trace_event/trace_event_unittest.cc",
3339       "trace_event/traced_value_unittest.cc",
3340       "trace_event/typed_macros_unittest.cc",
3341     ]
3342
3343     if (is_android) {
3344       sources += [
3345         "trace_event/cpufreq_monitor_android_unittest.cc",
3346         "trace_event/java_heap_dump_provider_android_unittest.cc",
3347         "trace_event/trace_event_android_unittest.cc",
3348       ]
3349     }
3350   }
3351
3352   # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
3353   configs += [
3354     "//build/config/compiler:no_size_t_to_int_warning",
3355     "//build/config/compiler:noshadowing",
3356   ]
3357 }
3358
3359 action("build_date") {
3360   script = "//build/write_build_date_header.py"
3361
3362   outputs = [ "$target_gen_dir/generated_build_date.h" ]
3363
3364   args =
3365       [ rebase_path("$target_gen_dir/generated_build_date.h", root_build_dir) ]
3366
3367   # FIXME: ewk_bringup definition should be removed.
3368   if (ewk_bringup) {
3369     args += [ "1539234000" ]
3370   } else {
3371     args += [ "build_timestamp" ]
3372   }
3373 }
3374
3375 if (enable_nocompile_tests) {
3376   nocompile_test("base_nocompile_tests") {
3377     sources = [
3378       "bind_unittest.nc",
3379       "callback_list_unittest.nc",
3380       "callback_unittest.nc",
3381       "containers/buffer_iterator_unittest.nc",
3382       "containers/checked_iterators_unittest.nc",
3383       "containers/span_unittest.nc",
3384       "memory/checked_ptr_unittest.nc",
3385       "memory/ref_counted_unittest.nc",
3386       "memory/weak_ptr_unittest.nc",
3387       "metrics/field_trial_params_unittest.nc",
3388       "metrics/histogram_unittest.nc",
3389       "observer_list_unittest.nc",
3390       "optional_unittest.nc",
3391       "sequence_checker_unittest.nc",
3392       "strings/string16_unittest.nc",
3393       "task/task_traits_extension_unittest.nc",
3394       "task/task_traits_unittest.nc",
3395       "thread_annotations_unittest.nc",
3396       "traits_bag_unittest.nc",
3397     ]
3398
3399     deps = [
3400       ":base",
3401       ":base_unittests_tasktraits",
3402       "//base/test:run_all_unittests",
3403       "//testing/gtest",
3404     ]
3405   }
3406 }
3407
3408 if (is_android) {
3409   generate_jni("base_jni_headers") {
3410     sources = [
3411       "android/java/src/org/chromium/base/ApkAssets.java",
3412       "android/java/src/org/chromium/base/ApplicationStatus.java",
3413       "android/java/src/org/chromium/base/BuildInfo.java",
3414       "android/java/src/org/chromium/base/BundleUtils.java",
3415       "android/java/src/org/chromium/base/Callback.java",
3416       "android/java/src/org/chromium/base/CommandLine.java",
3417       "android/java/src/org/chromium/base/ContentUriUtils.java",
3418       "android/java/src/org/chromium/base/CpuFeatures.java",
3419       "android/java/src/org/chromium/base/EarlyTraceEvent.java",
3420       "android/java/src/org/chromium/base/EventLog.java",
3421       "android/java/src/org/chromium/base/FeatureList.java",
3422       "android/java/src/org/chromium/base/FieldTrialList.java",
3423       "android/java/src/org/chromium/base/ImportantFileWriterAndroid.java",
3424       "android/java/src/org/chromium/base/IntStringCallback.java",
3425       "android/java/src/org/chromium/base/JNIUtils.java",
3426       "android/java/src/org/chromium/base/JavaExceptionReporter.java",
3427       "android/java/src/org/chromium/base/JavaHandlerThread.java",
3428       "android/java/src/org/chromium/base/LocaleUtils.java",
3429       "android/java/src/org/chromium/base/MemoryPressureListener.java",
3430       "android/java/src/org/chromium/base/PathService.java",
3431       "android/java/src/org/chromium/base/PathUtils.java",
3432       "android/java/src/org/chromium/base/PowerMonitor.java",
3433       "android/java/src/org/chromium/base/SysUtils.java",
3434       "android/java/src/org/chromium/base/ThreadUtils.java",
3435       "android/java/src/org/chromium/base/TimeUtils.java",
3436       "android/java/src/org/chromium/base/TimezoneUtils.java",
3437       "android/java/src/org/chromium/base/TraceEvent.java",
3438       "android/java/src/org/chromium/base/UnguessableToken.java",
3439       "android/java/src/org/chromium/base/library_loader/LibraryLoader.java",
3440       "android/java/src/org/chromium/base/library_loader/LibraryPrefetcher.java",
3441       "android/java/src/org/chromium/base/memory/JavaHeapDumpGenerator.java",
3442       "android/java/src/org/chromium/base/metrics/NativeUmaRecorder.java",
3443       "android/java/src/org/chromium/base/metrics/RecordHistogram.java",
3444       "android/java/src/org/chromium/base/metrics/RecordUserAction.java",
3445       "android/java/src/org/chromium/base/metrics/StatisticsRecorderAndroid.java",
3446       "android/java/src/org/chromium/base/process_launcher/ChildProcessService.java",
3447       "android/java/src/org/chromium/base/task/PostTask.java",
3448       "android/java/src/org/chromium/base/task/TaskRunnerImpl.java",
3449     ]
3450
3451     public_deps = [ ":android_runtime_jni_headers" ]
3452   }
3453
3454   generate_jar_jni("android_runtime_jni_headers") {
3455     classes = [
3456       "java/lang/Runnable.class",
3457       "java/lang/Runtime.class",
3458     ]
3459   }
3460
3461   java_library("jni_java") {
3462     supports_android = true
3463     sources = [
3464       "android/java/src/org/chromium/base/JniException.java",
3465       "android/java/src/org/chromium/base/JniStaticTestMocker.java",
3466       "android/java/src/org/chromium/base/NativeLibraryLoadedStatus.java",
3467       "android/java/src/org/chromium/base/annotations/NativeMethods.java",
3468     ]
3469     srcjar_deps = [ ":base_build_config_gen" ]
3470     jar_excluded_patterns = [ "*/BuildConfig.class" ]
3471   }
3472
3473   android_library("base_java") {
3474     srcjar_deps = [
3475       ":base_android_java_enums_srcjar",
3476       ":base_build_config_gen",
3477       ":base_java_aidl",
3478       ":base_native_libraries_gen",
3479     ]
3480
3481     deps = [
3482       ":jni_java",
3483       "//third_party/android_deps:android_support_v4_java",
3484       "//third_party/android_deps:androidx_annotation_annotation_java",
3485       "//third_party/android_deps:androidx_collection_collection_java",
3486       "//third_party/android_deps:androidx_core_core_java",
3487       "//third_party/android_deps:androidx_multidex_multidex_java",
3488       "//third_party/android_deps:com_google_code_findbugs_jsr305_java",
3489     ]
3490
3491     sources = [
3492       "android/java/src/org/chromium/base/ActivityState.java",
3493       "android/java/src/org/chromium/base/ApiCompatibilityUtils.java",
3494       "android/java/src/org/chromium/base/ApkAssets.java",
3495       "android/java/src/org/chromium/base/ApplicationStatus.java",
3496       "android/java/src/org/chromium/base/BaseSwitches.java",
3497       "android/java/src/org/chromium/base/BuildInfo.java",
3498       "android/java/src/org/chromium/base/BundleUtils.java",
3499       "android/java/src/org/chromium/base/Callback.java",
3500       "android/java/src/org/chromium/base/CallbackController.java",
3501       "android/java/src/org/chromium/base/CollectionUtil.java",
3502       "android/java/src/org/chromium/base/CommandLine.java",
3503       "android/java/src/org/chromium/base/CommandLineInitUtil.java",
3504       "android/java/src/org/chromium/base/Consumer.java",
3505       "android/java/src/org/chromium/base/ContentUriUtils.java",
3506       "android/java/src/org/chromium/base/ContextUtils.java",
3507       "android/java/src/org/chromium/base/CpuFeatures.java",
3508       "android/java/src/org/chromium/base/DiscardableReferencePool.java",
3509       "android/java/src/org/chromium/base/EarlyTraceEvent.java",
3510       "android/java/src/org/chromium/base/EventLog.java",
3511       "android/java/src/org/chromium/base/FeatureList.java",
3512       "android/java/src/org/chromium/base/FieldTrialList.java",
3513       "android/java/src/org/chromium/base/FileUtils.java",
3514       "android/java/src/org/chromium/base/Function.java",
3515       "android/java/src/org/chromium/base/ImportantFileWriterAndroid.java",
3516       "android/java/src/org/chromium/base/IntStringCallback.java",
3517       "android/java/src/org/chromium/base/IntentUtils.java",
3518       "android/java/src/org/chromium/base/JNIUtils.java",
3519       "android/java/src/org/chromium/base/JavaExceptionReporter.java",
3520       "android/java/src/org/chromium/base/JavaHandlerThread.java",
3521       "android/java/src/org/chromium/base/LifetimeAssert.java",
3522       "android/java/src/org/chromium/base/LocaleUtils.java",
3523       "android/java/src/org/chromium/base/Log.java",
3524       "android/java/src/org/chromium/base/MathUtils.java",
3525       "android/java/src/org/chromium/base/MemoryPressureListener.java",
3526       "android/java/src/org/chromium/base/NonThreadSafe.java",
3527       "android/java/src/org/chromium/base/ObserverList.java",
3528       "android/java/src/org/chromium/base/PackageManagerUtils.java",
3529       "android/java/src/org/chromium/base/PackageUtils.java",
3530       "android/java/src/org/chromium/base/PathService.java",
3531       "android/java/src/org/chromium/base/PathUtils.java",
3532       "android/java/src/org/chromium/base/PiiElider.java",
3533       "android/java/src/org/chromium/base/PowerMonitor.java",
3534       "android/java/src/org/chromium/base/Promise.java",
3535       "android/java/src/org/chromium/base/SecureRandomInitializer.java",
3536       "android/java/src/org/chromium/base/StreamUtil.java",
3537       "android/java/src/org/chromium/base/StrictModeContext.java",
3538       "android/java/src/org/chromium/base/SysUtils.java",
3539       "android/java/src/org/chromium/base/ThreadUtils.java",
3540       "android/java/src/org/chromium/base/TimeUtils.java",
3541       "android/java/src/org/chromium/base/TimezoneUtils.java",
3542       "android/java/src/org/chromium/base/TraceEvent.java",
3543       "android/java/src/org/chromium/base/UnguessableToken.java",
3544       "android/java/src/org/chromium/base/UnownedUserData.java",
3545       "android/java/src/org/chromium/base/UnownedUserDataHost.java",
3546       "android/java/src/org/chromium/base/UnownedUserDataKey.java",
3547       "android/java/src/org/chromium/base/UserData.java",
3548       "android/java/src/org/chromium/base/UserDataHost.java",
3549       "android/java/src/org/chromium/base/annotations/AccessedByNative.java",
3550       "android/java/src/org/chromium/base/annotations/CalledByNative.java",
3551       "android/java/src/org/chromium/base/annotations/CalledByNativeJavaTest.java",
3552       "android/java/src/org/chromium/base/annotations/CalledByNativeUnchecked.java",
3553       "android/java/src/org/chromium/base/annotations/CheckDiscard.java",
3554       "android/java/src/org/chromium/base/annotations/DisabledCalledByNativeJavaTest.java",
3555       "android/java/src/org/chromium/base/annotations/DoNotInline.java",
3556       "android/java/src/org/chromium/base/annotations/JNIAdditionalImport.java",
3557       "android/java/src/org/chromium/base/annotations/JNINamespace.java",
3558       "android/java/src/org/chromium/base/annotations/JniIgnoreNatives.java",
3559       "android/java/src/org/chromium/base/annotations/MainDex.java",
3560       "android/java/src/org/chromium/base/annotations/NativeClassQualifiedName.java",
3561       "android/java/src/org/chromium/base/annotations/NativeJavaTestFeatures.java",
3562       "android/java/src/org/chromium/base/annotations/RemovableInRelease.java",
3563       "android/java/src/org/chromium/base/annotations/UsedByReflection.java",
3564       "android/java/src/org/chromium/base/annotations/VerifiesOnLollipop.java",
3565       "android/java/src/org/chromium/base/annotations/VerifiesOnLollipopMR1.java",
3566       "android/java/src/org/chromium/base/annotations/VerifiesOnM.java",
3567       "android/java/src/org/chromium/base/annotations/VerifiesOnN.java",
3568       "android/java/src/org/chromium/base/annotations/VerifiesOnNMR1.java",
3569       "android/java/src/org/chromium/base/annotations/VerifiesOnO.java",
3570       "android/java/src/org/chromium/base/annotations/VerifiesOnOMR1.java",
3571       "android/java/src/org/chromium/base/annotations/VerifiesOnP.java",
3572       "android/java/src/org/chromium/base/annotations/VerifiesOnQ.java",
3573       "android/java/src/org/chromium/base/compat/ApiHelperForM.java",
3574       "android/java/src/org/chromium/base/compat/ApiHelperForN.java",
3575       "android/java/src/org/chromium/base/compat/ApiHelperForO.java",
3576       "android/java/src/org/chromium/base/compat/ApiHelperForOMR1.java",
3577       "android/java/src/org/chromium/base/compat/ApiHelperForP.java",
3578       "android/java/src/org/chromium/base/compat/ApiHelperForQ.java",
3579       "android/java/src/org/chromium/base/library_loader/LegacyLinker.java",
3580       "android/java/src/org/chromium/base/library_loader/LibraryLoader.java",
3581       "android/java/src/org/chromium/base/library_loader/LibraryPrefetcher.java",
3582       "android/java/src/org/chromium/base/library_loader/Linker.java",
3583       "android/java/src/org/chromium/base/library_loader/LoaderErrors.java",
3584       "android/java/src/org/chromium/base/library_loader/ModernLinker.java",
3585       "android/java/src/org/chromium/base/library_loader/NativeLibraryPreloader.java",
3586       "android/java/src/org/chromium/base/library_loader/ProcessInitException.java",
3587       "android/java/src/org/chromium/base/memory/JavaHeapDumpGenerator.java",
3588       "android/java/src/org/chromium/base/memory/MemoryPressureCallback.java",
3589       "android/java/src/org/chromium/base/memory/MemoryPressureMonitor.java",
3590       "android/java/src/org/chromium/base/memory/MemoryPressureUma.java",
3591       "android/java/src/org/chromium/base/metrics/CachingUmaRecorder.java",
3592       "android/java/src/org/chromium/base/metrics/NativeUmaRecorder.java",
3593       "android/java/src/org/chromium/base/metrics/NoopUmaRecorder.java",
3594       "android/java/src/org/chromium/base/metrics/RecordHistogram.java",
3595       "android/java/src/org/chromium/base/metrics/RecordUserAction.java",
3596       "android/java/src/org/chromium/base/metrics/ScopedSysTraceEvent.java",
3597       "android/java/src/org/chromium/base/metrics/StatisticsRecorderAndroid.java",
3598       "android/java/src/org/chromium/base/metrics/UmaRecorder.java",
3599       "android/java/src/org/chromium/base/metrics/UmaRecorderHolder.java",
3600       "android/java/src/org/chromium/base/multidex/ChromiumMultiDexInstaller.java",
3601       "android/java/src/org/chromium/base/process_launcher/BindService.java",
3602       "android/java/src/org/chromium/base/process_launcher/ChildConnectionAllocator.java",
3603       "android/java/src/org/chromium/base/process_launcher/ChildProcessConnection.java",
3604       "android/java/src/org/chromium/base/process_launcher/ChildProcessConstants.java",
3605       "android/java/src/org/chromium/base/process_launcher/ChildProcessLauncher.java",
3606       "android/java/src/org/chromium/base/process_launcher/ChildProcessService.java",
3607       "android/java/src/org/chromium/base/process_launcher/ChildProcessServiceDelegate.java",
3608       "android/java/src/org/chromium/base/process_launcher/ChildServiceConnection.java",
3609       "android/java/src/org/chromium/base/process_launcher/ChildServiceConnectionDelegate.java",
3610       "android/java/src/org/chromium/base/process_launcher/ChildServiceConnectionFactory.java",
3611       "android/java/src/org/chromium/base/process_launcher/ChildServiceConnectionImpl.java",
3612       "android/java/src/org/chromium/base/process_launcher/FileDescriptorInfo.java",
3613       "android/java/src/org/chromium/base/supplier/DestroyableObservableSupplier.java",
3614       "android/java/src/org/chromium/base/supplier/ObservableSupplier.java",
3615       "android/java/src/org/chromium/base/supplier/ObservableSupplierImpl.java",
3616       "android/java/src/org/chromium/base/supplier/OneShotCallback.java",
3617       "android/java/src/org/chromium/base/supplier/Supplier.java",
3618       "android/java/src/org/chromium/base/task/AsyncTask.java",
3619       "android/java/src/org/chromium/base/task/BackgroundOnlyAsyncTask.java",
3620       "android/java/src/org/chromium/base/task/ChoreographerTaskRunner.java",
3621       "android/java/src/org/chromium/base/task/ChromeThreadPoolExecutor.java",
3622       "android/java/src/org/chromium/base/task/DefaultTaskExecutor.java",
3623       "android/java/src/org/chromium/base/task/PostTask.java",
3624       "android/java/src/org/chromium/base/task/SequencedTaskRunner.java",
3625       "android/java/src/org/chromium/base/task/SequencedTaskRunnerImpl.java",
3626       "android/java/src/org/chromium/base/task/SerialExecutor.java",
3627       "android/java/src/org/chromium/base/task/SingleThreadTaskRunner.java",
3628       "android/java/src/org/chromium/base/task/SingleThreadTaskRunnerImpl.java",
3629       "android/java/src/org/chromium/base/task/TaskExecutor.java",
3630       "android/java/src/org/chromium/base/task/TaskRunner.java",
3631       "android/java/src/org/chromium/base/task/TaskRunnerImpl.java",
3632       "android/java/src/org/chromium/base/task/TaskTraits.java",
3633       "android/java/src/org/chromium/base/task/TaskTraitsExtensionDescriptor.java",
3634     ]
3635
3636     annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
3637
3638     # New versions of BuildConfig.java and NativeLibraries.java
3639     # (with the actual correct values) will be created when creating an apk.
3640     jar_excluded_patterns = [
3641       "*/BuildConfig.class",
3642       "*/NativeLibraries.class",
3643       "*/NativeLibraries##*.class",
3644     ]
3645   }
3646
3647   android_aidl("base_java_aidl") {
3648     import_include = [ "android/java/src" ]
3649     sources = [
3650       "android/java/src/org/chromium/base/process_launcher/IChildProcessService.aidl",
3651       "android/java/src/org/chromium/base/process_launcher/IParentProcess.aidl",
3652     ]
3653   }
3654
3655   android_library("base_javatests") {
3656     testonly = true
3657     deps = [
3658       ":base_java",
3659       ":base_java_test_support",
3660       ":jni_java",
3661       "//base/test:test_support_java",
3662       "//third_party/android_deps:androidx_test_monitor_java",
3663       "//third_party/android_deps:androidx_test_uiautomator_uiautomator_java",
3664       "//third_party/android_support_test_runner:runner_java",
3665       "//third_party/hamcrest:hamcrest_java",
3666       "//third_party/junit:junit",
3667     ]
3668     sources = [
3669       # AssertsTest doesn't really belong in //base but it's preferable to
3670       # stick it here than create another target for a single test.
3671       "android/javatests/src/org/chromium/base/AdvancedMockContextTest.java",
3672       "android/javatests/src/org/chromium/base/ApiCompatibilityUtilsTest.java",
3673       "android/javatests/src/org/chromium/base/AssertsTest.java",
3674       "android/javatests/src/org/chromium/base/CommandLineFlagsTest.java",
3675       "android/javatests/src/org/chromium/base/CommandLineInitUtilTest.java",
3676       "android/javatests/src/org/chromium/base/CommandLineTest.java",
3677       "android/javatests/src/org/chromium/base/EarlyTraceEventTest.java",
3678       "android/javatests/src/org/chromium/base/UserDataHostTest.java",
3679
3680       # TODO(nona): move to Junit once that is built for Android N.
3681       "android/javatests/src/org/chromium/base/LocaleUtilsTest.java",
3682       "android/javatests/src/org/chromium/base/ObserverListTest.java",
3683       "android/javatests/src/org/chromium/base/StrictModeContextTest.java",
3684       "android/javatests/src/org/chromium/base/library_loader/EarlyNativeTest.java",
3685       "android/javatests/src/org/chromium/base/metrics/RecordHistogramTest.java",
3686       "android/javatests/src/org/chromium/base/task/AsyncTaskTest.java",
3687       "android/javatests/src/org/chromium/base/task/PostTaskTest.java",
3688       "android/javatests/src/org/chromium/base/task/SequencedTaskRunnerImplTest.java",
3689       "android/javatests/src/org/chromium/base/task/SingleThreadTaskRunnerImplTest.java",
3690       "android/javatests/src/org/chromium/base/task/TaskRunnerImplTest.java",
3691       "android/javatests/src/org/chromium/base/util/GarbageCollectionTestUtilsTest.java",
3692     ]
3693
3694     annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
3695   }
3696
3697   source_set("base_javatests_lib") {
3698     testonly = true
3699     deps = [
3700       ":base",
3701       ":base_javatests_jni_headers",
3702     ]
3703     sources = [ "test/library_loader/early_native_test_helper.cc" ]
3704   }
3705
3706   generate_jni("base_javatests_jni_headers") {
3707     testonly = true
3708     sources = [ "android/javatests/src/org/chromium/base/library_loader/EarlyNativeTest.java" ]
3709   }
3710
3711   android_library("base_java_test_support") {
3712     testonly = true
3713     deps = [
3714       ":base_java",
3715       ":jni_java",
3716       "//testing/android/reporter:reporter_java",
3717       "//third_party/android_deps:androidx_annotation_annotation_java",
3718       "//third_party/android_deps:androidx_core_core_java",
3719       "//third_party/android_deps:androidx_test_monitor_java",
3720       "//third_party/android_deps:androidx_test_runner_java",
3721       "//third_party/android_deps:androidx_test_uiautomator_uiautomator_java",
3722       "//third_party/android_sdk:android_support_chromium_java",
3723       "//third_party/android_sdk:android_test_base_java",
3724       "//third_party/android_sdk:android_test_mock_java",
3725       "//third_party/android_support_test_runner:exposed_instrumentation_api_publish_java",
3726       "//third_party/android_support_test_runner:rules_java",
3727       "//third_party/android_support_test_runner:runner_java",
3728       "//third_party/hamcrest:hamcrest_core_java",
3729       "//third_party/hamcrest:hamcrest_java",
3730       "//third_party/junit",
3731       "//third_party/ub-uiautomator:ub_uiautomator_java",
3732     ]
3733
3734     sources = [
3735       "test/android/javatests/src/org/chromium/base/test/BaseChromiumAndroidJUnitRunner.java",
3736       "test/android/javatests/src/org/chromium/base/test/BaseChromiumRunnerCommon.java",
3737       "test/android/javatests/src/org/chromium/base/test/BaseJUnit4ClassRunner.java",
3738       "test/android/javatests/src/org/chromium/base/test/BaseJUnit4TestRule.java",
3739       "test/android/javatests/src/org/chromium/base/test/BundleTestRule.java",
3740       "test/android/javatests/src/org/chromium/base/test/DestroyActivitiesRule.java",
3741       "test/android/javatests/src/org/chromium/base/test/LifetimeAssertRule.java",
3742       "test/android/javatests/src/org/chromium/base/test/LoadNative.java",
3743       "test/android/javatests/src/org/chromium/base/test/ReachedCodeProfiler.java",
3744       "test/android/javatests/src/org/chromium/base/test/ScreenshotOnFailureStatement.java",
3745       "test/android/javatests/src/org/chromium/base/test/SetUpStatement.java",
3746       "test/android/javatests/src/org/chromium/base/test/SetUpTestRule.java",
3747       "test/android/javatests/src/org/chromium/base/test/TestListInstrumentationRunListener.java",
3748       "test/android/javatests/src/org/chromium/base/test/TestTraceEvent.java",
3749       "test/android/javatests/src/org/chromium/base/test/params/BaseJUnit4RunnerDelegate.java",
3750       "test/android/javatests/src/org/chromium/base/test/params/BlockJUnit4RunnerDelegate.java",
3751       "test/android/javatests/src/org/chromium/base/test/params/MethodParamAnnotationRule.java",
3752       "test/android/javatests/src/org/chromium/base/test/params/MethodParamRule.java",
3753       "test/android/javatests/src/org/chromium/base/test/params/ParameterAnnotations.java",
3754       "test/android/javatests/src/org/chromium/base/test/params/ParameterProvider.java",
3755       "test/android/javatests/src/org/chromium/base/test/params/ParameterSet.java",
3756       "test/android/javatests/src/org/chromium/base/test/params/ParameterizedCommandLineFlags.java",
3757       "test/android/javatests/src/org/chromium/base/test/params/ParameterizedFrameworkMethod.java",
3758       "test/android/javatests/src/org/chromium/base/test/params/ParameterizedRunner.java",
3759       "test/android/javatests/src/org/chromium/base/test/params/ParameterizedRunnerDelegate.java",
3760       "test/android/javatests/src/org/chromium/base/test/params/ParameterizedRunnerDelegateCommon.java",
3761       "test/android/javatests/src/org/chromium/base/test/params/ParameterizedRunnerDelegateFactory.java",
3762       "test/android/javatests/src/org/chromium/base/test/params/SkipCommandLineParameterization.java",
3763       "test/android/javatests/src/org/chromium/base/test/task/SchedulerTestHelpers.java",
3764       "test/android/javatests/src/org/chromium/base/test/task/ThreadPoolTestHelpers.java",
3765       "test/android/javatests/src/org/chromium/base/test/util/AdvancedMockContext.java",
3766       "test/android/javatests/src/org/chromium/base/test/util/AnnotationProcessingUtils.java",
3767       "test/android/javatests/src/org/chromium/base/test/util/AnnotationRule.java",
3768       "test/android/javatests/src/org/chromium/base/test/util/Batch.java",
3769       "test/android/javatests/src/org/chromium/base/test/util/CallbackHelper.java",
3770       "test/android/javatests/src/org/chromium/base/test/util/CloseableOnMainThread.java",
3771       "test/android/javatests/src/org/chromium/base/test/util/CommandLineFlags.java",
3772       "test/android/javatests/src/org/chromium/base/test/util/DisableIf.java",
3773       "test/android/javatests/src/org/chromium/base/test/util/DisableIfSkipCheck.java",
3774       "test/android/javatests/src/org/chromium/base/test/util/DisabledTest.java",
3775       "test/android/javatests/src/org/chromium/base/test/util/EnormousTest.java",
3776       "test/android/javatests/src/org/chromium/base/test/util/Feature.java",
3777       "test/android/javatests/src/org/chromium/base/test/util/FlakyTest.java",
3778       "test/android/javatests/src/org/chromium/base/test/util/InMemorySharedPreferences.java",
3779       "test/android/javatests/src/org/chromium/base/test/util/InMemorySharedPreferencesContext.java",
3780       "test/android/javatests/src/org/chromium/base/test/util/InstrumentationUtils.java",
3781       "test/android/javatests/src/org/chromium/base/test/util/IntegrationTest.java",
3782       "test/android/javatests/src/org/chromium/base/test/util/JniMocker.java",
3783       "test/android/javatests/src/org/chromium/base/test/util/Manual.java",
3784       "test/android/javatests/src/org/chromium/base/test/util/Matchers.java",
3785       "test/android/javatests/src/org/chromium/base/test/util/MetricsUtils.java",
3786       "test/android/javatests/src/org/chromium/base/test/util/MinAndroidSdkLevel.java",
3787       "test/android/javatests/src/org/chromium/base/test/util/MinAndroidSdkLevelSkipCheck.java",
3788       "test/android/javatests/src/org/chromium/base/test/util/Restriction.java",
3789       "test/android/javatests/src/org/chromium/base/test/util/RestrictionSkipCheck.java",
3790       "test/android/javatests/src/org/chromium/base/test/util/ScalableTimeout.java",
3791       "test/android/javatests/src/org/chromium/base/test/util/SkipCheck.java",
3792       "test/android/javatests/src/org/chromium/base/test/util/TestFileUtil.java",
3793       "test/android/javatests/src/org/chromium/base/test/util/TimeoutScale.java",
3794       "test/android/javatests/src/org/chromium/base/test/util/TimeoutTimer.java",
3795       "test/android/javatests/src/org/chromium/base/test/util/UrlUtils.java",
3796       "test/android/javatests/src/org/chromium/base/test/util/UserActionTester.java",
3797     ]
3798     annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
3799   }
3800
3801   android_library("base_java_process_launcher_test_support") {
3802     testonly = true
3803     deps = [
3804       ":base_java",
3805       ":base_java_test_support",
3806     ]
3807     sources = [ "test/android/javatests/src/org/chromium/base/process_launcher/TestChildProcessConnection.java" ]
3808   }
3809
3810   android_library("base_junit_test_support") {
3811     # Platform checks are broken for Robolectric. See https://crbug.com/1071638.
3812     bypass_platform_checks = true
3813     testonly = true
3814     sources = [
3815       "//third_party/robolectric/custom_asynctask/java/src/org/chromium/base/task/test/ShadowAsyncTask.java",
3816       "//third_party/robolectric/custom_asynctask/java/src/org/chromium/base/task/test/ShadowAsyncTaskBridge.java",
3817       "android/junit/src/org/chromium/base/metrics/test/ShadowRecordHistogram.java",
3818       "test/android/junit/src/org/chromium/base/task/test/BackgroundShadowAsyncTask.java",
3819       "test/android/junit/src/org/chromium/base/task/test/CustomShadowAsyncTask.java",
3820       "test/android/junit/src/org/chromium/base/task/test/ShadowPostTask.java",
3821       "test/android/junit/src/org/chromium/base/test/BaseRobolectricTestRunner.java",
3822       "test/android/junit/src/org/chromium/base/test/util/TestRunnerTestRule.java",
3823     ]
3824     deps = [
3825       ":base_java",
3826       "//testing/android/junit:junit_test_support",
3827       "//third_party/android_deps:androidx_test_monitor_java",
3828       "//third_party/android_deps:androidx_test_uiautomator_uiautomator_java",
3829       "//third_party/android_deps:robolectric_all_java",
3830       "//third_party/android_support_test_runner:runner_java",
3831       "//third_party/hamcrest:hamcrest_java",
3832       "//third_party/junit:junit",
3833     ]
3834   }
3835
3836   junit_binary("base_junit_tests") {
3837     sources = [
3838       "android/junit/src/org/chromium/base/ApplicationStatusTest.java",
3839       "android/junit/src/org/chromium/base/CallbackControllerTest.java",
3840       "android/junit/src/org/chromium/base/DiscardableReferencePoolTest.java",
3841       "android/junit/src/org/chromium/base/FileUtilsTest.java",
3842       "android/junit/src/org/chromium/base/LifetimeAssertTest.java",
3843       "android/junit/src/org/chromium/base/LogTest.java",
3844       "android/junit/src/org/chromium/base/NonThreadSafeTest.java",
3845       "android/junit/src/org/chromium/base/PiiEliderTest.java",
3846       "android/junit/src/org/chromium/base/PromiseTest.java",
3847       "android/junit/src/org/chromium/base/UnownedUserDataHostTest.java",
3848       "android/junit/src/org/chromium/base/UnownedUserDataKeyTest.java",
3849       "android/junit/src/org/chromium/base/memory/MemoryPressureMonitorTest.java",
3850       "android/junit/src/org/chromium/base/metrics/CachingUmaRecorderTest.java",
3851       "android/junit/src/org/chromium/base/process_launcher/ChildConnectionAllocatorTest.java",
3852       "android/junit/src/org/chromium/base/process_launcher/ChildProcessConnectionTest.java",
3853       "android/junit/src/org/chromium/base/supplier/ObservableSupplierImplTest.java",
3854       "android/junit/src/org/chromium/base/supplier/OneShotCallbackTest.java",
3855       "android/junit/src/org/chromium/base/task/AsyncTaskThreadTest.java",
3856       "android/junit/src/org/chromium/base/task/TaskTraitsTest.java",
3857       "android/junit/src/org/chromium/base/util/GarbageCollectionTestUtilsUnitTest.java",
3858       "test/android/junit/src/org/chromium/base/test/SetUpStatementTest.java",
3859       "test/android/junit/src/org/chromium/base/test/TestListInstrumentationRunListenerTest.java",
3860       "test/android/junit/src/org/chromium/base/test/params/ExampleParameterizedTest.java",
3861       "test/android/junit/src/org/chromium/base/test/params/ParameterizedRunnerDelegateCommonTest.java",
3862       "test/android/junit/src/org/chromium/base/test/params/ParameterizedRunnerDelegateFactoryTest.java",
3863       "test/android/junit/src/org/chromium/base/test/params/ParameterizedRunnerTest.java",
3864       "test/android/junit/src/org/chromium/base/test/params/ParameterizedTestNameTest.java",
3865       "test/android/junit/src/org/chromium/base/test/util/AnnotationProcessingUtilsTest.java",
3866       "test/android/junit/src/org/chromium/base/test/util/DisableIfTest.java",
3867       "test/android/junit/src/org/chromium/base/test/util/MinAndroidSdkLevelSkipCheckTest.java",
3868       "test/android/junit/src/org/chromium/base/test/util/RestrictionSkipCheckTest.java",
3869       "test/android/junit/src/org/chromium/base/test/util/SkipCheckTest.java",
3870     ]
3871     deps = [
3872       ":base_java",
3873       ":base_java_process_launcher_test_support",
3874       ":base_java_test_support",
3875       ":base_junit_test_support",
3876       ":jni_java",
3877       "//base/test:test_support_java",
3878       "//third_party/hamcrest:hamcrest_java",
3879     ]
3880   }
3881
3882   java_cpp_enum("base_android_java_enums_srcjar") {
3883     sources = [
3884       "android/application_status_listener.h",
3885       "android/child_process_binding_types.h",
3886       "android/library_loader/library_loader_hooks.h",
3887       "android/task_scheduler/task_runner_android.h",
3888       "memory/memory_pressure_listener.h",
3889       "metrics/histogram_base.h",
3890       "task/task_traits.h",
3891     ]
3892     if (enable_base_tracing) {
3893       sources += [ "trace_event/trace_config.h" ]
3894     }
3895   }
3896
3897   generate_jni("base_profiler_test_support_jni_headers") {
3898     testonly = true
3899     sources =
3900         [ "android/javatests/src/org/chromium/base/profiler/TestSupport.java" ]
3901   }
3902
3903   android_library("base_profiler_test_support_java") {
3904     testonly = true
3905     sources =
3906         [ "android/javatests/src/org/chromium/base/profiler/TestSupport.java" ]
3907
3908     annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
3909     deps = [
3910       "//base:base_java",
3911       "//base:jni_java",
3912     ]
3913   }
3914
3915   generate_build_config_srcjar("base_build_config_gen") {
3916     use_final_fields = false
3917   }
3918
3919   write_native_libraries_java("base_native_libraries_gen") {
3920     use_final_fields = false
3921   }
3922
3923   android_library("base_java_unittest_support") {
3924     testonly = true
3925     deps = [ ":base_java" ]
3926     sources = [
3927       "test/android/java/src/org/chromium/base/ContentUriTestUtils.java",
3928       "test/android/java/src/org/chromium/base/JavaHandlerThreadHelpers.java",
3929     ]
3930   }
3931 }
3932
3933 # Keep the list of fuzzer_tests in alphabetical order.
3934 fuzzer_test("base64_decode_fuzzer") {
3935   sources = [ "base64_decode_fuzzer.cc" ]
3936   deps = [ "//base" ]
3937 }
3938
3939 fuzzer_test("base64_encode_fuzzer") {
3940   sources = [ "base64_encode_fuzzer.cc" ]
3941   deps = [ "//base" ]
3942 }
3943
3944 fuzzer_test("base_json_correctness_fuzzer") {
3945   sources = [ "json/json_correctness_fuzzer.cc" ]
3946   deps = [ ":base" ]
3947   dict = "//testing/libfuzzer/fuzzers/dicts/json.dict"
3948 }
3949
3950 fuzzer_test("base_json_reader_fuzzer") {
3951   sources = [ "json/json_reader_fuzzer.cc" ]
3952   deps = [ "//base" ]
3953   dict = "//testing/libfuzzer/fuzzers/dicts/json.dict"
3954 }
3955
3956 fuzzer_test("base_json_string_escape_fuzzer") {
3957   sources = [ "json/string_escape_fuzzer.cc" ]
3958   deps = [ "//base" ]
3959 }
3960
3961 if (is_mac) {
3962   protoc_convert("base_mach_port_rendezvous_convert_corpus") {
3963     sources = [
3964       "test/data/mach_port_rendezvous_fuzz/dead_name.textproto",
3965       "test/data/mach_port_rendezvous_fuzz/send.textproto",
3966     ]
3967     inputs = [ "//testing/libfuzzer/fuzzers/mach/mach_message.proto" ]
3968     output_pattern = "$target_gen_dir/base_mach_port_rendezvous_corpus/{{source_name_part}}.binarypb"
3969     args = [
3970       "--encode=mach_fuzzer.MachMessage",
3971       "-I",
3972       rebase_path("//"),
3973       rebase_path(inputs[0]),
3974     ]
3975   }
3976   fuzzer_test("base_mach_port_rendezvous_fuzzer") {
3977     sources = [ "mac/mach_port_rendezvous_fuzzer.cc" ]
3978     deps = [
3979       "//base",
3980       "//testing/libfuzzer/fuzzers/mach:converter",
3981       "//third_party/libprotobuf-mutator",
3982     ]
3983     seed_corpus = "$target_gen_dir/base_mach_port_rendezvous_corpus"
3984     seed_corpus_deps = [ ":base_mach_port_rendezvous_convert_corpus" ]
3985   }
3986 }
3987
3988 fuzzer_test("string_number_conversions_fuzzer") {
3989   sources = [ "strings/string_number_conversions_fuzzer.cc" ]
3990   deps = [ "//base" ]
3991 }
3992
3993 fuzzer_test("string_tokenizer_fuzzer") {
3994   sources = [ "strings/string_tokenizer_fuzzer.cc" ]
3995   deps = [ "//base" ]
3996 }
3997
3998 fuzzer_test("utf_string_conversions_fuzzer") {
3999   sources = [ "strings/utf_string_conversions_fuzzer.cc" ]
4000   deps = [ "//base" ]
4001 }
4002
4003 fuzzer_test("pickle_fuzzer") {
4004   sources = [ "pickle_fuzzer.cc" ]
4005   deps = [
4006     "//base",
4007     "//base/test:test_support",
4008   ]
4009 }