Home | History | Annotate | Download | only in allocator
      1 # Copyright (c) 2012 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 {
      6   'variables': {
      7     'tcmalloc_dir': '../../third_party/tcmalloc/chromium',
      8     'use_vtable_verify%': 0,
      9   },
     10   'targets': [
     11     # Only executables and not libraries should depend on the
     12     # allocator target; only the application (the final executable)
     13     # knows what allocator makes sense.
     14     {
     15       'target_name': 'allocator',
     16       'type': 'static_library',
     17       # Make sure the allocation library is optimized to
     18       # the hilt in official builds.
     19       'variables': {
     20         'optimize': 'max',
     21       },
     22       'include_dirs': [
     23         '.',
     24         '<(tcmalloc_dir)/src/base',
     25         '<(tcmalloc_dir)/src',
     26         '../..',
     27       ],
     28       'direct_dependent_settings': {
     29         'configurations': {
     30           'Common_Base': {
     31             'msvs_settings': {
     32               'VCLinkerTool': {
     33                 'IgnoreDefaultLibraryNames': ['libcmtd.lib', 'libcmt.lib'],
     34                 'AdditionalDependencies': [
     35                   '<(SHARED_INTERMEDIATE_DIR)/allocator/libcmt.lib'
     36                 ],
     37               },
     38             },
     39           },
     40         },
     41         'conditions': [
     42           ['OS=="win"', {
     43             'defines': [
     44               'PERFTOOLS_DLL_DECL=',
     45             ],
     46           }],
     47         ],
     48       },
     49       'sources': [
     50         # Generated for our configuration from tcmalloc's build
     51         # and checked in.
     52         '<(tcmalloc_dir)/src/config.h',
     53         '<(tcmalloc_dir)/src/config_android.h',
     54         '<(tcmalloc_dir)/src/config_linux.h',
     55         '<(tcmalloc_dir)/src/config_win.h',
     56 
     57         # all tcmalloc native and forked files
     58         '<(tcmalloc_dir)/src/addressmap-inl.h',
     59         '<(tcmalloc_dir)/src/base/abort.cc',
     60         '<(tcmalloc_dir)/src/base/abort.h',
     61         '<(tcmalloc_dir)/src/base/arm_instruction_set_select.h',
     62         '<(tcmalloc_dir)/src/base/atomicops-internals-linuxppc.h',
     63         '<(tcmalloc_dir)/src/base/atomicops-internals-arm-generic.h',
     64         '<(tcmalloc_dir)/src/base/atomicops-internals-arm-v6plus.h',
     65         '<(tcmalloc_dir)/src/base/atomicops-internals-macosx.h',
     66         '<(tcmalloc_dir)/src/base/atomicops-internals-windows.h',
     67         '<(tcmalloc_dir)/src/base/atomicops-internals-x86.cc',
     68         '<(tcmalloc_dir)/src/base/atomicops-internals-x86.h',
     69         '<(tcmalloc_dir)/src/base/atomicops.h',
     70         '<(tcmalloc_dir)/src/base/basictypes.h',
     71         '<(tcmalloc_dir)/src/base/commandlineflags.h',
     72         '<(tcmalloc_dir)/src/base/cycleclock.h',
     73         # We don't list dynamic_annotations.c since its copy is already
     74         # present in the dynamic_annotations target.
     75         '<(tcmalloc_dir)/src/base/dynamic_annotations.h',
     76         '<(tcmalloc_dir)/src/base/elf_mem_image.cc',
     77         '<(tcmalloc_dir)/src/base/elf_mem_image.h',
     78         '<(tcmalloc_dir)/src/base/elfcore.h',
     79         '<(tcmalloc_dir)/src/base/googleinit.h',
     80         '<(tcmalloc_dir)/src/base/linux_syscall_support.h',
     81         '<(tcmalloc_dir)/src/base/linuxthreads.cc',
     82         '<(tcmalloc_dir)/src/base/linuxthreads.h',
     83         '<(tcmalloc_dir)/src/base/logging.cc',
     84         '<(tcmalloc_dir)/src/base/logging.h',
     85         '<(tcmalloc_dir)/src/base/low_level_alloc.cc',
     86         '<(tcmalloc_dir)/src/base/low_level_alloc.h',
     87         '<(tcmalloc_dir)/src/base/simple_mutex.h',
     88         '<(tcmalloc_dir)/src/base/spinlock.cc',
     89         '<(tcmalloc_dir)/src/base/spinlock.h',
     90         '<(tcmalloc_dir)/src/base/spinlock_internal.cc',
     91         '<(tcmalloc_dir)/src/base/spinlock_internal.h',
     92         '<(tcmalloc_dir)/src/base/spinlock_linux-inl.h',
     93         '<(tcmalloc_dir)/src/base/spinlock_posix-inl.h',
     94         '<(tcmalloc_dir)/src/base/spinlock_win32-inl.h',
     95         '<(tcmalloc_dir)/src/base/stl_allocator.h',
     96         '<(tcmalloc_dir)/src/base/synchronization_profiling.h',
     97         '<(tcmalloc_dir)/src/base/sysinfo.cc',
     98         '<(tcmalloc_dir)/src/base/sysinfo.h',
     99         '<(tcmalloc_dir)/src/base/thread_annotations.h',
    100         '<(tcmalloc_dir)/src/base/thread_lister.c',
    101         '<(tcmalloc_dir)/src/base/thread_lister.h',
    102         '<(tcmalloc_dir)/src/base/vdso_support.cc',
    103         '<(tcmalloc_dir)/src/base/vdso_support.h',
    104         '<(tcmalloc_dir)/src/central_freelist.cc',
    105         '<(tcmalloc_dir)/src/central_freelist.h',
    106         '<(tcmalloc_dir)/src/common.cc',
    107         '<(tcmalloc_dir)/src/common.h',
    108         '<(tcmalloc_dir)/src/debugallocation.cc',
    109         '<(tcmalloc_dir)/src/deep-heap-profile.cc',
    110         '<(tcmalloc_dir)/src/deep-heap-profile.h',
    111         '<(tcmalloc_dir)/src/free_list.cc',
    112         '<(tcmalloc_dir)/src/free_list.h',
    113         '<(tcmalloc_dir)/src/getpc.h',
    114         '<(tcmalloc_dir)/src/gperftools/heap-checker.h',
    115         '<(tcmalloc_dir)/src/gperftools/heap-profiler.h',
    116         '<(tcmalloc_dir)/src/gperftools/malloc_extension.h',
    117         '<(tcmalloc_dir)/src/gperftools/malloc_extension_c.h',
    118         '<(tcmalloc_dir)/src/gperftools/malloc_hook.h',
    119         '<(tcmalloc_dir)/src/gperftools/malloc_hook_c.h',
    120         '<(tcmalloc_dir)/src/gperftools/profiler.h',
    121         '<(tcmalloc_dir)/src/gperftools/stacktrace.h',
    122         '<(tcmalloc_dir)/src/gperftools/tcmalloc.h',
    123         '<(tcmalloc_dir)/src/heap-checker-bcad.cc',
    124         '<(tcmalloc_dir)/src/heap-checker.cc',
    125         '<(tcmalloc_dir)/src/heap-profile-table.cc',
    126         '<(tcmalloc_dir)/src/heap-profile-table.h',
    127         '<(tcmalloc_dir)/src/heap-profiler.cc',
    128         '<(tcmalloc_dir)/src/internal_logging.cc',
    129         '<(tcmalloc_dir)/src/internal_logging.h',
    130         '<(tcmalloc_dir)/src/libc_override.h',
    131         '<(tcmalloc_dir)/src/libc_override_gcc_and_weak.h',
    132         '<(tcmalloc_dir)/src/libc_override_glibc.h',
    133         '<(tcmalloc_dir)/src/libc_override_osx.h',
    134         '<(tcmalloc_dir)/src/libc_override_redefine.h',
    135         '<(tcmalloc_dir)/src/linked_list.h',
    136         '<(tcmalloc_dir)/src/malloc_extension.cc',
    137         '<(tcmalloc_dir)/src/malloc_hook-inl.h',
    138         '<(tcmalloc_dir)/src/malloc_hook.cc',
    139         '<(tcmalloc_dir)/src/malloc_hook_mmap_freebsd.h',
    140         '<(tcmalloc_dir)/src/malloc_hook_mmap_linux.h',
    141         '<(tcmalloc_dir)/src/maybe_threads.cc',
    142         '<(tcmalloc_dir)/src/maybe_threads.h',
    143         '<(tcmalloc_dir)/src/memfs_malloc.cc',
    144         '<(tcmalloc_dir)/src/memory_region_map.cc',
    145         '<(tcmalloc_dir)/src/memory_region_map.h',
    146         '<(tcmalloc_dir)/src/packed-cache-inl.h',
    147         '<(tcmalloc_dir)/src/page_heap.cc',
    148         '<(tcmalloc_dir)/src/page_heap.h',
    149         '<(tcmalloc_dir)/src/page_heap_allocator.h',
    150         '<(tcmalloc_dir)/src/pagemap.h',
    151         '<(tcmalloc_dir)/src/profile-handler.cc',
    152         '<(tcmalloc_dir)/src/profile-handler.h',
    153         '<(tcmalloc_dir)/src/profiledata.cc',
    154         '<(tcmalloc_dir)/src/profiledata.h',
    155         '<(tcmalloc_dir)/src/profiler.cc',
    156         '<(tcmalloc_dir)/src/raw_printer.cc',
    157         '<(tcmalloc_dir)/src/raw_printer.h',
    158         '<(tcmalloc_dir)/src/sampler.cc',
    159         '<(tcmalloc_dir)/src/sampler.h',
    160         '<(tcmalloc_dir)/src/span.cc',
    161         '<(tcmalloc_dir)/src/span.h',
    162         '<(tcmalloc_dir)/src/stack_trace_table.cc',
    163         '<(tcmalloc_dir)/src/stack_trace_table.h',
    164         '<(tcmalloc_dir)/src/stacktrace.cc',
    165         '<(tcmalloc_dir)/src/stacktrace_arm-inl.h',
    166         '<(tcmalloc_dir)/src/stacktrace_config.h',
    167         '<(tcmalloc_dir)/src/stacktrace_generic-inl.h',
    168         '<(tcmalloc_dir)/src/stacktrace_libunwind-inl.h',
    169         '<(tcmalloc_dir)/src/stacktrace_powerpc-inl.h',
    170         '<(tcmalloc_dir)/src/stacktrace_win32-inl.h',
    171         '<(tcmalloc_dir)/src/stacktrace_with_context.cc',
    172         '<(tcmalloc_dir)/src/stacktrace_x86-inl.h',
    173         '<(tcmalloc_dir)/src/static_vars.cc',
    174         '<(tcmalloc_dir)/src/static_vars.h',
    175         '<(tcmalloc_dir)/src/symbolize.cc',
    176         '<(tcmalloc_dir)/src/symbolize.h',
    177         '<(tcmalloc_dir)/src/system-alloc.cc',
    178         '<(tcmalloc_dir)/src/system-alloc.h',
    179         '<(tcmalloc_dir)/src/tcmalloc.cc',
    180         '<(tcmalloc_dir)/src/tcmalloc_guard.h',
    181         '<(tcmalloc_dir)/src/thread_cache.cc',
    182         '<(tcmalloc_dir)/src/thread_cache.h',
    183         '<(tcmalloc_dir)/src/windows/config.h',
    184         '<(tcmalloc_dir)/src/windows/get_mangled_names.cc',
    185         '<(tcmalloc_dir)/src/windows/gperftools/tcmalloc.h',
    186         '<(tcmalloc_dir)/src/windows/ia32_modrm_map.cc',
    187         '<(tcmalloc_dir)/src/windows/ia32_opcode_map.cc',
    188         '<(tcmalloc_dir)/src/windows/mingw.h',
    189         '<(tcmalloc_dir)/src/windows/mini_disassembler.cc',
    190         '<(tcmalloc_dir)/src/windows/mini_disassembler.h',
    191         '<(tcmalloc_dir)/src/windows/mini_disassembler_types.h',
    192         '<(tcmalloc_dir)/src/windows/override_functions.cc',
    193         '<(tcmalloc_dir)/src/windows/patch_functions.cc',
    194         '<(tcmalloc_dir)/src/windows/port.cc',
    195         '<(tcmalloc_dir)/src/windows/port.h',
    196         '<(tcmalloc_dir)/src/windows/preamble_patcher.cc',
    197         '<(tcmalloc_dir)/src/windows/preamble_patcher.h',
    198         '<(tcmalloc_dir)/src/windows/preamble_patcher_with_stub.cc',
    199 
    200         'allocator_shim.cc',
    201         'allocator_shim.h',
    202         'debugallocation_shim.cc',
    203         'generic_allocators.cc',
    204         'win_allocator.cc',
    205       ],
    206       # sources! means that these are not compiled directly.
    207       'sources!': [
    208         # Included by allocator_shim.cc for maximal inlining.
    209         'generic_allocators.cc',
    210         'win_allocator.cc',
    211 
    212         # Included by debugallocation_shim.cc.
    213         '<(tcmalloc_dir)/src/debugallocation.cc',
    214         '<(tcmalloc_dir)/src/tcmalloc.cc',
    215 
    216         # We simply don't use these, but list them above so that IDE
    217         # users can view the full available source for reference, etc.
    218         '<(tcmalloc_dir)/src/addressmap-inl.h',
    219         '<(tcmalloc_dir)/src/base/atomicops-internals-linuxppc.h',
    220         '<(tcmalloc_dir)/src/base/atomicops-internals-macosx.h',
    221         '<(tcmalloc_dir)/src/base/atomicops-internals-x86-msvc.h',
    222         '<(tcmalloc_dir)/src/base/atomicops-internals-x86.cc',
    223         '<(tcmalloc_dir)/src/base/atomicops-internals-x86.h',
    224         '<(tcmalloc_dir)/src/base/atomicops.h',
    225         '<(tcmalloc_dir)/src/base/basictypes.h',
    226         '<(tcmalloc_dir)/src/base/commandlineflags.h',
    227         '<(tcmalloc_dir)/src/base/cycleclock.h',
    228         '<(tcmalloc_dir)/src/base/elf_mem_image.h',
    229         '<(tcmalloc_dir)/src/base/elfcore.h',
    230         '<(tcmalloc_dir)/src/base/googleinit.h',
    231         '<(tcmalloc_dir)/src/base/linux_syscall_support.h',
    232         '<(tcmalloc_dir)/src/base/simple_mutex.h',
    233         '<(tcmalloc_dir)/src/base/spinlock_linux-inl.h',
    234         '<(tcmalloc_dir)/src/base/spinlock_posix-inl.h',
    235         '<(tcmalloc_dir)/src/base/spinlock_win32-inl.h',
    236         '<(tcmalloc_dir)/src/base/stl_allocator.h',
    237         '<(tcmalloc_dir)/src/base/thread_annotations.h',
    238         '<(tcmalloc_dir)/src/getpc.h',
    239         '<(tcmalloc_dir)/src/gperftools/heap-checker.h',
    240         '<(tcmalloc_dir)/src/gperftools/heap-profiler.h',
    241         '<(tcmalloc_dir)/src/gperftools/malloc_extension.h',
    242         '<(tcmalloc_dir)/src/gperftools/malloc_extension_c.h',
    243         '<(tcmalloc_dir)/src/gperftools/malloc_hook.h',
    244         '<(tcmalloc_dir)/src/gperftools/malloc_hook_c.h',
    245         '<(tcmalloc_dir)/src/gperftools/profiler.h',
    246         '<(tcmalloc_dir)/src/gperftools/stacktrace.h',
    247         '<(tcmalloc_dir)/src/gperftools/tcmalloc.h',
    248         '<(tcmalloc_dir)/src/heap-checker-bcad.cc',
    249         '<(tcmalloc_dir)/src/heap-checker.cc',
    250         '<(tcmalloc_dir)/src/libc_override.h',
    251         '<(tcmalloc_dir)/src/libc_override_gcc_and_weak.h',
    252         '<(tcmalloc_dir)/src/libc_override_glibc.h',
    253         '<(tcmalloc_dir)/src/libc_override_osx.h',
    254         '<(tcmalloc_dir)/src/libc_override_redefine.h',
    255         '<(tcmalloc_dir)/src/malloc_hook_mmap_freebsd.h',
    256         '<(tcmalloc_dir)/src/malloc_hook_mmap_linux.h',
    257         '<(tcmalloc_dir)/src/memfs_malloc.cc',
    258         '<(tcmalloc_dir)/src/packed-cache-inl.h',
    259         '<(tcmalloc_dir)/src/page_heap_allocator.h',
    260         '<(tcmalloc_dir)/src/pagemap.h',
    261         '<(tcmalloc_dir)/src/stacktrace_arm-inl.h',
    262         '<(tcmalloc_dir)/src/stacktrace_config.h',
    263         '<(tcmalloc_dir)/src/stacktrace_generic-inl.h',
    264         '<(tcmalloc_dir)/src/stacktrace_libunwind-inl.h',
    265         '<(tcmalloc_dir)/src/stacktrace_powerpc-inl.h',
    266         '<(tcmalloc_dir)/src/stacktrace_win32-inl.h',
    267         '<(tcmalloc_dir)/src/stacktrace_with_context.cc',
    268         '<(tcmalloc_dir)/src/stacktrace_x86-inl.h',
    269         '<(tcmalloc_dir)/src/tcmalloc_guard.h',
    270         '<(tcmalloc_dir)/src/windows/config.h',
    271         '<(tcmalloc_dir)/src/windows/gperftools/tcmalloc.h',
    272         '<(tcmalloc_dir)/src/windows/get_mangled_names.cc',
    273         '<(tcmalloc_dir)/src/windows/ia32_modrm_map.cc',
    274         '<(tcmalloc_dir)/src/windows/ia32_opcode_map.cc',
    275         '<(tcmalloc_dir)/src/windows/mingw.h',
    276         '<(tcmalloc_dir)/src/windows/mini_disassembler.cc',
    277         '<(tcmalloc_dir)/src/windows/mini_disassembler.h',
    278         '<(tcmalloc_dir)/src/windows/mini_disassembler_types.h',
    279         '<(tcmalloc_dir)/src/windows/override_functions.cc',
    280         '<(tcmalloc_dir)/src/windows/patch_functions.cc',
    281         '<(tcmalloc_dir)/src/windows/preamble_patcher.cc',
    282         '<(tcmalloc_dir)/src/windows/preamble_patcher.h',
    283         '<(tcmalloc_dir)/src/windows/preamble_patcher_with_stub.cc',
    284       ],
    285       'dependencies': [
    286         '../third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
    287       ],
    288       'msvs_settings': {
    289         # TODO(sgk):  merge this with build/common.gypi settings
    290         'VCLibrarianTool': {
    291           'AdditionalOptions': ['/ignore:4006,4221'],
    292         },
    293         'VCLinkerTool': {
    294           'AdditionalOptions': ['/ignore:4006'],
    295         },
    296       },
    297       'configurations': {
    298         'Debug_Base': {
    299           'msvs_settings': {
    300             'VCCLCompilerTool': {
    301               'RuntimeLibrary': '0',
    302             },
    303           },
    304           'variables': {
    305             # Provide a way to force disable debugallocation in Debug builds,
    306             # e.g. for profiling (it's more rare to profile Debug builds,
    307             # but people sometimes need to do that).
    308             'disable_debugallocation%': 0,
    309           },
    310           'conditions': [
    311             # TODO(phajdan.jr): Also enable on Windows.
    312             ['disable_debugallocation==0 and OS!="win"', {
    313               'defines': [
    314                 # Use debugallocation for Debug builds to catch problems early
    315                 # and cleanly, http://crbug.com/30715 .
    316                 'TCMALLOC_FOR_DEBUGALLOCATION',
    317               ],
    318             }],
    319           ],
    320         },
    321       },
    322       # Disable the heap checker in tcmalloc.
    323       'defines': [
    324         'NO_HEAP_CHECK',
    325       ],
    326       'conditions': [
    327         ['OS=="linux" and clang_type_profiler==1', {
    328           'dependencies': [
    329             'type_profiler_tcmalloc',
    330           ],
    331           # It is undoing dependencies and cflags_cc for type_profiler which
    332           # build/common.gypi injects into all targets.
    333           'dependencies!': [
    334             'type_profiler',
    335           ],
    336           'cflags_cc!': [
    337             '-fintercept-allocation-functions',
    338           ],
    339         }],
    340         ['OS=="win"', {
    341           'defines': [
    342             'PERFTOOLS_DLL_DECL=',
    343           ],
    344           'defines!': [
    345             # tcmalloc source files unconditionally define this, remove it from
    346             # the list of defines that common.gypi defines globally.
    347             'NOMINMAX',
    348           ],
    349           'dependencies': [
    350             'libcmt',
    351           ],
    352           'include_dirs': [
    353             '<(tcmalloc_dir)/src/windows',
    354           ],
    355           'sources!': [
    356             '<(tcmalloc_dir)/src/base/elf_mem_image.cc',
    357             '<(tcmalloc_dir)/src/base/elf_mem_image.h',
    358             '<(tcmalloc_dir)/src/base/linuxthreads.cc',
    359             '<(tcmalloc_dir)/src/base/linuxthreads.h',
    360             '<(tcmalloc_dir)/src/base/vdso_support.cc',
    361             '<(tcmalloc_dir)/src/base/vdso_support.h',
    362             '<(tcmalloc_dir)/src/maybe_threads.cc',
    363             '<(tcmalloc_dir)/src/maybe_threads.h',
    364             '<(tcmalloc_dir)/src/symbolize.h',
    365             '<(tcmalloc_dir)/src/system-alloc.cc',
    366             '<(tcmalloc_dir)/src/system-alloc.h',
    367 
    368             # included by allocator_shim.cc
    369             'debugallocation_shim.cc',
    370           ],
    371         }],
    372         ['OS=="win" or profiling!=1', {
    373           'sources!': [
    374             # cpuprofiler
    375             '<(tcmalloc_dir)/src/base/thread_lister.c',
    376             '<(tcmalloc_dir)/src/base/thread_lister.h',
    377             '<(tcmalloc_dir)/src/profiledata.cc',
    378             '<(tcmalloc_dir)/src/profiledata.h',
    379             '<(tcmalloc_dir)/src/profile-handler.cc',
    380             '<(tcmalloc_dir)/src/profile-handler.h',
    381             '<(tcmalloc_dir)/src/profiler.cc',
    382           ],
    383         }],
    384         ['OS=="linux" or OS=="freebsd" or OS=="solaris" or OS=="android"', {
    385           'sources!': [
    386             '<(tcmalloc_dir)/src/system-alloc.h',
    387             '<(tcmalloc_dir)/src/windows/port.cc',
    388             '<(tcmalloc_dir)/src/windows/port.h',
    389 
    390             # TODO(willchan): Support allocator shim later on.
    391             'allocator_shim.cc',
    392           ],
    393           # We enable all warnings by default, but upstream disables a few.
    394           # Keep "-Wno-*" flags in sync with upstream by comparing against:
    395           # http://code.google.com/p/google-perftools/source/browse/trunk/Makefile.am
    396           'cflags': [
    397             '-Wno-sign-compare',
    398             '-Wno-unused-result',
    399           ],
    400           'cflags!': [
    401             '-fvisibility=hidden',
    402           ],
    403           'link_settings': {
    404             'ldflags': [
    405               # Don't let linker rip this symbol out, otherwise the heap&cpu
    406               # profilers will not initialize properly on startup.
    407               '-Wl,-uIsHeapProfilerRunning,-uProfilerStart',
    408               # Do the same for heap leak checker.
    409               '-Wl,-u_Z21InitialMallocHook_NewPKvj,-u_Z22InitialMallocHook_MMapPKvS0_jiiix,-u_Z22InitialMallocHook_SbrkPKvi',
    410               '-Wl,-u_Z21InitialMallocHook_NewPKvm,-u_Z22InitialMallocHook_MMapPKvS0_miiil,-u_Z22InitialMallocHook_SbrkPKvl',
    411               '-Wl,-u_ZN15HeapLeakChecker12IgnoreObjectEPKv,-u_ZN15HeapLeakChecker14UnIgnoreObjectEPKv',
    412           ]},
    413         }],
    414         [ 'use_vtable_verify==1', {
    415           'cflags': [
    416             '-fvtable-verify=preinit',
    417           ],
    418         }],
    419         ['order_profiling != 0', {
    420           'target_conditions' : [
    421             ['_toolset=="target"', {
    422               'cflags!': [ '-finstrument-functions' ],
    423             }],
    424           ],
    425         }],
    426       ],
    427     },
    428     {
    429       # This library is linked in to src/base.gypi:base and allocator_unittests
    430       # It can't depend on either and nothing else should depend on it - all
    431       # other code should use the interfaced provided by base.
    432       'target_name': 'allocator_extension_thunks',
    433       'type': 'static_library',
    434       'sources': [
    435         'allocator_extension_thunks.cc',
    436         'allocator_extension_thunks.h',
    437       ],
    438       'toolsets': ['host', 'target'],
    439       'include_dirs': [
    440         '../../'
    441       ],
    442       'conditions': [
    443         ['OS=="linux" and clang_type_profiler==1', {
    444           # It is undoing dependencies and cflags_cc for type_profiler which
    445           # build/common.gypi injects into all targets.
    446           'dependencies!': [
    447             'type_profiler',
    448           ],
    449           'cflags_cc!': [
    450             '-fintercept-allocation-functions',
    451           ],
    452         }],
    453       ],
    454     },
    455    ],
    456   'conditions': [
    457     ['OS=="win"', {
    458       'targets': [
    459         {
    460           'target_name': 'libcmt',
    461           'type': 'none',
    462           'actions': [
    463             {
    464               'action_name': 'libcmt',
    465               'inputs': [
    466                 'prep_libc.py',
    467               ],
    468               'outputs': [
    469                 '<(SHARED_INTERMEDIATE_DIR)/allocator/libcmt.lib',
    470               ],
    471               'action': [
    472                 'python',
    473                 'prep_libc.py',
    474                 '$(VCInstallDir)lib',
    475                 '<(SHARED_INTERMEDIATE_DIR)/allocator',
    476                 '<(target_arch)',
    477               ],
    478             },
    479           ],
    480         },
    481         {
    482           'target_name': 'allocator_unittests',
    483           'type': 'executable',
    484           'dependencies': [
    485             'allocator',
    486             'allocator_extension_thunks',
    487             '../../testing/gtest.gyp:gtest',
    488           ],
    489           'include_dirs': [
    490             '.',
    491             '<(tcmalloc_dir)/src/base',
    492             '<(tcmalloc_dir)/src',
    493             '../..',
    494           ],
    495           'sources': [
    496             'allocator_unittest.cc',
    497             '../profiler/alternate_timer.cc',
    498             '../profiler/alternate_timer.h',
    499           ],
    500         },
    501         {
    502           'target_name': 'tcmalloc_unittest',
    503           'type': 'executable',
    504           'sources': [
    505             'tcmalloc_unittest.cc',
    506           ],
    507           'include_dirs': [
    508             '../..',
    509             # For constants of TCMalloc.
    510             '<(tcmalloc_dir)/src',
    511           ],
    512           'dependencies': [
    513             '../../testing/gtest.gyp:gtest',
    514             '../base.gyp:base',
    515             'allocator',
    516           ],
    517         },
    518       ],
    519     }],
    520     ['OS=="win" and target_arch=="ia32"', {
    521       'targets': [
    522         {
    523           'target_name': 'allocator_extension_thunks_win64',
    524           'type': 'static_library',
    525           'sources': [
    526             'allocator_extension_thunks.cc',
    527             'allocator_extension_thunks.h',
    528           ],
    529           'toolsets': ['host', 'target'],
    530           'include_dirs': [
    531             '../../'
    532           ],
    533           'configurations': {
    534             'Common_Base': {
    535               'msvs_target_platform': 'x64',
    536             },
    537           },
    538         },
    539       ],
    540     }],
    541     ['OS=="linux" and clang_type_profiler==1', {
    542       # Some targets in this section undo dependencies and cflags_cc for
    543       # type_profiler which build/common.gypi injects into all targets.
    544       'targets': [
    545         {
    546           'target_name': 'type_profiler',
    547           'type': 'static_library',
    548           'dependencies!': [
    549             'type_profiler',
    550           ],
    551           'cflags_cc!': [
    552             '-fintercept-allocation-functions',
    553           ],
    554           'include_dirs': [
    555             '../..',
    556           ],
    557           'sources': [
    558             'type_profiler.cc',
    559             'type_profiler.h',
    560             'type_profiler_control.h',
    561           ],
    562           'toolsets': ['host', 'target'],
    563         },
    564         {
    565           'target_name': 'type_profiler_tcmalloc',
    566           'type': 'static_library',
    567           'dependencies!': [
    568             'type_profiler',
    569           ],
    570           'cflags_cc!': [
    571             '-fintercept-allocation-functions',
    572           ],
    573           'include_dirs': [
    574             '<(tcmalloc_dir)/src',
    575             '../..',
    576           ],
    577           'sources': [
    578             'type_profiler_tcmalloc.cc',
    579             'type_profiler_tcmalloc.h',
    580             '<(tcmalloc_dir)/src/gperftools/type_profiler_map.h',
    581             '<(tcmalloc_dir)/src/type_profiler_map.cc',
    582           ],
    583         },
    584         {
    585           'target_name': 'type_profiler_unittests',
    586           'type': 'executable',
    587           'dependencies': [
    588             '../../testing/gtest.gyp:gtest',
    589             '../base.gyp:base',
    590             'allocator',
    591             'type_profiler_tcmalloc',
    592           ],
    593           'include_dirs': [
    594             '../..',
    595           ],
    596           'sources': [
    597             'type_profiler_control.cc',
    598             'type_profiler_control.h',
    599             'type_profiler_unittest.cc',
    600           ],
    601         },
    602         {
    603           'target_name': 'type_profiler_map_unittests',
    604           'type': 'executable',
    605           'dependencies': [
    606             '../../testing/gtest.gyp:gtest',
    607             '../base.gyp:base',
    608             'allocator',
    609           ],
    610           'dependencies!': [
    611             'type_profiler',
    612           ],
    613           'cflags_cc!': [
    614             '-fintercept-allocation-functions',
    615           ],
    616           'include_dirs': [
    617             '<(tcmalloc_dir)/src',
    618             '../..',
    619           ],
    620           'sources': [
    621             'type_profiler_map_unittest.cc',
    622             '<(tcmalloc_dir)/src/gperftools/type_profiler_map.h',
    623             '<(tcmalloc_dir)/src/type_profiler_map.cc',
    624           ],
    625         },
    626       ],
    627     }],
    628   ],
    629 }
    630