[package]
name = "backtrace"
version = "0.3.66"
authors = ["The Rust Project Developers"]
build = "build.rs"
license = "MIT/Apache-2.0"
readme = "README.md"
repository = "https://github.com/rust-lang/backtrace-rs"
homepage = "https://github.com/rust-lang/backtrace-rs"
documentation = "https://docs.rs/backtrace"
description = """
A library to acquire a stack trace (backtrace) at runtime in a Rust program.
"""
autoexamples = true
autotests = true
edition = "2018"

[workspace]
members = ['crates/cpp_smoke_test', 'crates/as-if-std']
exclude = [
   'crates/without_debuginfo',
   'crates/macos_frames_test',
   'crates/line-tables-only',
   'crates/debuglink',
]

[dependencies]
cfg-if = "1.0"
rustc-demangle = "0.1.4"
libc = { version = "0.2.94", default-features = false }

# Optionally enable the ability to serialize a `Backtrace`, controlled through
# the `serialize-*` features below.
serde = { version = "1.0", optional = true, features = ['derive'] }
rustc-serialize = { version = "0.3", optional = true }

# Optionally demangle C++ frames' symbols in backtraces.
cpp_demangle = { default-features = false, version = "0.3.0", optional = true }


# Optional dependencies enabled through the `gimli-symbolize` feature, do not
# use these features directly.
addr2line = { version = "0.17.0", default-features = false }
miniz_oxide = { version = "0.5.0", default-features = false }

[dependencies.object]
version = "0.29.0"
default-features = false
features = ['read_core', 'elf', 'macho', 'pe', 'unaligned', 'archive']

[target.'cfg(windows)'.dependencies]
winapi = { version = "0.3.9", optional = true }

[build-dependencies]
# Only needed for Android, but cannot be target dependent
# https://github.com/rust-lang/cargo/issues/4932
cc = "1.0.67"

[dev-dependencies]
dylib-dep = { path = "crates/dylib-dep" }
libloading = "0.7"

[features]
# By default libstd support and gimli-symbolize is used to symbolize addresses.
default = ["std"]

# Include std support. This enables types like `Backtrace`.
std = []

#=======================================
# Methods of serialization
#
# Various features used for enabling rustc-serialize or syntex codegen.
serialize-rustc = ["rustc-serialize"]
serialize-serde = ["serde"]

#=======================================
# Deprecated/internal features
#
# Only here for backwards compatibility purposes or for internal testing
# purposes. New code should use none of these features.
coresymbolication = []
dbghelp = []
dladdr = []
gimli-symbolize = []
kernel32 = []
libbacktrace = []
libunwind = []
unix-backtrace = []
verify-winapi = [
  'winapi/dbghelp',
  'winapi/handleapi',
  'winapi/libloaderapi',
  'winapi/memoryapi',
  'winapi/minwindef',
  'winapi/processthreadsapi',
  'winapi/synchapi',
  'winapi/tlhelp32',
  'winapi/winbase',
  'winapi/winnt',
]

[[example]]
name = "backtrace"
required-features = ["std"]

[[example]]
name = "raw"
required-features = ["std"]

[[test]]
name = "skip_inner_frames"
required-features = ["std"]

[[test]]
name = "long_fn_name"
required-features = ["std"]

[[test]]
name = "smoke"
required-features = ["std"]
edition = '2018'

[[test]]
name = "accuracy"
required-features = ["std"]
edition = '2018'

[[test]]
name = "concurrent-panics"
required-features = ["std"]
harness = false
