aboutsummaryrefslogtreecommitdiffstats
path: root/configure.ac
Commit message (Collapse)AuthorAgeFilesLines
* Check `windres` message using the found `windres` only if neededNobuyoshi Nakada2023-11-241-4/+1
|
* windows-arm64 support (#8995)Pierrick Bouvier2023-11-231-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * [win32] fix compilation for windows-arm64 Credits to MSYS2 Ruby package using this patch. * [win32] nm use full options Fix compilation error when using MSYS2 environment. Credits to MSYS2 Ruby package using this patch. * [win32] detect llvm-windres (used for windows-arm64) When adding preprocessor option for llvm-windres (using clang as parameter), it fails. Thus, do not add this. It's needed to be able to compile windows-arm64 version, because MSYS2 toolchain is LLVM based (instead of GCC/binutils). * [win32] pioinfo detection for windows-arm64 This fixes "unexpected ucrtbase.dll" for native windows-arm64 ruby binary. It does not solve issue with x64 version emulated on this platform. Value of pioinfo pointer can be found in ucrtbase.dll at latest adrp/add sequence before return of _isatty function. This works for both release and debug ucrt. Due to the nature of aarch64 ISA (vs x86 or x64), it's needed to disassemble instructions to retrieve offset value, which is a bit more complicated than matching specific string patterns. Details about adrp/add usage can be found in this blog post: https://devblogs.microsoft.com/oldnewthing/20220809-00/?p=106955 For instruction decoding, the Arm documentation was used as a reference.
* [Bug #20004] Revert "[Feature #19422] Enable shared by default on macOS"Hiroshi SHIBATA2023-11-211-4/+1
| | | | | | | | | | | | | | | This reverts commit 9694445051c4192c8f659529133acab253bd0bc3. This change broke our release CI. https://github.com/ruby/actions/actions/runs/6599016994/job/17927644579#step:16:44 Invoking `/Users/runner/work/actions/actions/snapshot-master/ruby -rrubygems /Users/runner/work/actions/actions/snapshot-master/bin/gem --backtrace build lib/bundler/bundler.gemspec` failed with output: ---------------------------------------------------------------------- dyld[42417]: Library not loaded: '/usr/local/lib/libruby.3.3.dylib' Referenced from: '/Users/runner/work/actions/actions/snapshot-master/ruby' Reason: tried: '/usr/local/lib/libruby.3.3.dylib' (no such file), '/usr/lib/libruby.3.3.dylib' (no such file) ----------------------------------------------------------------------
* [Bug #18286] Make builtin binary if sharable in universal binariesNobuyoshi Nakada2023-11-091-1/+20
|
* Revert "Disable iseq-dumped builtin module for universal x86_64/arm64 binaries"Nobuyoshi Nakada2023-11-091-2/+0
| | | | This reverts commit 1d5598fe0d3470e7cab06a756d40a9221fcd501b.
* Disable iseq-dumped builtin module for universal x86_64/arm64 binariesBen Hamilton2023-11-091-0/+2
| | | | | | | | | | | | | | | | | | | | | | During the build, Ruby has special logic to serialize its own builtin module to disk using the binary iseq format during the build (I assume for speed so it doesn't have to parse builtin every time it starts up). However, since iseq format is architecture-specific, when building on x86_64 for universal x86_64 + arm64, the serialized builtin module is written with the x86_64 architecture of the build machine, which fails this check whenever ruby imports the builtin module on arm64: https://github.com/ruby/ruby/blob/1fdaa0666086529b3aae2d509a2e71c4247c3a12/compile.c#L13243 Thankfully, there's logic to disable this feature for cross-compiled builds: https://github.com/ruby/ruby/blob/1fdaa0666086529b3aae2d509a2e71c4247c3a12/builtin.c#L6 This disables the iseq logic for universal builds as well. Fixes [Bug #18286]
* Select proper dsymutil for gcc 13Nobuyoshi Nakada2023-11-071-3/+9
|
* Ignore duplicate libraries warnings from gcc 13Nobuyoshi Nakada2023-11-071-2/+5
|
* [Bug #19967] Revert "configure.ac: LIBPATHENV on macOS"Nobuyoshi Nakada2023-10-211-1/+1
| | | | | This reverts commit 1961c786aab243b3eb60e7238224e87975d88056. These environment variables should no longer propagate to child processes.
* Get rid of `set` with empty argument which dumps all definitionsNobuyoshi Nakada2023-10-171-1/+2
|
* disable MN threads on s390s-linuxKoichi Sasada2023-10-151-0/+4
| | | | | | | | | | | | | | I check the s390s-linux/Ubuntu system and I found that MN threads doesn't work with: * function inlining (-O0 doesn't repro) * Thread local specifier (`_Thread_local`. With `pthread_get_specific works) (it is not an issue of `__tls_get_addr()` written in thread.c) * swap context with ucontext (coroutine/ucontext) I couldn't find out what is the root cause of this issue but disable MN threads to make CI healthy.
* Ignore symbols even in empty shared libraryNobuyoshi Nakada2023-10-141-0/+16
| | | | | | | On some platforms, such as FreeBSD and Oracle Linux, symbols defined in the crt0 setup routine are exported from shared libraries. So ignore the symbols that would be exported even in an empty shared library.
* [Feature #19422] Enable shared by default on macOSNobuyoshi Nakada2023-10-121-1/+4
|
* M:N thread scheduler for RactorsKoichi Sasada2023-10-121-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch introduce M:N thread scheduler for Ractor system. In general, M:N thread scheduler employs N native threads (OS threads) to manage M user-level threads (Ruby threads in this case). On the Ruby interpreter, 1 native thread is provided for 1 Ractor and all Ruby threads are managed by the native thread. From Ruby 1.9, the interpreter uses 1:1 thread scheduler which means 1 Ruby thread has 1 native thread. M:N scheduler change this strategy. Because of compatibility issue (and stableness issue of the implementation) main Ractor doesn't use M:N scheduler on default. On the other words, threads on the main Ractor will be managed with 1:1 thread scheduler. There are additional settings by environment variables: `RUBY_MN_THREADS=1` enables M:N thread scheduler on the main ractor. Note that non-main ractors use the M:N scheduler without this configuration. With this configuration, single ractor applications run threads on M:1 thread scheduler (green threads, user-level threads). `RUBY_MAX_CPU=n` specifies maximum number of native threads for M:N scheduler (default: 8). This patch will be reverted soon if non-easy issues are found. [Bug #19842]
* [Bug #19778] Pass additional include options to INCFLAGS in common.mkNobuyoshi Nakada2023-09-171-0/+1
|
* Process.warmup: invoke `malloc_trim` if availableJean Boussier2023-09-151-0/+1
| | | | | Similar to releasing free GC pages, releasing free malloc pages reduce the amount of page faults post fork.
* [Bug #19778] Add `-I` options for opt-dir to `$INCFLAGS`Nobuyoshi Nakada2023-09-151-1/+1
| | | | | These options have been separated from `$CFLAGS` already in the other places.
* Exclude `-Wmisleading-indentation` when `-save-temps`Nobuyoshi Nakada2023-09-061-1/+4
| | | | That option may be triggered wrongly by pre-processed files.
* Define bounds-checking interfaces macro for each fileNobuyoshi Nakada2023-08-271-3/+0
|
* Check that __builtin_mul_overflow can handle long longJeremy Evans2023-08-241-0/+21
| | | | | | Fixes [Bug #17646] Patch from xtkoba (Tee KOBAYASHI)
* [Bug #19831] Remove duplicate library optionsNobuyoshi Nakada2023-08-171-2/+1
| | | | | `$(LIBRUBYARG_SHARED)` is included in `$(LIBS)` in extension libraries.
* RJIT: Remove macros inherited from MJIT but no longer usedNobuyoshi Nakada2023-08-171-24/+0
|
* Split installation from build sectionNobuyoshi Nakada2023-08-161-12/+16
|
* Group configure outputs on GitHub ActionsNobuyoshi Nakada2023-08-151-6/+18
|
* llvm-objcopy is not provided by Xcode Command Line Tools.Hiroshi SHIBATA2023-07-071-15/+2
| | | | | | Revert "Disable YJIT if objcopy command is old" This reverts commit 75f8781c08da421d6bcfb2c3c8b7b74efea3bec2.
* Disable YJIT if objcopy command is oldNobuyoshi Nakada2023-07-061-2/+15
| | | Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
* Fixed build scripts for YARPJemma Issroff2023-07-051-0/+1
|
* Introduce --enable-rjit=disasmTakashi Kokubun2023-04-271-1/+5
|
* Avoid linking capstone by defaultTakashi Kokubun2023-04-241-3/+3
| | | | Workaround for https://github.com/ruby/setup-ruby/pull/501#issuecomment-1520722486
* Use tools appropriate with CCNobuyoshi Nakada2023-04-091-0/+6
| | | | | | | | | | | | | | | | To get rid of mysterious errors such as: ``` /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm: error: libruby.3.3-static.a(/): The end of the file was unexpectedly encountered ``` and ``` ld: warning: ignoring file ../../libruby.3.3-static.a, building for macOS-x86_64 but attempting to link with file built for macOS-x86_64 Undefined symbols for architecture x86_64: "_rb_rational_num", referenced from: ```
* Include `--no-llvm-bc` option in `NM` macro only if usableNobuyoshi Nakada2023-04-081-0/+4
|
* [Bug#19161] Detect thread local storage specifierNobuyoshi Nakada2023-04-071-7/+16
| | | | | | Checking by `__STDC_VERSION__` is unreliable because old gcc 4.8 supports `-std=gnu11` option but does not implement `_Thread_local`. Check the implementation directly instead.
* Add Dir.fchdirJeremy Evans2023-03-241-0/+1
| | | | | | | | | | | | This is useful for passing directory file descriptors over UNIX sockets or to child processes to avoid TOCTOU vulnerabilities. The implementation follows the Dir.chdir code. This will raise NotImplementedError on platforms not supporting both fchdir and dirfd. Implements [Feature #19347]
* Fix ENABLE_MULTIARCHNobuyoshi Nakada2023-03-241-0/+3
| | | | | This macro is used in `ruby_init_loadpath()`, but was removed mistakenly at 31f4b2d86bfbc753cec9be376719acc4b120e944.
* YJIT: Make dev_nodebug closer to dev (#7570)Takashi Kokubun2023-03-201-0/+1
|
* RJIT: Use RJIT_STATS on --enable-rjit=devTakashi Kokubun2023-03-171-2/+2
| | | | RUBY_DEBUG is too slow.
* Bump the required BASERUBY version to 2.5 (#7504)Takashi Kokubun2023-03-101-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | [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
* RJIT: Always enable --rjit-dump-disasmTakashi Kokubun2023-03-101-3/+3
|
* [Bug #19161] Check for TLS usabilityNobuyoshi Nakada2023-03-091-6/+7
| | | | On all platforms using GCC, even other than darwin.
* Link libcapstone no matter what cargo doesTakashi Kokubun2023-03-071-8/+4
| | | | | | | | | 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.
* Allow enabling YJIT and RJIT independently (#7474)Takashi Kokubun2023-03-071-24/+55
| | | | | 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.
* s/mjit/rjit/Takashi Kokubun2023-03-061-3/+3
|
* s/MJIT/RJIT/Takashi Kokubun2023-03-061-22/+22
|
* Remove obsoleted tool/mjit_tabs.rbTakashi Kokubun2023-03-061-4/+0
|
* Drop obsoleted MJIT header (#7458)Takashi Kokubun2023-03-061-10/+0
| | | RJIT doesn't need this.
* Rely on YJIT's switch for nowTakashi Kokubun2023-03-051-5/+5
|
* Implement --mjit-dump-disasmTakashi Kokubun2023-03-051-0/+6
|
* Add support for LoongArch (#7343)小MAO钓鱼2023-02-221-0/+3
| | | | | | | | | * vm_dump.c: Dump machine registers on loongarch64 Linux. * coroutines: Support for native loongarch64 coroutines. --------- Co-authored-by: zangruochen <zangruochen@loongson.cn>
* Do not use `objcopy` on macOSNobuyoshi Nakada2023-02-151-10/+1
| | | | | | | | | | | | | | 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) ```
* Check if objcopy works to localize symbolNobuyoshi Nakada2023-02-141-0/+10
| | | | | LLVM objcopy does not support localizing symbols option, e.g, `--localize-symbol` and `--keep-global-symbol`, for MachO.