Index: third_party/tcmalloc/BUILD.gn |
diff --git a/third_party/tcmalloc/BUILD.gn b/third_party/tcmalloc/BUILD.gn |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e970559edaf15db86b1f2d0d71e06de051d5e172 |
--- /dev/null |
+++ b/third_party/tcmalloc/BUILD.gn |
@@ -0,0 +1,124 @@ |
+# Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
+# for details. All rights reserved. Use of this source code is governed by a |
+# BSD-style license that can be found in the LICENSE file. |
+ |
+config("internal_config") { |
+ visibility = [ ":*" ] # Only targets in this file can depend on this. |
+ cflags = [ |
+ "-Wall", |
+ "-Wextra", |
+ "-Wno-missing-field-initializers", |
+ "-Wno-sign-compare", |
+ "-Wno-type-limits", |
+ "-Wno-unused-result", |
+ "-Wno-unused-parameter", |
+ "-Wno-unused-function", |
+ "-Wno-vla", |
+ "-g3", |
+ "-ggdb3", |
+ "-fstack-protector", |
+ "-Wa,--noexecstack", |
+ "-fno-omit-frame-pointer", |
+ "-fno-builtin-malloc", |
+ "-fno-builtin-free", |
+ "-fno-builtin-realloc", |
+ "-fno-builtin-calloc", |
+ "-fno-builtin-cfree", |
+ "-fno-builtin-memalign", |
+ "-fno-builtin-posix_memalign", |
+ "-fno-builtin-valloc", |
+ "-fno-builtin-pvalloc", |
+ ] |
+ if (is_clang) { |
+ cflags += [ |
+ "-Wno-unused-const-variable", |
+ ] |
+ } |
+} |
+ |
+config("link_config") { |
+ visibility = [ ":*" ] # Only targets in this file can depend on this. |
+ ldflags = [ |
+ # Don't let linker rip this symbol out, otherwise the heap&cpu |
+ # profilers will not initialize properly on startup. |
+ "-Wl,-uIsHeapProfilerRunning,-uProfilerStart", |
+ ] |
+} |
+ |
+source_set("dynamic_annotations") { |
+ configs -= [ "//build/config/compiler:chromium_code" ] |
+ configs += [ ":internal_config" ] |
+ |
+ include_dirs = [ |
+ "include", |
+ "gperftools/src/base", |
+ "gperftools/src", |
+ ] |
+ |
+ sources = [ |
+ "gperftools/src/base/dynamic_annotations.c", |
+ "gperftools/src/base/dynamic_annotations.h", |
+ ] |
+} |
+ |
+tcmalloc_sources_list = exec_script("../../tools/gypi_to_gn.py", |
+ [rebase_path("tcmalloc_sources.gypi")], |
+ "scope", |
+ ["tcmalloc_sources.gypi"]) |
+ |
+ |
+source_set("tcmalloc") { |
+ configs -= [ "//build/config/compiler:chromium_code" ] |
+ configs += [ ":internal_config" ] |
+ |
+ public_configs = [":link_config"] |
+ |
+ deps = [ |
+ ":dynamic_annotations" |
+ ] |
+ |
+ include_dirs = [ |
+ "include", |
+ "gperftools/src/base", |
+ "gperftools/src", |
+ ] |
+ |
+ # Disable the heap checker in tcmalloc. |
+ defines = [ |
+ "ENABLE_EMERGENCY_MALLOC", |
+ "NO_HEAP_CHECK", |
+ # Disable debug even in a Dart Debug build. It is too slow. |
+ "NDEBUG", |
+ ] |
+ |
+ # Disable stack sampling for heap profiling in Product builds. |
+ if (is_product) { |
+ defines += [ |
+ "NO_TCMALLOC_SAMPLES", |
+ ] |
+ } |
+ |
+ cflags = [ |
+ "-Wnon-virtual-dtor", |
+ "-Woverloaded-virtual", |
+ "-fno-rtti", |
+ "-fpermissive", |
+ ] |
+ |
+ set_sources_assignment_filter([ |
+ # No debug allocator. |
+ "gperftools/src/debugallocation.cc", |
+ # Not needed when using emergency malloc. |
+ "gperftools/src/fake_stacktrace_scope.cc", |
+ # Not using the cpuprofiler |
+ "gperftools/src/base/thread_lister.c", |
+ "gperftools/src/base/thread_lister.h", |
+ "gperftools/src/profile-handler.cc", |
+ "gperftools/src/profile-handler.h", |
+ "gperftools/src/profiledata.cc", |
+ "gperftools/src/profiledata.h", |
+ "gperftools/src/profiler.cc", |
+ ]) |
+ |
+ sources = tcmalloc_sources_list.sources |
+} |