|  | # 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. | 
|  |  | 
|  | import("tcmalloc_sources.gni") | 
|  |  | 
|  | config("internal_config") { | 
|  | visibility = [ ":*" ]  # Only targets in this file can depend on this. | 
|  | cflags = [ | 
|  | "-Wall", | 
|  | "-Wextra", | 
|  | "-Wno-format", | 
|  | "-Wno-missing-field-initializers", | 
|  | "-Wno-sign-compare", | 
|  | "-Wno-type-limits", | 
|  | "-Wno-unused-result", | 
|  | "-Wno-unused-parameter", | 
|  | "-Wno-unused-function", | 
|  | "-Wno-unused-but-set-variable", | 
|  | "-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", | 
|  | "-fsized-deallocation", | 
|  | "-faligned-new", | 
|  | ] | 
|  | if (is_clang) { | 
|  | cflags += [ | 
|  | "-Wno-unused-const-variable", | 
|  | "-Wno-implicit-int-float-conversion", | 
|  | ] | 
|  | } | 
|  | if (current_cpu == "arm" && !is_clang) { | 
|  | cflags += [ "-Wno-psabi" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | 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", | 
|  | "//build/config/compiler:clang_stackrealign", | 
|  | ] | 
|  | configs += [ ":internal_config" ] | 
|  |  | 
|  | include_dirs = [ | 
|  | "include", | 
|  | "gperftools/src/base", | 
|  | "gperftools/src", | 
|  | ] | 
|  |  | 
|  | sources = [ | 
|  | "gperftools/src/base/dynamic_annotations.c", | 
|  | "gperftools/src/base/dynamic_annotations.h", | 
|  | ] | 
|  | } | 
|  |  | 
|  | source_set("tcmalloc") { | 
|  | configs -= [ | 
|  | "//build/config/compiler:chromium_code", | 
|  | "//build/config/compiler:clang_stackrealign", | 
|  | "//build/config/compiler:compiler_arm_thumb", | 
|  | ] | 
|  | 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", | 
|  | ] | 
|  |  | 
|  | if (is_product) { | 
|  | # Disable stack sampling for heap profiling in Product builds. | 
|  | defines += [ "NO_TCMALLOC_SAMPLES" ] | 
|  |  | 
|  | # To override the C library functions, we can't hide symbols. | 
|  | configs -= [ "//build/config/gcc:symbol_visibility_hidden" ] | 
|  | } | 
|  |  | 
|  | cflags = [ | 
|  | "-Wnon-virtual-dtor", | 
|  | "-Woverloaded-virtual", | 
|  | "-fno-rtti", | 
|  | "-fpermissive", | 
|  | ] | 
|  |  | 
|  | if (!is_clang) { | 
|  | cflags += [ "-Wno-format" ] | 
|  | } | 
|  |  | 
|  | sources = tcmalloc_sources - [ | 
|  | # 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/profile-handler.cc", | 
|  | "gperftools/src/profile-handler.h", | 
|  | "gperftools/src/profiledata.cc", | 
|  | "gperftools/src/profiledata.h", | 
|  | "gperftools/src/profiler.cc", | 
|  | ] | 
|  | } |