blob: 34d348e8c85f059293775d19942b1bc485d49f1d [file] [log] [blame]
# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
config("config") {
defines = [ "NO_LIBDEXFILE_SUPPORT" ]
include_dirs = [
"fuchsia",
"include",
]
}
config("config_private") {
defines = [ "FUCHSIA" ]
if (is_mac) {
include_dirs = [ target_gen_dir ]
}
}
static_library("libunwindstack") {
public_configs = [ ":config" ]
configs += [ ":config_private" ]
sources = [
"ArmExidx.cpp",
"DwarfCfa.cpp",
"DwarfEhFrameWithHdr.cpp",
"DwarfMemory.cpp",
"DwarfOp.cpp",
"DwarfSection.cpp",
"Elf.cpp",
"ElfInterface.cpp",
"ElfInterfaceArm.cpp",
"Global.cpp",
"JitDebug.cpp",
"MapInfo.cpp",
"Symbols.cpp",
"Unwinder.cpp",
"fuchsia/LogFuchsia.cpp",
"fuchsia/MapsFuchsia.cpp",
# These files are Android-specific and aren't compiled for Fuchsia.
#"DexFile.cpp",
#"DexFiles.cpp",
#"LocalUnwinder.cpp",
#"Log.cpp",
#"Maps.cpp",
]
if (current_toolchain != host_toolchain) {
# This project does some locking but doesn't annotate usage.
configs -= [ "//build/config/fuchsia:thread_safety_annotations" ]
sources += [ "fuchsia/MemoryFuchsia.cpp" ]
if (target_cpu == "x64") {
sources += [ "fuchsia/RegsFuchsiaX86_64.cpp" ]
} else if (target_cpu == "arm64") {
sources += [ "fuchsia/RegsFuchsiaArm64.cpp" ]
}
} else {
sources += [
"Memory.cpp",
"Regs.cpp",
"RegsArm.cpp",
"RegsArm64.cpp",
"RegsMips.cpp",
"RegsMips64.cpp",
"RegsX86.cpp",
"RegsX86_64.cpp",
]
}
deps = [
"//src/lib/fxl",
]
if (is_mac) {
deps += [ ":copy_elf_h" ]
}
}
if (is_mac) {
# libunwindstack needs elf.h which doesn't come on Mac. Copy the one out of
# Zircon and use it in this build.
copy("copy_elf_h") {
sources = [
"//zircon/third_party/ulib/musl/include/elf.h",
]
outputs = [
"$target_gen_dir/elf.h",
]
}
}