blob: 7238772590ae644a44d02155b086303c24e70f5c [file] [log] [blame]
# 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",
]
}