Home | History | Annotate | Download | only in libchrome
      1 // Copyright (C) 2015 The Android Open Source Project
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //      http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 // Common defaults
     16 // ========================================================
     17 
     18 cc_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 
     54 cc_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 
     64 libchromeCommonSrc = [
     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 
    245 libchromeLinuxSrc = [
    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 
    261 libchromeMacSrc = [
    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 // ========================================================
    290 cc_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 // ========================================================
    333 cc_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 // ========================================================
    354 cc_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 // ========================================================
    372 cc_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 // ========================================================
    390 cc_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