[package]
name = "haybale"
version = "0.6.4"
authors = ["Craig Disselkoen <craigdissel@gmail.com>"]
edition = "2018"
description = "Symbolic execution of LLVM IR, written in Rust"
documentation = "https://docs.rs/haybale"
repository = "https://github.com/PLSysSec/haybale"
readme = "README.md"
keywords = ["symbolic", "llvm", "IR", "SMT"]
license = "MIT"

[dependencies]
llvm-ir = "0.7.3"
boolector = "0.4.1"
either = "1.5.3"
itertools = "0.9.0"
reduce = "0.1"
cpp_demangle = "0.2"
rustc-demangle = "0.1"
log = "0.4.8"
rustversion = "1.0"

[dev-dependencies]
env_logger = "0.7.1"

[features]
# Select the LLVM version to be compatible with.
# You _must_ enable exactly one of the following features.
llvm-9 = ["llvm-ir/llvm-9", "llvm-9-or-lower", "llvm-9-or-greater"]
llvm-10 = ["llvm-ir/llvm-10", "llvm-10-or-lower", "llvm-10-or-greater"]
llvm-11 = ["llvm-ir/llvm-11", "llvm-11-or-lower", "llvm-11-or-greater"]

###
# For convenience, these automatically-enabled features allow us to avoid
# checking complex combinations of features all the time. they are not meant to
# be manually enabled, use the above llvm-x features instead
llvm-9-or-greater = []
llvm-10-or-greater = ["llvm-9-or-greater"]
llvm-11-or-greater = ["llvm-10-or-greater"]

llvm-9-or-lower = ["llvm-10-or-lower"]
llvm-10-or-lower = ["llvm-11-or-lower"]
llvm-11-or-lower = []
###

# These features select the corresponding LLVM version, and require an exact
# match between the system LLVM version and the LLVM version chosen here. For
# more information, see the "strict-versioning" feature on `llvm-sys`.
llvm-9-strict = ["llvm-9", "llvm-ir/llvm-9-strict"]
llvm-10-strict = ["llvm-10", "llvm-ir/llvm-10-strict"]
llvm-11-strict = ["llvm-11", "llvm-ir/llvm-11-strict"]

[package.metadata.docs.rs]
# Generate docs.rs documentation with the llvm-10 feature
features = ["llvm-10"]
