[package] authors = ["The Cranelift Project Developers"] name = "cranelift-codegen" version = "0.68.0" description = "Low-level code generator library" license = "Apache-2.0 WITH LLVM-exception" documentation = "https://docs.rs/cranelift-codegen" repository = "https://github.com/bytecodealliance/wasmtime" categories = ["no-std"] readme = "README.md" keywords = ["compile", "compiler", "jit"] build = "build.rs" edition = "2018" [dependencies] cranelift-codegen-shared = { path = "./shared", version = "0.68.0" } cranelift-entity = { path = "../entity", version = "0.68.0" } cranelift-bforest = { path = "../bforest", version = "0.68.0" } hashbrown = { version = "0.9.1", optional = true } target-lexicon = "0.11" log = { version = "0.4.6", default-features = false } serde = { version = "1.0.94", features = ["derive"], optional = true } bincode = { version = "1.2.1", optional = true } gimli = { version = "0.23.0", default-features = false, features = ["write"], optional = true } smallvec = { version = "1.0.0" } thiserror = "1.0.4" byteorder = { version = "1.3.2", default-features = false } peepmatic = { path = "../peepmatic", optional = true, version = "0.68.0" } peepmatic-traits = { path = "../peepmatic/crates/traits", optional = true, version = "0.68.0" } peepmatic-runtime = { path = "../peepmatic/crates/runtime", optional = true, version = "0.68.0" } regalloc = { git = "https://github.com/mozilla-spidermonkey/regalloc.rs", rev = "fc5d1d33317b0fbd36725757f80a95127eff5109" } souper-ir = { version = "1", optional = true } wast = { version = "27.0.0", optional = true } # It is a goal of the cranelift-codegen crate to have minimal external dependencies. # Please don't add any unless they are essential to the task of creating binary # machine code. Integration tests that need external dependencies can be # accomodated in `tests`. [build-dependencies] cranelift-codegen-meta = { path = "meta", version = "0.68.0" } [features] default = ["std", "unwind"] # The "std" feature enables use of libstd. The "core" feature enables use # of some minimal std-like replacement libraries. At least one of these two # features need to be enabled. std = [] # The "core" features enables use of "hashbrown" since core doesn't have # a HashMap implementation, and a workaround for Cargo #4866. core = ["hashbrown"] # This enables some additional functions useful for writing tests, but which # can significantly increase the size of the library. testing_hooks = [] # This enables unwind info generation functionality. unwind = ["gimli"] # ISA targets for which we should build. # If no ISA targets are explicitly enabled, the ISA target for the host machine is enabled. x86 = [] arm64 = [] riscv = [] x64 = [] # New work-in-progress codegen backend for x86_64 based on the new isel. arm32 = [] # Work-in-progress codegen backend for ARM. # Option to enable all architectures. all-arch = [ "x86", "arm64", "riscv" ] # For dependent crates that want to serialize some parts of cranelift enable-serde = ["serde"] # Allow snapshotting regalloc test cases. Useful only to report bad register # allocation failures, or for regalloc.rs developers. regalloc-snapshot = ["bincode", "regalloc/enable-serde"] # Recompile our optimizations that are written in the `peepmatic` DSL into a # compact finite-state transducer automaton. rebuild-peephole-optimizers = ["peepmatic", "peepmatic-traits", "wast"] # Enable the use of `peepmatic`-generated peephole optimizers. enable-peepmatic = ["peepmatic-runtime", "peepmatic-traits", "serde"] # Enable support for the Souper harvester. souper-harvest = ["souper-ir", "souper-ir/stringify"] [badges] maintenance = { status = "experimental" }