[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" [lib] crate-type = ["cdylib", "rlib"] [features] all = ["config", "dwarf", "mips", "ppc", "x86", "arm", "arm64", "bindings", "build"] any-arch = ["config", "dep:bimap", "dep:strum", "dep:similar", "dep:flagset", "dep:log", "dep:memmap2", "dep:byteorder", "dep:num-traits"] # Implicit, used to check if any arch is enabled bindings = ["dep:serde_json", "dep:prost", "dep:pbjson", "dep:serde", "dep:prost-build", "dep:pbjson-build"] build = ["dep:shell-escape", "dep:path-slash", "dep:winapi", "dep:notify", "dep:notify-debouncer-full", "dep:reqwest", "dep:self_update", "dep:tempfile", "dep:time"] config = ["dep:bimap", "dep:globset", "dep:semver", "dep:serde_json", "dep:serde_yaml", "dep:serde", "dep:filetime"] dwarf = ["dep:gimli"] mips = ["any-arch", "dep:rabbitizer"] ppc = ["any-arch", "dep:cwdemangle", "dep:cwextab", "dep:ppc750cl"] x86 = ["any-arch", "dep:cpp_demangle", "dep:iced-x86", "dep:msvc-demangler"] arm = ["any-arch", "dep:cpp_demangle", "dep:unarm", "dep:arm-attr"] arm64 = ["any-arch", "dep:cpp_demangle", "dep:yaxpeax-arch", "dep:yaxpeax-arm"] wasm = ["bindings", "any-arch", "dep:console_error_panic_hook", "dep:console_log", "dep:wasm-bindgen", "dep:tsify-next", "dep:log"] [package.metadata.docs.rs] features = ["all"] [dependencies] anyhow = "1.0" bimap = { version = "0.6", features = ["serde"], optional = true } byteorder = { version = "1.5", optional = true } filetime = { version = "0.2", optional = true } flagset = { version = "0.4", optional = true } log = { version = "0.4", optional = true } memmap2 = { version = "0.9", optional = true } num-traits = { version = "0.2", optional = true } object = { version = "0.36", features = ["read_core", "std", "elf", "pe"], default-features = false } pbjson = { version = "0.7", optional = true } prost = { version = "0.13", optional = true } serde = { version = "1.0", features = ["derive"], optional = true } similar = { version = "2.6", default-features = false, optional = true } strum = { version = "0.26", features = ["derive"], optional = true } wasm-bindgen = { version = "0.2", optional = true } tsify-next = { version = "0.5", default-features = false, features = ["js"], optional = true } console_log = { version = "1.0", optional = true } console_error_panic_hook = { version = "0.1", optional = true } # config globset = { version = "0.4", features = ["serde1"], optional = true } semver = { version = "1.0", optional = true } serde_json = { version = "1.0", optional = true } serde_yaml = { version = "0.9", optional = true } # dwarf gimli = { version = "0.31", default-features = false, features = ["read-all"], optional = true } # ppc cwdemangle = { version = "1.0", optional = true } cwextab = { version = "1.0.2", optional = true } ppc750cl = { version = "0.3", optional = true } # mips rabbitizer = { version = "1.12", optional = true } # x86 cpp_demangle = { version = "0.4", optional = true } iced-x86 = { version = "1.21", default-features = false, features = ["std", "decoder", "intel", "gas", "masm", "nasm", "exhaustive_enums"], optional = true } msvc-demangler = { version = "0.10", optional = true } # arm unarm = { version = "1.6", optional = true } arm-attr = { version = "0.1", optional = true } # arm64 yaxpeax-arch = { version = "0.3", default-features = false, features = ["std"], optional = true } yaxpeax-arm = { version = "0.3", default-features = false, features = ["std"], optional = true } # build notify = { git = "https://github.com/notify-rs/notify", rev = "128bf6230c03d39dbb7f301ff7b20e594e34c3a2", optional = true } notify-debouncer-full = { git = "https://github.com/notify-rs/notify", rev = "128bf6230c03d39dbb7f301ff7b20e594e34c3a2", optional = true } shell-escape = { version = "0.1", optional = true } tempfile = { version = "3.14", optional = true } time = { version = "0.3", optional = true } [target.'cfg(windows)'.dependencies] path-slash = { version = "0.2", optional = true } 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.41", 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.41", optional = true } [build-dependencies] prost-build = { version = "0.13", optional = true } pbjson-build = { version = "0.7", optional = true }