mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 05:29:10 +02:00

This commit allows building YJIT and ZJIT simultaneously, a "combo build". Previously, `./configure --enable-yjit --enable-zjit` failed. At runtime, though, only one of the two can be enabled at a time. Add a root Cargo workspace that contains both the yjit and zjit crate. The common Rust build integration mechanisms are factored out into defs/jit.mk. Combo YJIT+ZJIT dev builds are supported; if either JIT uses `--enable-*=dev`, both of them are built in dev mode. The combo build requires Cargo, but building one JIT at a time with only rustc in release build remains supported.
26 lines
1.1 KiB
TOML
26 lines
1.1 KiB
TOML
# NOTE: please avoid adding dependencies to external crates as these can
|
|
# make building and packaging YJIT more challenging.
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
[package]
|
|
name = "yjit"
|
|
version = "0.1.0" # YJIT version
|
|
edition = "2021" # Rust 2021 edition to compile with
|
|
rust-version = "1.58.0" # Minimally supported rust version
|
|
publish = false # Don't publish to crates.io
|
|
|
|
[dependencies]
|
|
# No required dependencies to simplify build process. TODO: Link to yet to be
|
|
# written rationale. Optional For development and testing purposes
|
|
capstone = { version = "0.13.0", optional = true }
|
|
|
|
# NOTE: Development builds select a set of these via configure.ac
|
|
# For debugging, `make V=1` shows exact cargo invocation.
|
|
[features]
|
|
# Support --yjit-dump-disasm and RubyVM::YJIT.disasm using libcapstone.
|
|
disasm = ["capstone"]
|
|
# Modify generated code for runtime checks, e.g. poison value in PC
|
|
# for C method calls, and stack canary. This is managed separately
|
|
# from cfg!(debug_assertions) so that we can see disasm of the code
|
|
# that would run in the release mode.
|
|
runtime_checks = []
|