Index: base/allocator/BUILD.gn |
diff --git a/base/allocator/BUILD.gn b/base/allocator/BUILD.gn |
index 0049800cb8620724cc14d2985aace93d85c195a7..887d544f197862bbdb746d65bbd6e4db906ba7fb 100644 |
--- a/base/allocator/BUILD.gn |
+++ b/base/allocator/BUILD.gn |
@@ -2,6 +2,7 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
+import("//build/buildflag_header.gni") |
import("//build/config/allocator.gni") |
import("//build/config/compiler/compiler.gni") |
@@ -294,3 +295,35 @@ if (use_allocator == "tcmalloc") { |
deps += [ "//base/third_party/dynamic_annotations" ] |
} |
} # use_allocator == "tcmalloc" |
+ |
+buildflag_header("features") { |
+ header = "features.h" |
+ flags = [ "USE_EXPERIMENTAL_ALLOCATOR_SHIM=$use_experimental_allocator_shim" ] |
+} |
+ |
+if (use_experimental_allocator_shim) { |
+ source_set("unified_allocator_shim") { |
+ # TODO(primiano): support other platforms, currently this works only on |
+ # Linux/CrOS. http://crbug.com/550886 . |
+ configs += [ "//base:base_implementation" ] # for BASE_EXPORT |
+ visibility = [ "//base:base" ] |
+ sources = [ |
+ "allocator_shim.cc", |
+ "allocator_shim.h", |
+ "allocator_shim_internals.h", |
+ "allocator_shim_override_cpp_symbols.h", |
+ "allocator_shim_override_libc_symbols.h", |
+ ] |
+ if (is_linux && use_allocator == "tcmalloc") { |
+ sources += [ |
+ "allocator_shim_default_dispatch_to_tcmalloc.cc", |
+ "allocator_shim_override_glibc_weak_symbols.h", |
+ ] |
+ deps = [ |
+ ":tcmalloc", |
+ ] |
+ } else if (is_linux && use_allocator == "none") { |
+ sources += [ "allocator_shim_default_dispatch_to_glibc.cc" ] |
+ } |
+ } |
+} |