summaryrefslogtreecommitdiff
path: root/configure.ac
AgeCommit message (Collapse)Author
2023-03-10Bump the required BASERUBY version to 2.5 (#7504)Takashi Kokubun
[Misc #16671] I'd like to bump it to 2.7 to use pattern matching in tool/mk_builtin_loader.rb. However, I experienced a few blockers. 2.5 seems like the closest version that is easy enough to use on CIs, so let me bump the version to it as an intermediate step for it. I want to use &. and <<~ in 2.3 too. Known blockers: * AppVeyor Visual Studio 2015 doesn't have Ruby 2.7. You'd need to bump the version to Visual Studio 2019. * GitHub Actions windows-2019 doesn't have Ruby 2.7 either. You can use ruby/setup-ruby, but configure doesn't seem to work with it. * For ruby/ruby-ci-imaage, bionic doesn't have Ruby 2.7. I tried using ruby-build to build Ruby 2.7 from package, but the build on its CI seems to somehow loop forever when I do that. So I gave it up for now. We might want to wait until bionic becomes EOL. Note: * AppVeyor Visual Studio 2015 has Ruby <= 2.6.3 https://www.appveyor.com/docs/windows-images-software/#ruby * GitHub Actions windows-2019 uses Ruby 2.5.9 https://github.com/actions/runner-images/blob/main/images/win/Windows2019-Readme.md Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2023-03-10RJIT: Always enable --rjit-dump-disasmTakashi Kokubun
2023-03-09[Bug #19161] Check for TLS usabilityNobuyoshi Nakada
On all platforms using GCC, even other than darwin. Notes: Merged: https://github.com/ruby/ruby/pull/7481
2023-03-07Link libcapstone no matter what cargo doesTakashi Kokubun
libcapstone used to break when it's linked from C and Rust at the same time, but it doesn't seem to happen anymore. Maybe it's related to recent symbol hygiene changes. Thank you if that's the case. This commit allows you to make both --enable-rjit=dev and --enable-yjit=dev work in the same binary.
2023-03-07Allow enabling YJIT and RJIT independently (#7474)Takashi Kokubun
We used to require MJIT is supported when YJIT is supported. However, now that RJIT dropped some platforms that YJIT supports, it no longer makes sense. We should be able to enable only YJIT, and vice versa. Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2023-03-06s/mjit/rjit/Takashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7462
2023-03-06s/MJIT/RJIT/Takashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7462
2023-03-06Remove obsoleted tool/mjit_tabs.rbTakashi Kokubun
2023-03-06Drop obsoleted MJIT header (#7458)Takashi Kokubun
RJIT doesn't need this. Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2023-03-05Rely on YJIT's switch for nowTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement --mjit-dump-disasmTakashi Kokubun
2023-02-22Add support for LoongArch (#7343)小MAO钓鱼
* vm_dump.c: Dump machine registers on loongarch64 Linux. * coroutines: Support for native loongarch64 coroutines. --------- Co-authored-by: zangruochen <zangruochen@loongson.cn> Notes: Merged-By: nurse <naruse@airemix.jp>
2023-02-15Do not use `objcopy` on macOSNobuyoshi Nakada
On macOS, it is not used to localize symbols in dynamic libraries (libruby.dylib and libyjit.o). Instead, using `objcopy` which does not support recent mach-O causes linker errors as bellow. ``` linking shared-library libruby.3.3.dylib error: cannot parse the debug map for 'libruby.3.3.dylib': Invalid data was encountered while parsing the file linking ruby ld: malformed mach-o: LC_*_DYLIB load command string extends beyond end of load command file './libruby.3.3.dylib' clang: error: linker command failed with exit code 1 (use -v to see invocation) ```
2023-02-14Check if objcopy works to localize symbolNobuyoshi Nakada
LLVM objcopy does not support localizing symbols option, e.g, `--localize-symbol` and `--keep-global-symbol`, for MachO.
2023-02-08Extract include/ruby/internal/attr/packed_struct.hNobuyoshi Nakada
Split `PACKED_STRUCT` and `PACKED_STRUCT_UNALIGNED` macros into the macros bellow: * `RBIMPL_ATTR_PACKED_STRUCT_BEGIN` * `RBIMPL_ATTR_PACKED_STRUCT_END` * `RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_BEGIN` * `RBIMPL_ATTR_PACKED_STRUCT_UNALIGNED_END` Notes: Merged: https://github.com/ruby/ruby/pull/7268
2023-01-31Silence dozens of useless warnings from `nm` on macOSNobuyoshi Nakada
2023-01-27configure: Keep OBJCOPY even when visibility options are availableAlan Wu
YJIT will need it to address symbol leakage issue. Fallback to `:` when OBJCOPY is not available on the system. Co-authored-by: Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Notes: Merged: https://github.com/ruby/ruby/pull/7115
2023-01-27configure: Don't use use LD=clang, ld takes different flagsAlan Wu
This was a difference from using a GNU toolchain previously. It wasn't a problem because we don't invoke $(LD) in the Makefile currently. YJIT will want to invoke LD, so needs this consistency. Notes: Merged: https://github.com/ruby/ruby/pull/7115
2023-01-26Get rid of duplicate "--disable=gems" optionsNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/7186
2023-01-23Silence dozens of useless warnings from `ranlib` on macOS [ci skip]Nobuyoshi Nakada
2022-12-25Enable arm64 coroutine implementation on OpenBSD/arm64Jeremy Evans
Tested by another OpenBSD developer and confirmed to significantly improve things.
2022-12-24Revert "darwin: resolve rb symbols from ext by `-flat_namespace` to see ↵NARUSE, Yui
libruby transitively" This reverts commit c5eefb7f37db2865891298dd1a1e60dff09560ad. Flat namespace breaks gems with C extention if its symbols conflict with ohter libraries.
2022-12-23darwin: resolve rb symbols from ext by `-flat_namespace` to see libruby ↵Yuta Saito
transitively This repairs the assumption, which many fat-gem maintainer expect, "An extension built with --disable-shared Ruby is loadable from --enable-shared Ruby". By default all references resolved to a dynamic library use "two-level namespace", which record the library name and symbol name for each resolution entry. On the other hand, `-flat_namespace` discards the library name information and resolves symbols "flatly". This behavior is useful for us to ignore which image (`ruby` executable or `libruby.dylib`) provides rb symbols at runtime. Notes: Merged: https://github.com/ruby/ruby/pull/7008
2022-12-20configure.ac: limit miniruby dep to when bundle_loader needs itMike Dalessio
See also e7bffe0 https://bugs.ruby-lang.org/issues/19239 Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Notes: Merged: https://github.com/ruby/ruby/pull/6959
2022-12-19YJIT: Improve the description about --enable-yjit (#6947)Takashi Kokubun
Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-12-18Suppress cross tool warning for pkg-config [ci skip]Nobuyoshi Nakada
It is used from mkmf.rb on target environments.
2022-12-18configure.ac: add miniruby to PREP when cross-compiling to darwinMike Dalessio
miniruby is used to resolve symbols in ext bundles https://bugs.ruby-lang.org/issues/19239 Co-authored-by: Yuta Saito <kateinoigakukun@gmail.com> Notes: Merged: https://github.com/ruby/ruby/pull/6944
2022-12-12Make it so YJIT is no longer marked as experimental (#6909)Maxime Chevalier-Boisvert
Tested on production workloads at Shopify for > 1 year and proven to be quite stable. Enabling YJIT at run-time is still guarded behind the --yjit command-line option for now. Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-12-02YJIT: echo "\n" is not portableAlan Wu
It's unspecified by POSIX. zsh and dash give a newline and bash doesn't substitute it. Attributes don't have to be followed by a newline anyway, so just remove it. [Bug #19174]
2022-12-03Fix up "Avoid bash specific variable substitution"Nobuyoshi Nakada
Keep `target_alias` empty if it is set to empty. If it is set to non empty, `os_version_style_transform` is not used.
2022-12-02Avoid bash specific variable substitutionNobuyoshi Nakada
It may cause parse errors in some other sh even in never executed parts. Notes: Merged: https://github.com/ruby/ruby/pull/6844
2022-11-24YJIT: Make sure rustc's target matches before enabling (#6804)Alan Wu
For people using Rosetta 2 on ARM Macs, it can happen that the rustc in the PATH compiles for x86_64 while clang is targeting ARM. We were enabling YJIT in these situations because the test program compiled fine, but caused linking failure later due to the architecture mismatch. Adjust the test program to fail when rustc's target arch is different from ruby's target arch. [Bug #19146] Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-11-20Add a comment about confusing code [ci skip]Takashi Kokubun
2022-11-17Add support for `sockaddr_un` on Windows. (#6513)Samuel Williams
* Windows: Fix warning about undefined if_indextoname() * Windows: Fix UNIXSocket on MINGW and make .pair more reliable * Windows: Use nonblock=true for read tests with scheduler * Windows: Move socket detection from File.socket? to File.stat Add S_IFSOCK to Windows and interpret reparse points accordingly. Enable tests that work now. * Windows: Use wide-char functions to UNIXSocket This fixes behaviour with non-ASCII characters. It also fixes deletion of temporary UNIXSocket.pair files. * Windows: Add UNIXSocket tests for specifics of Windows impl. * Windows: fix VC build due to missing _snwprintf Avoid usage of _snwprintf, since it fails linking ruby.dll like so: linking shared-library x64-vcruntime140-ruby320.dll x64-vcruntime140-ruby320.def : error LNK2001: unresolved external symbol snwprintf x64-vcruntime140-ruby320.def : error LNK2001: unresolved external symbol vsnwprintf_l whereas linking miniruby.exe succeeds. This patch uses snprintf on the UTF-8 string instead. Also remove branch GetWindowsDirectoryW, since it doesn't work. * Windows: Fix dangling symlink test failures Co-authored-by: Lars Kanis <kanis@comcard.de> Notes: Merged-By: ioquatix <samuel@codeotaku.com>
2022-11-16YJIT: Show YJIT build option in RUBY_DESCRIPTION (#6738)Takashi Kokubun
YJIT: Show YJIT profile in RUBY_DESCRIPTION Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-11-10Define YJIT_STATS on --enable-yjit=stats (#6710)Takashi Kokubun
Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-11-10Set up EXTSTATIC before checking itAlan Wu
The bundle_loader check for darwin checks EXTSTATIC, but previously the setup for the variable comes after the check. I had trouble building using --with-static-linked-ext on darwin before this change. Notes: Merged: https://github.com/ruby/ruby/pull/6675 Merged-By: XrXr
2022-11-08YJIT: Improve checking message for rustc version (#6693)Alan Wu
Preivously we didn't have a "checking ...." line for this check and when rustc was too old, we would dump the error message to the console like: checking for rustc... rustc error: there is no argument named `x` --> <anon>:1:33 | 1 | fn main() { let x = 1; format!("{x}"); } | ^^^ error: aborting due to previous error `configure` checks usually don't do this and this might be confusing. With this commit it now says something like: checking whether rustc is new enough for YJIT... no Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-11-08YJIT: improve/fix code to automatically build YJIT when available (#6684)Maxime Chevalier-Boisvert
* YJIT: improve/fix code to automatically build YJIT when available * Set YJIT_SUPPORT=no * Fix rustc => $RUSTC Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-11-06Check `rustc` with the targetNobuyoshi Nakada
2022-11-06`--disable-jit-support` should disable YJIT successfullyNobuyoshi Nakada
Even if `rustc` is available, it should not be an error unless `--enable-yjit` is explicitly given. Notes: Merged: https://github.com/ruby/ruby/pull/6681
2022-11-06Disable YJIT support when cross-compilingNobuyoshi Nakada
As the target-list of `rustc` is different from `config.guess` and `config.sub`, `$target` cannot be used directly.
2022-11-06Add `--target` option to RUSTC when cross-compilingNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/6677
2022-11-06Should use the configured rustc consistentlyNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/6677
2022-11-04Auto-enable YJIT build when rustc >= 1.58.0 present (#6662)Maxime Chevalier-Boisvert
* Auto-enable YJIT build when rustc >= 1.58.0 present * Try different incantation to have rustc output to stdout only * Add comment, remove whitespace * Try to detect if we are on a platform on which YJIT is supported Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-10-30Try -fstack-protector-strong on MinGWNobuyoshi Nakada
The CI for MinGW has used it.
2022-10-29Clear `_FORTIFY_SOURCE` before definitionNobuyoshi Nakada
As clang on macOS defines this macro as 0 internally when a sanitizer option is given, clear it before definition to suppress redefinition warnings. Notes: Merged: https://github.com/ruby/ruby/pull/6646
2022-10-19YJIT: fold the "asm_comments" feature into "disasm" (#6591)Alan Wu
Previously, enabling only "disasm" didn't actually build. Since these two features are closely related and we don't really use one without the other, let's simplify and merge the two features together. Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-10-19Fix and improve coroutines for Darwin (macOS) ppc/ppc64. (#5975)Sergey Fedorov
Notes: Merged-By: ioquatix <samuel@codeotaku.com>
2022-10-15Remove wrong dollarNobuyoshi Nakada