summaryrefslogtreecommitdiff
path: root/yjit/yjit.mk
AgeCommit message (Collapse)Author
2025-12-17JITs: Pass down GNU make jobserver resources when appropriateAlan Wu
To fix warnings from rustc on e.g. Make 4.3, which is in Ubuntu 24.04: > warning: failed to connect to jobserver from environment variable
2025-12-10JITs: Drop cargo and use just rustc for release combo buildAlan Wu
So we don't expose builders to network flakiness which cannot be worked around using cargo's --offline flag.
2025-12-10YJIT: For rustc build, remove cargo touch(1) workaroundAlan Wu
2025-12-05YJIT: Fix duplicate make rule warning in combo buildAlan Wu
2025-09-11ZJIT: Add support for stats_allocatorAiden Fox Ivey
* Using the shared jit crate, support for a single global_allocator can function * Solves --zjit-mem-size
2025-09-10YJIT: Rename `make yjit-smoke-test` to `make yjit-check` (#14502)Takashi Kokubun
2025-08-29YJIT: Drop yjit-bench CI job (#14394)Takashi Kokubun
2025-07-16DRY up CARGO_VERBOSE for JITsAlan Wu
2025-05-15YJIT: ZJIT: Allow both JITs in the same buildAlan Wu
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. Notes: Merged: https://github.com/ruby/ruby/pull/13262
2025-02-13YJIT: Fix linker warnings on macOS for Cargo (development) buildsAlan Wu
Notes: Merged: https://github.com/ruby/ruby/pull/12743
2024-03-22Propagate jobserver FDs to `cargo` and `rustc` [ci skip]Nobuyoshi Nakada
https://doc.rust-lang.org/cargo/reference/build-scripts.html#jobserver > Cargo and `rustc` use the jobserver protocol, developed for GNU > make, to coordinate concurrency across processes. Older GNU make used FDs to connect to the jobserver, and needs an explicit use of `$(MAKE)` variable or `+` prefix to pass the FDs.
2023-10-05YJIT: Simplify linker flavor checkAlan Wu
By not allowlisting every OS that could have a GNU flavor linker, it's also a bigger tent
2023-10-06Remove unmatch parenthesisNobuyoshi Nakada
``` yjit/yjit.mk:48: Extraneous text after `ifneq' directive ```
2023-10-05YJIT: Build on BSD platforms with GNU make (#8591)Thomas Hurst
2023-08-01YJIT: Let local yjit-bindgen exit successfully (#8156)Takashi Kokubun
Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2023-04-13Allow testing a different versionTakashi Kokubun
2023-04-08Include `--no-llvm-bc` option in `NM` macro only if usableNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/7677
2023-04-05YJIT: Smoke test on Rust 1.58.0Alan Wu
Since warnings might show up on older version but not newer ones. Notes: Merged: https://github.com/ruby/ruby/pull/7657
2023-04-04Resurrect yjit-smoke-test before #7651Takashi Kokubun
2023-04-04YJIT: Stack temp register allocation (#7651)Takashi Kokubun
Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2023-02-23YJIT: Add `make yjit-smoke-test` [ci skip]Alan Wu
I have this as a shell command and Maxime told me that she finds it useful, too. I tested this on a release build and a dev build. Note I intentional didn't put `$(Q)` in front of everything so `make` echos the command it runs. Notes: Merged: https://github.com/ruby/ruby/pull/7365
2023-01-31Silence dozens of useless warnings from `nm` on macOSNobuyoshi Nakada
2023-01-27YJIT: Fix shared/static library symbol leaksAlan Wu
Rust 1.58.0 unfortunately doesn't provide facilities to control symbol visibility/presence, but we care about controlling the list of symbols exported from libruby-static.a and libruby.so. This commit uses `ld -r` to make a single object out of rustc's staticlib output, libyjit.a. This moves libyjit.a out of MAINLIBS and adds libyjit.o into COMMONOBJS, which obviates the code for merging libyjit.a into libruby-static.a. The odd appearance of libyjit.a in SOLIBS is also gone. To filter out symbols we do not want to export on ELF platforms, we use objcopy after the partial link. On darwin, we supply a symbol list to the linker which takes care of hiding unprefixed symbols. [Bug #19255] Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Notes: Merged: https://github.com/ruby/ruby/pull/7115
2022-12-13Suppress the output of `if [ 'xyes' = xyes ];` codeTakashi Kokubun
itself
2022-12-08YJIT: Fold check-yjit-bindings into yjit-bindgenAlan Wu
So it's shorter on CI and the hint about how the fix the failure shows up. It's going to print a diff locally too, but that should be fine. Notes: Merged: https://github.com/ruby/ruby/pull/6883
2022-09-20YJIT: Support MAKE=bmake for release buildAlan Wu
This add support for bmake, which should allow building with `configure --enable-yjit` for the BSDs. Tested on FreeBSD 13 and on macOS with `configure MAKE=bmake` on a case-sensitive file system. It works by including a fragment into the Makefile through the configure script, similar to common.mk. It uses the always rebuild approach to keep build system changes minimal. Notes: Merged: https://github.com/ruby/ruby/pull/6408
2022-09-20YJIT: Show --yjit-stats of railsbench on CI (#6403)Takashi Kokubun
* YJIT: Show --yjit-stats of railsbench on CI * YJIT: Use --enable-yjit=dev to see ratio_in_yjit * YJIT: Show master GitHub URL for quick comparison * YJIT: Avoid making CI red by a yjit-bench failure Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-09-14Add comments to touch libyjitNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/6371
2022-09-14Touch libyjit.a which may be still old due to the cacheNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/6371
2022-09-14Expand dependency for `$(YJIT_LIBS)`Nobuyoshi Nakada
Currently, miniruby is rebuild **always** when yjit is enabled, even if nothing is changed. Notes: Merged: https://github.com/ruby/ruby/pull/6371
2022-07-29Add --enable-yjit=dev_nodebug configure optionJohn Hawthorn
Notes: Merged: https://github.com/ruby/ruby/pull/6105
2022-07-29Add --enable-yjit=stats configure optionJohn Hawthorn
Notes: Merged: https://github.com/ruby/ruby/pull/6105
2022-06-29Add a check-yjit-bindgen-unused target. Add to CI. (#6066)Noah Gibbs
This fails if there are any unused rust-bindgen "allow" entries. For that target we turn on Rust warnings (there are a lot) and grep for the ones that correspond to unused allow entries. I've added check-yjit-bindgen-unused as a dependency of check-yjit-bindings, so unused allow entries will now fail CI. This change also removes our single unused allow entry (VM_CALL.*) which was known to be bad. Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-06-02Split YJIT rules for CODEOWNERSNobuyoshi Nakada