| OLD | NEW |
| 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 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 | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import("//build/config/allocator.gni") | 5 import("//build/config/allocator.gni") |
| 6 | 6 |
| 7 # Only executables and not libraries should depend on the allocator target; | 7 # Only executables and not libraries should depend on the allocator target; |
| 8 # only the application (the final executable) knows what allocator makes sense. | 8 # only the application (the final executable) knows what allocator makes sense. |
| 9 # This "allocator" meta-target will forward to the default allocator according | 9 # This "allocator" meta-target will forward to the default allocator according |
| 10 # to the build settings. | 10 # to the build settings. |
| 11 group("allocator") { | 11 group("allocator") { |
| 12 public_deps = [] |
| 12 if (use_allocator == "tcmalloc") { | 13 if (use_allocator == "tcmalloc") { |
| 13 deps = [ | 14 public_deps += [ ":tcmalloc" ] |
| 14 ":tcmalloc", | 15 } |
| 15 ] | 16 |
| 17 # This condition expresses the win_use_allocator_shim in the GYP build. |
| 18 if (is_win && !is_component_build) { |
| 19 public_deps += [ ":allocator_shim" ] |
| 16 } | 20 } |
| 17 } | 21 } |
| 18 | 22 |
| 23 # This config defines ALLOCATOR_SHIM in the same conditions that the allocator |
| 24 # shim will be used by the allocator target. |
| 25 # |
| 26 # TODO(brettw) this is only used in one place and is kind of mess, because it |
| 27 # assumes that the library using it will eventually be linked with |
| 28 # //base/allocator in the default way. Clean this up and delete this. |
| 29 config("allocator_shim_define") { |
| 30 if (is_win && !is_component_build) { |
| 31 defines = [ "ALLOCATOR_SHIM" ] |
| 32 } |
| 33 } |
| 34 |
| 19 # This config and libc modification are only used on Windows. | 35 # This config and libc modification are only used on Windows. |
| 20 if (is_win) { | 36 if (is_win) { |
| 21 import("//build/config/win/visual_studio_version.gni") | 37 import("//build/config/win/visual_studio_version.gni") |
| 22 | 38 |
| 23 config("nocmt") { | 39 config("nocmt") { |
| 24 ldflags = [ | 40 ldflags = [ |
| 25 "/NODEFAULTLIB:libcmt", | 41 "/NODEFAULTLIB:libcmt", |
| 26 "/NODEFAULTLIB:libcmtd", | 42 "/NODEFAULTLIB:libcmtd", |
| 27 ] | 43 ] |
| 28 libs = [ rebase_path("$target_gen_dir/allocator/libcmt.lib") ] | 44 libs = [ rebase_path("$target_gen_dir/allocator/libcmt.lib") ] |
| 29 } | 45 } |
| 30 | 46 |
| 31 action("prep_libc") { | 47 action("prep_libc") { |
| 32 script = "prep_libc.py" | 48 script = "prep_libc.py" |
| 33 outputs = [ | 49 outputs = [ |
| 34 "$target_gen_dir/allocator/libcmt.lib", | 50 "$target_gen_dir/allocator/libcmt.lib", |
| 35 ] | 51 ] |
| 36 args = [ | 52 args = [ |
| 37 visual_studio_path + "/vc/lib", | 53 visual_studio_path + "/vc/lib", |
| 38 rebase_path("$target_gen_dir/allocator"), | 54 rebase_path("$target_gen_dir/allocator"), |
| 39 current_cpu, | 55 current_cpu, |
| 40 ] | 56 ] |
| 41 } | 57 } |
| 58 |
| 59 source_set("allocator_shim") { |
| 60 sources = [ |
| 61 "allocator_shim_win.cc", |
| 62 ] |
| 63 configs -= [ "//build/config/compiler:chromium_code" ] |
| 64 configs += [ "//build/config/compiler:no_chromium_code" ] |
| 65 |
| 66 public_configs = [ ":nocmt" ] |
| 67 deps = [ |
| 68 ":prep_libc", |
| 69 ] |
| 70 } |
| 42 } | 71 } |
| 43 | 72 |
| 44 if (use_allocator == "tcmalloc") { | 73 if (use_allocator == "tcmalloc") { |
| 45 # tcmalloc currently won't compile on Android. | 74 # tcmalloc currently won't compile on Android. |
| 46 source_set("tcmalloc") { | 75 source_set("tcmalloc") { |
| 47 tcmalloc_dir = "//third_party/tcmalloc/chromium" | 76 tcmalloc_dir = "//third_party/tcmalloc/chromium" |
| 48 | 77 |
| 49 # Don't check tcmalloc's includes. These files include various files like | 78 # Don't check tcmalloc's includes. These files include various files like |
| 50 # base/foo.h and they actually refer to tcmalloc's forked copy of base | 79 # base/foo.h and they actually refer to tcmalloc's forked copy of base |
| 51 # rather than the regular one, which confuses the header checker. | 80 # rather than the regular one, which confuses the header checker. |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 "$tcmalloc_dir/src/symbolize.h", | 171 "$tcmalloc_dir/src/symbolize.h", |
| 143 "$tcmalloc_dir/src/system-alloc.cc", | 172 "$tcmalloc_dir/src/system-alloc.cc", |
| 144 "$tcmalloc_dir/src/system-alloc.h", | 173 "$tcmalloc_dir/src/system-alloc.h", |
| 145 | 174 |
| 146 # #included by debugallocation_shim.cc | 175 # #included by debugallocation_shim.cc |
| 147 #"$tcmalloc_dir/src/tcmalloc.cc", | 176 #"$tcmalloc_dir/src/tcmalloc.cc", |
| 148 "$tcmalloc_dir/src/thread_cache.cc", | 177 "$tcmalloc_dir/src/thread_cache.cc", |
| 149 "$tcmalloc_dir/src/thread_cache.h", | 178 "$tcmalloc_dir/src/thread_cache.h", |
| 150 "$tcmalloc_dir/src/windows/port.cc", | 179 "$tcmalloc_dir/src/windows/port.cc", |
| 151 "$tcmalloc_dir/src/windows/port.h", | 180 "$tcmalloc_dir/src/windows/port.h", |
| 152 "allocator_shim.cc", | |
| 153 "debugallocation_shim.cc", | 181 "debugallocation_shim.cc", |
| 154 | 182 |
| 155 # These are both #included by allocator_shim for maximal linking. | 183 # These are both #included by allocator_shim for maximal linking. |
| 156 #"generic_allocators.cc", | 184 #"generic_allocators.cc", |
| 157 #"win_allocator.cc", | 185 #"win_allocator.cc", |
| 158 ] | 186 ] |
| 159 | 187 |
| 160 # Disable the heap checker in tcmalloc. | 188 # Disable the heap checker in tcmalloc. |
| 161 defines = [ "NO_HEAP_CHECK" ] | 189 defines = [ "NO_HEAP_CHECK" ] |
| 162 | 190 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 178 "$tcmalloc_dir/src/base/linuxthreads.cc", | 206 "$tcmalloc_dir/src/base/linuxthreads.cc", |
| 179 "$tcmalloc_dir/src/base/linuxthreads.h", | 207 "$tcmalloc_dir/src/base/linuxthreads.h", |
| 180 "$tcmalloc_dir/src/base/vdso_support.cc", | 208 "$tcmalloc_dir/src/base/vdso_support.cc", |
| 181 "$tcmalloc_dir/src/base/vdso_support.h", | 209 "$tcmalloc_dir/src/base/vdso_support.h", |
| 182 "$tcmalloc_dir/src/maybe_threads.cc", | 210 "$tcmalloc_dir/src/maybe_threads.cc", |
| 183 "$tcmalloc_dir/src/maybe_threads.h", | 211 "$tcmalloc_dir/src/maybe_threads.h", |
| 184 "$tcmalloc_dir/src/symbolize.h", | 212 "$tcmalloc_dir/src/symbolize.h", |
| 185 "$tcmalloc_dir/src/system-alloc.cc", | 213 "$tcmalloc_dir/src/system-alloc.cc", |
| 186 "$tcmalloc_dir/src/system-alloc.h", | 214 "$tcmalloc_dir/src/system-alloc.h", |
| 187 | 215 |
| 188 # included by allocator_shim.cc | |
| 189 "debugallocation_shim.cc", | |
| 190 | |
| 191 # cpuprofiler | 216 # cpuprofiler |
| 192 "$tcmalloc_dir/src/base/thread_lister.c", | 217 "$tcmalloc_dir/src/base/thread_lister.c", |
| 193 "$tcmalloc_dir/src/base/thread_lister.h", | 218 "$tcmalloc_dir/src/base/thread_lister.h", |
| 194 "$tcmalloc_dir/src/profile-handler.cc", | 219 "$tcmalloc_dir/src/profile-handler.cc", |
| 195 "$tcmalloc_dir/src/profile-handler.h", | 220 "$tcmalloc_dir/src/profile-handler.h", |
| 196 "$tcmalloc_dir/src/profiledata.cc", | 221 "$tcmalloc_dir/src/profiledata.cc", |
| 197 "$tcmalloc_dir/src/profiledata.h", | 222 "$tcmalloc_dir/src/profiledata.h", |
| 198 "$tcmalloc_dir/src/profiler.cc", | 223 "$tcmalloc_dir/src/profiler.cc", |
| 199 ] | 224 ] |
| 200 defines += [ "PERFTOOLS_DLL_DECL=" ] | 225 defines += [ "PERFTOOLS_DLL_DECL=" ] |
| 201 | 226 |
| 202 configs -= [ | 227 configs -= [ |
| 203 # Tcmalloc defines this itself, and we don't want duplicate definition | 228 # Tcmalloc defines this itself, and we don't want duplicate definition |
| 204 # warnings. | 229 # warnings. |
| 205 "//build/config/win:nominmax", | 230 "//build/config/win:nominmax", |
| 206 ] | 231 ] |
| 207 | 232 |
| 208 public_configs = [ ":nocmt" ] | 233 public_configs = [ ":nocmt" ] |
| 209 | 234 |
| 210 deps += [ ":prep_libc" ] | 235 deps += [ ":prep_libc" ] |
| 211 } | 236 } |
| 212 | 237 |
| 213 if (is_linux || is_android) { | 238 if (is_linux || is_android) { |
| 214 sources -= [ | 239 sources -= [ |
| 215 "$tcmalloc_dir/src/system-alloc.h", | 240 "$tcmalloc_dir/src/system-alloc.h", |
| 216 "$tcmalloc_dir/src/windows/port.cc", | 241 "$tcmalloc_dir/src/windows/port.cc", |
| 217 "$tcmalloc_dir/src/windows/port.h", | 242 "$tcmalloc_dir/src/windows/port.h", |
| 218 | |
| 219 # TODO(willchan): Support allocator shim later on. | |
| 220 "allocator_shim.cc", | |
| 221 ] | 243 ] |
| 222 | 244 |
| 223 # We enable all warnings by default, but upstream disables a few. | 245 # We enable all warnings by default, but upstream disables a few. |
| 224 # Keep "-Wno-*" flags in sync with upstream by comparing against: | 246 # Keep "-Wno-*" flags in sync with upstream by comparing against: |
| 225 # http://code.google.com/p/google-perftools/source/browse/trunk/Makefile.a
m | 247 # http://code.google.com/p/google-perftools/source/browse/trunk/Makefile.a
m |
| 226 cflags = [ | 248 cflags = [ |
| 227 "-Wno-sign-compare", | 249 "-Wno-sign-compare", |
| 228 "-Wno-unused-result", | 250 "-Wno-unused-result", |
| 229 ] | 251 ] |
| 230 | 252 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 261 visibility = [ "//base/*" ] | 283 visibility = [ "//base/*" ] |
| 262 sources = [ | 284 sources = [ |
| 263 "allocator_extension_thunks.cc", | 285 "allocator_extension_thunks.cc", |
| 264 "allocator_extension_thunks.h", | 286 "allocator_extension_thunks.h", |
| 265 ] | 287 ] |
| 266 if (is_android && !is_debug) { | 288 if (is_android && !is_debug) { |
| 267 configs -= [ "//build/config/compiler:optimize" ] | 289 configs -= [ "//build/config/compiler:optimize" ] |
| 268 configs += [ "//build/config/compiler:optimize_max" ] | 290 configs += [ "//build/config/compiler:optimize_max" ] |
| 269 } | 291 } |
| 270 } | 292 } |
| OLD | NEW |