1// Copyright (C) 2015 The Android Open Source Project 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15// Common defaults 16// ======================================================== 17 18cc_defaults { 19 name: "libchrome-defaults", 20 // Set clang to "true" to force clang or "false" to force gcc. 21 // clang: true, 22 23 cflags: [ 24 "-Wall", 25 "-Werror", 26 ], 27 include_dirs: [ 28 "external/valgrind/include", 29 "external/valgrind", 30 ], 31 export_include_dirs: ["."], 32 target: { 33 host: { 34 cflags: [ 35 "-D__ANDROID_HOST__", 36 "-DDONT_EMBED_BUILD_METADATA", 37 ], 38 }, 39 darwin: { 40 cflags: [ 41 "-D_FILE_OFFSET_BITS=64", 42 "-Wno-deprecated-declarations", 43 ], 44 host_ldlibs: [ 45 "-framework AppKit", 46 "-framework CoreFoundation", 47 "-framework Foundation", 48 "-framework Security", 49 ], 50 }, 51 }, 52} 53 54cc_defaults { 55 name: "libchrome-test-defaults", 56 defaults: ["libchrome-defaults"], 57 cflags: [ 58 "-Wno-unused-parameter", 59 "-Wno-unused-function", 60 "-Wno-missing-field-initializers", 61 ], 62} 63 64libchromeCommonSrc = [ 65 "base/at_exit.cc", 66 "base/base64.cc", 67 "base/base64url.cc", 68 "base/base_switches.cc", 69 "base/bind_helpers.cc", 70 "base/build_time.cc", 71 "base/callback_helpers.cc", 72 "base/callback_internal.cc", 73 "base/command_line.cc", 74 "base/cpu.cc", 75 "base/debug/alias.cc", 76 "base/debug/debugger.cc", 77 "base/debug/debugger_posix.cc", 78 "base/debug/stack_trace.cc", 79 "base/debug/stack_trace_posix.cc", 80 "base/debug/task_annotator.cc", 81 "base/environment.cc", 82 "base/files/file.cc", 83 "base/files/file_enumerator.cc", 84 "base/files/file_enumerator_posix.cc", 85 "base/files/file_path.cc", 86 "base/files/file_path_constants.cc", 87 "base/files/file_path_watcher.cc", 88 "base/files/file_posix.cc", 89 "base/files/file_tracing.cc", 90 "base/files/file_util.cc", 91 "base/files/file_util_posix.cc", 92 "base/files/important_file_writer.cc", 93 "base/files/memory_mapped_file.cc", 94 "base/files/memory_mapped_file_posix.cc", 95 "base/files/scoped_file.cc", 96 "base/files/scoped_temp_dir.cc", 97 "base/guid.cc", 98 "base/hash.cc", 99 "base/json/json_file_value_serializer.cc", 100 "base/json/json_parser.cc", 101 "base/json/json_reader.cc", 102 "base/json/json_string_value_serializer.cc", 103 "base/json/json_value_converter.cc", 104 "base/json/json_writer.cc", 105 "base/json/string_escape.cc", 106 "base/lazy_instance.cc", 107 "base/location.cc", 108 "base/logging.cc", 109 "base/md5.cc", 110 "base/memory/aligned_memory.cc", 111 "base/memory/ref_counted.cc", 112 "base/memory/ref_counted_memory.cc", 113 "base/memory/singleton.cc", 114 "base/memory/weak_ptr.cc", 115 "base/message_loop/incoming_task_queue.cc", 116 "base/message_loop/message_loop.cc", 117 "base/message_loop/message_loop_task_runner.cc", 118 "base/message_loop/message_pump.cc", 119 "base/message_loop/message_pump_default.cc", 120 "base/message_loop/message_pump_libevent.cc", 121 "base/metrics/bucket_ranges.cc", 122 "base/metrics/field_trial.cc", 123 "base/metrics/metrics_hashes.cc", 124 "base/metrics/histogram_base.cc", 125 "base/metrics/histogram.cc", 126 "base/metrics/histogram_samples.cc", 127 "base/metrics/histogram_snapshot_manager.cc", 128 "base/metrics/persistent_histogram_allocator.cc", 129 "base/metrics/persistent_memory_allocator.cc", 130 "base/metrics/persistent_sample_map.cc", 131 "base/metrics/sample_map.cc", 132 "base/metrics/sample_vector.cc", 133 "base/metrics/sparse_histogram.cc", 134 "base/metrics/statistics_recorder.cc", 135 "base/pending_task.cc", 136 "base/pickle.cc", 137 "base/posix/file_descriptor_shuffle.cc", 138 "base/posix/safe_strerror.cc", 139 "base/process/kill.cc", 140 "base/process/kill_posix.cc", 141 "base/process/launch.cc", 142 "base/process/launch_posix.cc", 143 "base/process/process_handle.cc", 144 "base/process/process_handle_posix.cc", 145 "base/process/process_iterator.cc", 146 "base/process/process_metrics.cc", 147 "base/process/process_metrics_posix.cc", 148 "base/process/process_posix.cc", 149 "base/profiler/scoped_profile.cc", 150 "base/profiler/scoped_tracker.cc", 151 "base/profiler/tracked_time.cc", 152 "base/rand_util.cc", 153 "base/rand_util_posix.cc", 154 "base/run_loop.cc", 155 "base/sequence_checker_impl.cc", 156 "base/sequenced_task_runner.cc", 157 "base/sha1_portable.cc", 158 "base/strings/pattern.cc", 159 "base/strings/safe_sprintf.cc", 160 "base/strings/string16.cc", 161 "base/strings/string_number_conversions.cc", 162 "base/strings/string_piece.cc", 163 "base/strings/stringprintf.cc", 164 "base/strings/string_split.cc", 165 "base/strings/string_util.cc", 166 "base/strings/string_util_constants.cc", 167 "base/strings/utf_string_conversions.cc", 168 "base/strings/utf_string_conversion_utils.cc", 169 "base/synchronization/cancellation_flag.cc", 170 "base/synchronization/condition_variable_posix.cc", 171 "base/synchronization/lock.cc", 172 "base/synchronization/lock_impl_posix.cc", 173 "base/synchronization/read_write_lock_posix.cc", 174 "base/synchronization/waitable_event_posix.cc", 175 "base/sync_socket_posix.cc", 176 "base/sys_info.cc", 177 "base/sys_info_posix.cc", 178 "base/task/cancelable_task_tracker.cc", 179 "base/task_runner.cc", 180 "base/task_scheduler/scheduler_lock_impl.cc", 181 "base/task_scheduler/sequence.cc", 182 "base/task_scheduler/sequence_sort_key.cc", 183 "base/task_scheduler/task.cc", 184 "base/task_scheduler/task_traits.cc", 185 "base/third_party/icu/icu_utf.cc", 186 "base/third_party/nspr/prtime.cc", 187 "base/threading/non_thread_safe_impl.cc", 188 "base/threading/platform_thread_posix.cc", 189 "base/threading/post_task_and_reply_impl.cc", 190 "base/threading/sequenced_task_runner_handle.cc", 191 "base/threading/sequenced_worker_pool.cc", 192 "base/threading/simple_thread.cc", 193 "base/threading/thread.cc", 194 "base/threading/thread_checker_impl.cc", 195 "base/threading/thread_collision_warner.cc", 196 "base/threading/thread_id_name_manager.cc", 197 "base/threading/thread_local_posix.cc", 198 "base/threading/thread_local_storage.cc", 199 "base/threading/thread_local_storage_posix.cc", 200 "base/threading/thread_restrictions.cc", 201 "base/threading/thread_task_runner_handle.cc", 202 "base/threading/worker_pool.cc", 203 "base/threading/worker_pool_posix.cc", 204 "base/time/clock.cc", 205 "base/time/default_clock.cc", 206 "base/time/default_tick_clock.cc", 207 "base/time/tick_clock.cc", 208 "base/time/time.cc", 209 "base/time/time_posix.cc", 210 "base/timer/elapsed_timer.cc", 211 "base/timer/timer.cc", 212 "base/trace_event/heap_profiler_allocation_context.cc", 213 "base/trace_event/heap_profiler_allocation_context_tracker.cc", 214 "base/trace_event/heap_profiler_allocation_register.cc", 215 "base/trace_event/heap_profiler_allocation_register_posix.cc", 216 "base/trace_event/heap_profiler_heap_dump_writer.cc", 217 "base/trace_event/heap_profiler_stack_frame_deduplicator.cc", 218 "base/trace_event/heap_profiler_type_name_deduplicator.cc", 219 "base/trace_event/malloc_dump_provider.cc", 220 "base/trace_event/memory_allocator_dump.cc", 221 "base/trace_event/memory_allocator_dump_guid.cc", 222 "base/trace_event/memory_dump_manager.cc", 223 "base/trace_event/memory_dump_request_args.cc", 224 "base/trace_event/memory_dump_session_state.cc", 225 "base/trace_event/memory_infra_background_whitelist.cc", 226 "base/trace_event/process_memory_dump.cc", 227 "base/trace_event/process_memory_maps.cc", 228 "base/trace_event/process_memory_totals.cc", 229 "base/trace_event/trace_buffer.cc", 230 "base/trace_event/trace_config.cc", 231 "base/trace_event/trace_event_argument.cc", 232 "base/trace_event/trace_event_impl.cc", 233 "base/trace_event/trace_event_memory_overhead.cc", 234 "base/trace_event/trace_event_synthetic_delay.cc", 235 "base/trace_event/trace_log.cc", 236 "base/trace_event/trace_log_constants.cc", 237 "base/trace_event/trace_sampling_thread.cc", 238 "base/tracked_objects.cc", 239 "base/tracking_info.cc", 240 "base/values.cc", 241 "base/version.cc", 242 "base/vlog.cc", 243] 244 245libchromeLinuxSrc = [ 246 "base/files/file_path_watcher_linux.cc", 247 "base/files/file_util_linux.cc", 248 "base/memory/shared_memory_posix.cc", 249 "base/posix/unix_domain_socket_linux.cc", 250 "base/process/internal_linux.cc", 251 "base/process/process_handle_linux.cc", 252 "base/process/process_iterator_linux.cc", 253 "base/process/process_metrics_linux.cc", 254 "base/strings/sys_string_conversions_posix.cc", 255 "base/sys_info_linux.cc", 256 "base/threading/platform_thread_internal_posix.cc", 257 "base/threading/platform_thread_linux.cc", 258 "components/timers/alarm_timer_chromeos.cc", 259] 260 261libchromeMacSrc = [ 262 "base/files/file_path_watcher_fsevents.cc", 263 "base/files/file_path_watcher_kqueue.cc", 264 "base/files/file_path_watcher_mac.cc", 265 "base/files/file_util_mac.mm", 266 "base/mac/bundle_locations.mm", 267 "base/mac/foundation_util.mm", 268 "base/mac/mach_logging.cc", 269 "base/mac/scoped_mach_port.cc", 270 "base/mac/scoped_mach_vm.cc", 271 "base/mac/scoped_nsautorelease_pool.mm", 272 "base/mac/sdk_forward_declarations.mm", 273 "base/memory/shared_memory_mac.cc", 274 "base/memory/shared_memory_handle_mac.cc", 275 "base/message_loop/message_pump_mac.mm", 276 "base/process/launch_mac.cc", 277 "base/process/port_provider_mac.cc", 278 "base/process/process_handle_mac.cc", 279 "base/process/process_iterator_mac.cc", 280 "base/process/process_metrics_mac.cc", 281 "base/strings/sys_string_conversions_mac.mm", 282 "base/sys_info_mac.mm", 283 "base/time/time_mac.cc", 284 "base/threading/platform_thread_mac.mm", 285] 286 287 288// libchrome static+shared for host and device 289// ======================================================== 290cc_library { 291 name: "libchrome", 292 host_supported: true, 293 vendor_available: true, 294 defaults: ["libchrome-defaults"], 295 srcs: libchromeCommonSrc, 296 297 export_shared_lib_headers: ["libbase"], 298 export_static_lib_headers: ["libgtest_prod"], 299 shared_libs: [ 300 "libbase", 301 "libevent", 302 ], 303 static_libs: [ 304 "libmodpb64", 305 "libgtest_prod", 306 ], 307 target: { 308 android: { 309 srcs: libchromeLinuxSrc + [ 310 "base/memory/shared_memory_android.cc", 311 "base/sys_info_chromeos.cc", 312 ], 313 shared_libs: [ 314 "liblog", 315 "libcutils", 316 ], 317 }, 318 linux: { 319 srcs: libchromeLinuxSrc + [ 320 "base/allocator/allocator_shim.cc", 321 "base/allocator/allocator_shim_default_dispatch_to_glibc.cc" 322 ], 323 host_ldlibs: ["-lrt"], 324 }, 325 darwin: { 326 srcs: libchromeMacSrc, 327 }, 328 }, 329} 330 331// libchrome-crypto shared library for device 332// ======================================================== 333cc_library_shared { 334 name: "libchrome-crypto", 335 defaults: ["libchrome-defaults"], 336 srcs: [ 337 "crypto/openssl_util.cc", 338 "crypto/random.cc", 339 "crypto/secure_hash.cc", 340 "crypto/secure_util.cc", 341 "crypto/sha2.cc", 342 ], 343 344 cflags: ["-Wno-unused-parameter"], 345 shared_libs: [ 346 "libchrome", 347 "libcrypto", 348 "libssl", 349 ], 350} 351 352// Helpers needed for unit tests. 353// ======================================================== 354cc_library_static { 355 name: "libchrome_test_helpers", 356 defaults: ["libchrome-test-defaults"], 357 shared_libs: ["libchrome"], 358 359 srcs: [ 360 "base/test/simple_test_clock.cc", 361 "base/test/simple_test_tick_clock.cc", 362 "base/test/test_file_util.cc", 363 "base/test/test_file_util_linux.cc", 364 "base/test/test_switches.cc", 365 "base/test/test_timeouts.cc", 366 ], 367 368} 369 370// Helpers needed for unit tests (for host). 371// ======================================================== 372cc_library_host_static { 373 name: "libchrome_test_helpers-host", 374 defaults: ["libchrome-test-defaults"], 375 shared_libs: ["libchrome"], 376 377 srcs: ["base/test/simple_test_clock.cc"], 378 target: { 379 darwin: { 380 enabled: false, 381 }, 382 }, 383} 384 385// Host and target unit tests. Run (from repo root) with: 386// ./out/host/<arch>/nativetest/libchrome_test/libchrome_test 387// or 388// adb shell /data/nativetest/libchrome_test/libchrome_test 389// ======================================================== 390cc_test { 391 name: "libchrome_test", 392 host_supported: true, 393 defaults: ["libchrome-test-defaults"], 394 srcs: [ 395 "base/at_exit_unittest.cc", 396 "base/atomicops_unittest.cc", 397 "base/base64_unittest.cc", 398 "base/base64url_unittest.cc", 399 "base/bind_unittest.cc", 400 "base/bits_unittest.cc", 401 "base/build_time_unittest.cc", 402 "base/callback_helpers_unittest.cc", 403 "base/callback_list_unittest.cc", 404 "base/callback_unittest.cc", 405 "base/cancelable_callback_unittest.cc", 406 "base/command_line_unittest.cc", 407 "base/cpu_unittest.cc", 408 "base/debug/debugger_unittest.cc", 409 "base/debug/leak_tracker_unittest.cc", 410 "base/debug/task_annotator_unittest.cc", 411 "base/environment_unittest.cc", 412 "base/file_version_info_unittest.cc", 413 "base/files/dir_reader_posix_unittest.cc", 414 "base/files/file_path_watcher_unittest.cc", 415 "base/files/file_path_unittest.cc", 416 "base/files/file_unittest.cc", 417 "base/files/important_file_writer_unittest.cc", 418 "base/files/scoped_temp_dir_unittest.cc", 419 "base/gmock_unittest.cc", 420 "base/guid_unittest.cc", 421 "base/id_map_unittest.cc", 422 "base/json/json_parser_unittest.cc", 423 "base/json/json_reader_unittest.cc", 424 "base/json/json_value_converter_unittest.cc", 425 "base/json/json_value_serializer_unittest.cc", 426 "base/json/json_writer_unittest.cc", 427 "base/json/string_escape_unittest.cc", 428 "base/lazy_instance_unittest.cc", 429 "base/logging_unittest.cc", 430 "base/md5_unittest.cc", 431 "base/memory/aligned_memory_unittest.cc", 432 "base/memory/linked_ptr_unittest.cc", 433 "base/memory/ref_counted_memory_unittest.cc", 434 "base/memory/ref_counted_unittest.cc", 435 "base/memory/scoped_vector_unittest.cc", 436 "base/memory/singleton_unittest.cc", 437 "base/memory/weak_ptr_unittest.cc", 438 "base/message_loop/message_loop_test.cc", 439 "base/message_loop/message_loop_task_runner_unittest.cc", 440 "base/message_loop/message_loop_unittest.cc", 441 "base/metrics/bucket_ranges_unittest.cc", 442 "base/metrics/field_trial_unittest.cc", 443 "base/metrics/metrics_hashes_unittest.cc", 444 "base/metrics/histogram_base_unittest.cc", 445 "base/metrics/histogram_macros_unittest.cc", 446 "base/metrics/histogram_snapshot_manager_unittest.cc", 447 "base/metrics/histogram_unittest.cc", 448 "base/metrics/persistent_histogram_allocator_unittest.cc", 449 "base/metrics/persistent_memory_allocator_unittest.cc", 450 "base/metrics/persistent_sample_map_unittest.cc", 451 "base/metrics/sample_map_unittest.cc", 452 "base/metrics/sample_vector_unittest.cc", 453 "base/metrics/sparse_histogram_unittest.cc", 454 "base/metrics/statistics_recorder_unittest.cc", 455 "base/numerics/safe_numerics_unittest.cc", 456 "base/observer_list_unittest.cc", 457 "base/optional_unittest.cc", 458 "base/pickle_unittest.cc", 459 "base/posix/file_descriptor_shuffle_unittest.cc", 460 "base/posix/unix_domain_socket_linux_unittest.cc", 461 "base/process/process_metrics_unittest.cc", 462 "base/profiler/tracked_time_unittest.cc", 463 "base/rand_util_unittest.cc", 464 "base/scoped_clear_errno_unittest.cc", 465 "base/scoped_generic_unittest.cc", 466 "base/security_unittest.cc", 467 "base/sequence_checker_unittest.cc", 468 "base/sha1_unittest.cc", 469 "base/stl_util_unittest.cc", 470 "base/strings/pattern_unittest.cc", 471 "base/strings/string16_unittest.cc", 472 "base/strings/string_number_conversions_unittest.cc", 473 "base/strings/string_piece_unittest.cc", 474 "base/strings/stringprintf_unittest.cc", 475 "base/strings/string_split_unittest.cc", 476 "base/strings/string_util_unittest.cc", 477 "base/strings/sys_string_conversions_unittest.cc", 478 "base/strings/utf_string_conversions_unittest.cc", 479 "base/synchronization/cancellation_flag_unittest.cc", 480 "base/synchronization/condition_variable_unittest.cc", 481 "base/synchronization/lock_unittest.cc", 482 "base/synchronization/waitable_event_unittest.cc", 483 "base/sync_socket_unittest.cc", 484 "base/sys_info_unittest.cc", 485 "base/task/cancelable_task_tracker_unittest.cc", 486 "base/task_runner_util_unittest.cc", 487 "base/task_scheduler/scheduler_lock_unittest.cc", 488 "base/task_scheduler/sequence_sort_key_unittest.cc", 489 "base/task_scheduler/sequence_unittest.cc", 490 "base/task_scheduler/task_traits.cc", 491 "base/template_util_unittest.cc", 492 "base/test/multiprocess_test.cc", 493 "base/test/multiprocess_test_android.cc", 494 "base/test/opaque_ref_counted.cc", 495 "base/test/scoped_locale.cc", 496 "base/test/sequenced_worker_pool_owner.cc", 497 "base/test/test_file_util.cc", 498 "base/test/test_file_util_linux.cc", 499 "base/test/test_file_util_posix.cc", 500 "base/test/test_io_thread.cc", 501 "base/test/test_pending_task.cc", 502 "base/test/test_simple_task_runner.cc", 503 "base/test/test_switches.cc", 504 "base/test/test_timeouts.cc", 505 "base/test/trace_event_analyzer.cc", 506 "base/threading/non_thread_safe_unittest.cc", 507 "base/threading/platform_thread_unittest.cc", 508 "base/threading/simple_thread_unittest.cc", 509 "base/threading/thread_checker_unittest.cc", 510 "base/threading/thread_collision_warner_unittest.cc", 511 "base/threading/thread_id_name_manager_unittest.cc", 512 "base/threading/thread_local_storage_unittest.cc", 513 "base/threading/thread_local_unittest.cc", 514 "base/threading/thread_unittest.cc", 515 "base/threading/worker_pool_posix_unittest.cc", 516 "base/threading/worker_pool_unittest.cc", 517 "base/time/pr_time_unittest.cc", 518 "base/time/time_unittest.cc", 519 "base/timer/hi_res_timer_manager_unittest.cc", 520 "base/timer/timer_unittest.cc", 521 "base/trace_event/heap_profiler_allocation_context_tracker_unittest.cc", 522 "base/trace_event/heap_profiler_stack_frame_deduplicator_unittest.cc", 523 "base/trace_event/heap_profiler_type_name_deduplicator_unittest.cc", 524 "base/trace_event/memory_allocator_dump_unittest.cc", 525 "base/trace_event/memory_dump_manager_unittest.cc", 526 "base/trace_event/process_memory_dump_unittest.cc", 527 "base/trace_event/trace_config_unittest.cc", 528 "base/trace_event/trace_event_argument_unittest.cc", 529 "base/trace_event/trace_event_synthetic_delay_unittest.cc", 530 "base/trace_event/trace_event_unittest.cc", 531 "base/tracked_objects_unittest.cc", 532 "base/tuple_unittest.cc", 533 "base/values_unittest.cc", 534 "base/version_unittest.cc", 535 "base/vlog_unittest.cc", 536 "testing/multiprocess_func_list.cc", 537 "testrunner.cc", 538 ], 539 540 cflags: ["-DUNIT_TEST"], 541 shared_libs: [ 542 "libchrome", 543 "libevent", 544 ], 545 static_libs: [ 546 "libgmock", 547 "libgtest", 548 ], 549 target: { 550 android: { 551 srcs: [ 552 "crypto/secure_hash_unittest.cc", 553 "crypto/sha2_unittest.cc", 554 ], 555 shared_libs: [ 556 "libchrome-crypto", 557 ], 558 cflags: ["-DDONT_EMBED_BUILD_METADATA"], 559 }, 560 linux: { 561 host_ldlibs: ["-lrt"], 562 }, 563 darwin: { 564 enabled: false, 565 }, 566 }, 567} 568