# 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-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/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", ] }