1[package]
2authors = ["The Cranelift Project Developers"]
3name = "cranelift-codegen"
4version = "0.85.0"
5description = "Low-level code generator library"
6license = "Apache-2.0 WITH LLVM-exception"
7documentation = "https://docs.rs/cranelift-codegen"
8repository = "https://github.com/bytecodealliance/wasmtime"
9categories = ["no-std"]
10readme = "README.md"
11keywords = ["compile", "compiler", "jit"]
12build = "build.rs"
13edition = "2021"
14
15[dependencies]
16cranelift-codegen-shared = { path = "./shared", version = "0.85.0" }
17cranelift-entity = { path = "../entity", version = "0.85.0" }
18cranelift-bforest = { path = "../bforest", version = "0.85.0" }
19hashbrown = { version = "0.11", optional = true }
20target-lexicon = "0.12"
21log = { version = "0.4.6", default-features = false }
22serde = { version = "1.0.94", features = ["derive"], optional = true }
23bincode = { version = "1.2.1", optional = true }
24gimli = { version = "0.26.0", default-features = false, features = ["write"], optional = true }
25smallvec = { version = "1.6.1" }
26regalloc2 = { version = "0.1.2", features = ["checker"] }
27souper-ir = { version = "2.1.0", optional = true }
28# It is a goal of the cranelift-codegen crate to have minimal external dependencies.
29# Please don't add any unless they are essential to the task of creating binary
30# machine code. Integration tests that need external dependencies can be
31# accomodated in `tests`.
32
33[dev-dependencies]
34criterion = "0.3"
35
36[build-dependencies]
37cranelift-codegen-meta = { path = "meta", version = "0.85.0" }
38cranelift-isle = { path = "../isle/isle", version = "=0.85.0", optional = true }
39miette = { version = "3", features = ["fancy"], optional = true }
40
41[features]
42default = ["std", "unwind"]
43
44# The "std" feature enables use of libstd. The "core" feature enables use
45# of some minimal std-like replacement libraries. At least one of these two
46# features need to be enabled.
47std = []
48
49# The "core" features enables use of "hashbrown" since core doesn't have
50# a HashMap implementation, and a workaround for Cargo #4866.
51core = ["hashbrown"]
52
53# This enables some additional functions useful for writing tests, but which
54# can significantly increase the size of the library.
55testing_hooks = []
56
57# This enables unwind info generation functionality.
58unwind = ["gimli"]
59
60# ISA targets for which we should build.
61# If no ISA targets are explicitly enabled, the ISA target for the host machine is enabled.
62x86 = []
63arm64 = []
64s390x = []
65
66# Stub feature that does nothing, for Cargo-features compatibility: the new
67# backend is the default now.
68experimental_x64 = []
69
70# Option to enable all architectures.
71all-arch = [
72    "x86",
73    "arm64",
74    "s390x"
75]
76
77# For dependent crates that want to serialize some parts of cranelift
78enable-serde = [
79    "serde",
80    "cranelift-entity/enable-serde",
81    "regalloc2/enable-serde",
82]
83
84# Enable support for the Souper harvester.
85souper-harvest = ["souper-ir", "souper-ir/stringify"]
86
87# Recompile ISLE DSL source files into their generated Rust code.
88rebuild-isle = ["cranelift-isle", "miette", "cranelift-codegen-meta/rebuild-isle"]
89
90# A hack to skip the ISLE-rebuild logic when testing for determinism
91# with the "Meta deterministic check" CI job.
92completely-skip-isle-for-ci-deterministic-check = []
93
94[badges]
95maintenance = { status = "experimental" }
96
97[[bench]]
98name = "x64-evex-encoding"
99harness = false
100