[package] name = "objdiff-core" version.workspace = true edition.workspace = true rust-version.workspace = true authors.workspace = true license.workspace = true repository.workspace = true readme = "README.md" description = """ A local diffing tool for decompilation projects. """ documentation = "https://docs.rs/objdiff-core" [features] default = ["std"] all = [ # Features "bindings", "build", "config", "dwarf", "serde", # Architectures "arm", "arm64", "mips", "ppc", "x86", "superh" ] # Implicit, used to check if any arch is enabled any-arch = [ "dep:flagset", "dep:heck", "dep:log", "dep:num-traits", "dep:prettyplease", "dep:proc-macro2", "dep:quote", "dep:regex", "dep:similar", "dep:syn", "dep:encoding_rs" ] bindings = [ "dep:prost", "dep:prost-build", ] build = [ "dep:notify", "dep:notify-debouncer-full", "dep:reqwest", "dep:self_update", "dep:shell-escape", "dep:tempfile", "dep:time", "dep:winapi", ] config = [ "dep:globset", "dep:semver", "dep:typed-path", ] dwarf = ["dep:gimli"] serde = [ "dep:pbjson", "dep:pbjson-build", "dep:serde", "dep:serde_json", ] std = [ "anyhow/std", "flagset?/std", "log?/std", "num-traits?/std", "object/std", "prost?/std", "serde?/std", "similar?/std", "typed-path?/std", "dep:filetime", "dep:memmap2", ] mips = [ "any-arch", "dep:cpp_demangle", "dep:cwdemangle", "dep:rabbitizer", ] ppc = [ "any-arch", "dep:cwdemangle", "dep:cwextab", "dep:ppc750cl", "dep:rlwinmdec", ] x86 = [ "any-arch", "dep:cpp_demangle", "dep:iced-x86", "dep:msvc-demangler", ] arm = [ "any-arch", "dep:arm-attr", "dep:cpp_demangle", "dep:unarm", ] arm64 = [ "any-arch", "dep:cpp_demangle", "dep:yaxpeax-arch", "dep:yaxpeax-arm", ] superh = [ "any-arch", ] [package.metadata.docs.rs] features = ["all"] [dependencies] anyhow = { version = "1.0", default-features = false } filetime = { version = "0.2", optional = true } flagset = { version = "0.4", default-features = false, optional = true, git = "https://github.com/enarx/flagset.git", rev = "a1fe9369b3741e43fec45da1998e83b9d78966a2" } itertools = { version = "0.14", default-features = false, features = ["use_alloc"] } log = { version = "0.4", default-features = false, optional = true } memmap2 = { version = "0.9", optional = true } num-traits = { version = "0.2", default-features = false, optional = true } object = { git = "https://github.com/gimli-rs/object", rev = "a74579249e21ab8fcd3a86be588de336f18297cb", default-features = false, features = ["read_core", "elf", "pe"] } pbjson = { version = "0.7", default-features = false, optional = true } prost = { version = "0.13", default-features = false, features = ["prost-derive"], optional = true } regex = { version = "1.11", default-features = false, features = [], optional = true } serde = { version = "1.0", default-features = false, features = ["derive"], optional = true } similar = { version = "2.7", default-features = false, features = ["hashbrown"], optional = true, git = "https://github.com/encounter/similar.git", branch = "no_std" } typed-path = { version = "0.11", default-features = false, optional = true } # config globset = { version = "0.4", default-features = false, optional = true } semver = { version = "1.0", default-features = false, optional = true } serde_json = { version = "1.0", default-features = false, features = ["alloc"], optional = true } # dwarf gimli = { version = "0.31", default-features = false, features = ["read"], optional = true } # ppc cwdemangle = { version = "1.0", optional = true } cwextab = { version = "1.0", optional = true } ppc750cl = { version = "0.3", optional = true } rlwinmdec = { version = "1.1", optional = true } # mips rabbitizer = { version = "2.0.0-alpha.1", default-features = false, features = ["all_extensions"], optional = true } # x86 cpp_demangle = { version = "0.4", default-features = false, features = ["alloc"], optional = true } iced-x86 = { version = "1.21", default-features = false, features = ["decoder", "intel", "gas", "masm", "nasm", "exhaustive_enums", "no_std"], optional = true } msvc-demangler = { version = "0.11", optional = true } # arm unarm = { version = "1.8", optional = true } arm-attr = { version = "0.2", optional = true } # arm64 yaxpeax-arch = { version = "0.3", default-features = false, optional = true } yaxpeax-arm = { version = "0.3", default-features = false, optional = true } # build notify = { version = "8.0.0", optional = true } notify-debouncer-full = { version = "0.5.0", optional = true } shell-escape = { version = "0.1", optional = true } tempfile = { version = "3.19", optional = true } time = { version = "0.3", optional = true } encoding_rs = { version = "0.8.35", optional = true } [target.'cfg(windows)'.dependencies] winapi = { version = "0.3", optional = true } # For Linux static binaries, use rustls [target.'cfg(target_os = "linux")'.dependencies] reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "multipart", "rustls-tls"], optional = true } self_update = { version = "0.42", default-features = false, features = ["rustls"], optional = true } # For all other platforms, use native TLS [target.'cfg(not(target_os = "linux"))'.dependencies] reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "multipart", "default-tls"], optional = true } self_update = { version = "0.42", optional = true } [build-dependencies] heck = { version = "0.5", optional = true } pbjson-build = { version = "0.7", optional = true } prettyplease = { version = "0.2", optional = true } proc-macro2 = { version = "1.0", optional = true } prost-build = { version = "0.13", optional = true } quote = { version = "1.0", optional = true } serde = { version = "1.0", features = ["derive"] } serde_json = { version = "1.0" } syn = { version = "2.0", optional = true } [dev-dependencies] # Enable all features for tests objdiff-core = { path = ".", features = ["all"] } insta = "1.43"