summaryrefslogtreecommitdiffstats
path: root/third_party/rust/cranelift-codegen/Cargo.toml
blob: 2c24c863626fb4d48fd4e4389330416efea5af52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
[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" }