blob: 0584682705af060b7a234a07cbd8a3627ccc91c0 [file] [log] [blame] [edit]
# Copyright (C) 2019 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import("../../../gn/perfetto.gni")
import("../../../gn/test.gni")
source_set("symbolizer") {
public_deps = [ "../../../include/perfetto/ext/base" ]
deps = [ "../../../gn:default_deps" ]
sources = [
"breakpad_parser.cc",
"breakpad_parser.h",
"breakpad_symbolizer.cc",
"breakpad_symbolizer.h",
"elf.h",
"filesystem.h",
"filesystem_posix.cc",
"filesystem_windows.cc",
"local_symbolizer.cc",
"local_symbolizer.h",
"subprocess.h",
"subprocess_posix.cc",
"subprocess_windows.cc",
"symbolizer.cc",
"symbolizer.h",
]
}
if (enable_perfetto_trace_processor) {
source_set("symbolize_database") {
public_deps = [
":symbolizer",
"../../../include/perfetto/ext/base",
]
deps = [
"../../../gn:default_deps",
"../../../include/perfetto/protozero",
"../../../include/perfetto/trace_processor:trace_processor",
"../../../protos/perfetto/trace:zero",
"../../../protos/perfetto/trace/profiling:zero",
"../../trace_processor/util:build_id",
]
sources = [
"symbolize_database.cc",
"symbolize_database.h",
]
}
}
if (enable_perfetto_llvm_symbolizer) {
_llvm_flags_output =
exec_script("../../../tools/get_llvm_flags.py", [], "scope")
assert(
_llvm_flags_output != [],
"llvm-config not found, but enable_perfetto_llvm_symbolizer is true. Please install a recent LLVM development package (e.g., 'apt install llvm-dev') and ensure llvm-config is in your PATH.")
shared_library("llvm_symbolizer_wrapper") {
sources = [ "llvm_symbolizer_wrapper.cc" ]
public_deps = [ ":llvm_symbolizer_c_api" ]
deps = [ "../../../gn:default_deps" ]
libs = _llvm_flags_output.libs
ldflags = _llvm_flags_output.ldflags
cflags = _llvm_flags_output.cflags
defines = _llvm_flags_output.defines
cflags += [ "-fvisibility=hidden" ] # Not currently necessary, but good for
# future-proofing.
}
source_set("llvm_symbolizer_c_api") {
sources = [ "llvm_symbolizer_c_api.h" ]
deps = [ "../../../gn:default_deps" ]
}
source_set("llvm_symbolizer") {
sources = [
"llvm_symbolizer.cc",
"llvm_symbolizer.h",
]
deps = [
":llvm_symbolizer_c_api",
"../../../gn:default_deps",
"../../../include/perfetto/ext/base",
]
libs = [ "dl" ]
visibility = [
"../../../buildtools/*",
"../../src/trace_processor/*",
"../../trace_processor/perfetto_sql/intrinsics/functions",
"./*",
]
}
}
perfetto_unittest_source_set("unittests") {
testonly = true
deps = [
":symbolizer",
"../../../gn:default_deps",
"../../../gn:gtest_and_gmock",
"../../base:test_support",
]
sources = [
"breakpad_parser_unittest.cc",
"breakpad_symbolizer_unittest.cc",
"local_symbolizer_unittest.cc",
]
if (enable_perfetto_llvm_symbolizer) {
sources += [ "llvm_symbolizer_unittest.cc" ]
deps += [ ":llvm_symbolizer" ]
data_deps = [ ":llvm_symbolizer_wrapper" ]
}
}