summaryrefslogtreecommitdiff
path: root/configure.ac
AgeCommit message (Collapse)Author
2022-06-27[Bug #18879] Fix macOS version detectionsNobuyoshi Nakada
macOS's AvailabilityMacros.h does not contain macros for future versions. If a version macro is not defined, consider only earlier versions to be targeted.
2022-06-20[Feature #18839] Drop support for gcc 3 [ci skip]Nobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/6037
2022-06-18Show gcc version if too old, and move to GCC block [ci skip]Nobuyoshi Nakada
2022-06-18Disable maybe-uninitialized warning for gcc 4Nobuyoshi Nakada
It often shows false positive warnings (at least in 4.8). Newer versions work well and we can check correct warnings.
2022-06-18Disable Mach exception handlers when read barriers in placeKJ Tsanaktsidis
The GC compaction mechanism implements a kind of read barrier by marking some (OS) pages as unreadable, and installing a SIGBUS/SIGSEGV handler to detect when they're accessed and invalidate an attempt to move the object. Unfortunately, when a debugger is attached to the Ruby interpreter on Mac OS, the debugger will trap the EXC_BAD_ACCES mach exception before the runtime can transform that into a SIGBUS signal and dispatch it. Thus, execution gets stuck; any attempt to continue from the debugger re-executes the line that caused the exception and no forward progress can be made. This makes it impossible to debug either the Ruby interpreter or a C extension whilst compaction is in use. To fix this, we disable the EXC_BAD_ACCESS handler when installing the SIGBUS/SIGSEGV handlers, and re-enable them once the compaction is done. The debugger will still trap on the attempt to read the bad page, but it will be trapping the SIGBUS signal, rather than the EXC_BAD_ACCESS mach exception. It's possible to continue from this in the debugger, which invokes the signal handler and allows forward progress to be made. Notes: Merged: https://github.com/ruby/ruby/pull/5991
2022-06-17Update configure.acJeremiah Gowdy
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Notes: Merged: https://github.com/ruby/ruby/pull/6025
2022-06-17Add branch protection to aarch64 targetsJeremiah Gowdy
Notes: Merged: https://github.com/ruby/ruby/pull/6025
2022-06-13Drop MinGW support of MJIT (#6012)Takashi Kokubun
[Feature #18824] Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-06-06Remove useless assignment always overriddenNobuyoshi Nakada
2022-06-06Export RbConfig::CONFIG["COROUTINE_TYPE"]nick evans
THREAD_MODEL is exported already, so this matches that. Exporting this is simpler than inspecting configure_args and arch and matching that up with a specific configure.ac. Fix GH-5976
2022-05-22Disable usage of TLS unless availableNobuyoshi Nakada
Thread-local storage is supported since Mac OS X 10.7. Enable TLS only when the target version is enough.
2022-05-22Check if thread-local storage is supported on macOSNobuyoshi Nakada
We need thread-local storage on Clang, since 319afed20fba.
2022-05-22Ruby31: add support for Darwin ppc/ppc64 (#5927)Sergey Fedorov
* add coroutines for ppc & ppc64 * fix universal coroutine to include ppc & ppc64 * add powerpc*-darwin to configure.ac * fix thread_pthread for older systems Notes: Merged-By: ioquatix <samuel@codeotaku.com>
2022-05-12mkmf: Add a configure option to set verbose mode (V=1 or 0) in mkmf.rb.Jun Aruga
Note this change is only for `configure.ac`, not for Windows using `win32/configure.bat`. ``` $ ./configure --help | grep mkmf --enable-mkmf-verbose enable verbose in mkmf ``` Run the following command to enable the mkmf verbose mode. ``` $ ./configure --enable-mkmf-verbose $ grep MKMF_VERBOSE config.status S["MKMF_VERBOSE"]="1" ``` In this mkmf verbose mode, when compiling a native extension, the `rake compile` prints the compiling commands such as "gcc -I. <...> path/to/file" instead of "compiling path/to/file". ``` $ git clone https://github.com/deivid-rodriguez/byebug.git $ cd byebug $ bundle install --standalone $ bundle exec rake compile ... gcc -I. <...> path/to/file ... ``` Notes: Merged: https://github.com/ruby/ruby/pull/5879
2022-05-10Honor --with-thread option to enable pthreadNobuyoshi Nakada
2022-04-28Don't set LDFLAGS by defaultAaron Patterson
This fixes a bug where Ruby on macOS running on ARM would try to look in `/usr/local/lib` for things to link against, but the libraries in that directory are from the x86 installation of Homebrew [ruby-core:108424] Notes: Merged: https://github.com/ruby/ruby/pull/5855
2022-04-27Rust YJITAlan Wu
In December 2021, we opened an [issue] to solicit feedback regarding the porting of the YJIT codebase from C99 to Rust. There were some reservations, but this project was given the go ahead by Ruby core developers and Matz. Since then, we have successfully completed the port of YJIT to Rust. The new Rust version of YJIT has reached parity with the C version, in that it passes all the CRuby tests, is able to run all of the YJIT benchmarks, and performs similarly to the C version (because it works the same way and largely generates the same machine code). We've even incorporated some design improvements, such as a more fine-grained constant invalidation mechanism which we expect will make a big difference in Ruby on Rails applications. Because we want to be careful, YJIT is guarded behind a configure option: ```shell ./configure --enable-yjit # Build YJIT in release mode ./configure --enable-yjit=dev # Build YJIT in dev/debug mode ``` By default, YJIT does not get compiled and cargo/rustc is not required. If YJIT is built in dev mode, then `cargo` is used to fetch development dependencies, but when building in release, `cargo` is not required, only `rustc`. At the moment YJIT requires Rust 1.60.0 or newer. The YJIT command-line options remain mostly unchanged, and more details about the build process are documented in `doc/yjit/yjit.md`. The CI tests have been updated and do not take any more resources than before. The development history of the Rust port is available at the following commit for interested parties: https://github.com/Shopify/ruby/commit/1fd9573d8b4b65219f1c2407f30a0a60e537f8be Our hope is that Rust YJIT will be compiled and included as a part of system packages and compiled binaries of the Ruby 3.2 release. We do not anticipate any major problems as Rust is well supported on every platform which YJIT supports, but to make sure that this process works smoothly, we would like to reach out to those who take care of building systems packages before the 3.2 release is shipped and resolve any issues that may come up. [issue]: https://bugs.ruby-lang.org/issues/18481 Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> Co-authored-by: Noah Gibbs <the.codefolio.guy@gmail.com> Co-authored-by: Kevin Newton <kddnewton@gmail.com> Notes: Merged: https://github.com/ruby/ruby/pull/5826
2022-04-09[DOC]Some link prefix replaceS-H-GAMELINKS
Notes: Merged: https://github.com/ruby/ruby/pull/5783
2022-04-07[DOC] Fix comment linksS-H-GAMELINKS
Notes: Merged: https://github.com/ruby/ruby/pull/5765
2022-03-31Remove dependency on libcapstoneAlan Wu
We have received reports of build failures due to this configuration check modifying compile flags. Since only YJIT devs use this library we can remove it to make Ruby easier to build for users. See: https://github.com/rbenv/ruby-build/discussions/1933 Notes: Merged: https://github.com/ruby/ruby/pull/5744 Merged-By: XrXr
2022-03-28Extract RUBY_REQUIRE_FUNCSNobuyoshi Nakada
2022-02-19Check if `__assume` is supportedNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/5577
2022-02-19Define `HAVE___BUILTIN_UNREACHABLE` instead of `UNREACHABLE`Nobuyoshi Nakada
`UNREACHABLE` in ruby/internal/has/builtin.h is only used as just a flag now, and redefined in ruby/backward/2/assume.h then. Notes: Merged: https://github.com/ruby/ruby/pull/5577
2022-02-17Do not search for commands with double tool prefixes [Bug #18504]Nobuyoshi Nakada
The `CC` found by `AC_CHECK_TOOL` is prefixed by the host triplet when cross compiling. To search for commands with `AC_CHECK_TOOL` based on that `CC` means to search also doubly prefixed names. Notes: Merged: https://github.com/ruby/ruby/pull/5565
2022-01-26Check if `execv` is available for ruby/missing.hNobuyoshi Nakada
As MinGW has the declaration, the `dllimport` attribute difference is warned when compiling missing/*.c without including ruby/win32.h. ``` ../src/include/ruby/missing.h:316:17: warning: 'execv' redeclared without dllimport attribute: previous dllimport ignored [-Wattributes] 316 | RUBY_EXTERN int execv(const char *, char *const []); | ^~~~~ ``` Notes: Merged: https://github.com/ruby/ruby/pull/5491 Merged-By: nobu <nobu@ruby-lang.org>
2022-01-26Use the prefixed pkg-config commandNobuyoshi Nakada
2022-01-22GCC provides -Wdiv-by-zeroNobuyoshi Nakada
2022-01-20MinGW also uses `rb_w32_shutdown`Nobuyoshi Nakada
Winsock's `shutdown` is incompatible with the other platforms. And autoconf fails to detect WINAPI functions on 32bit Windows, probably due to the argument size suffixes. Notes: Merged: https://github.com/ruby/ruby/pull/5469 Merged-By: nobu <nobu@ruby-lang.org>
2022-01-19Fix a missing commaNobuyoshi Nakada
2022-01-19[wasm] configure.ac: disable mjit on wasi by defaultYuta Saito
Notes: Merged: https://github.com/ruby/ruby/pull/5407
2022-01-19[wasm] configure.ac: don't require dup and dup2 only for wasiYuta Saito
Notes: Merged: https://github.com/ruby/ruby/pull/5407
2022-01-19configure.ac: stop overwriting cc wrapper by darwin-cc everytimeYuta Saito
Notes: Merged: https://github.com/ruby/ruby/pull/5407
2022-01-19[wasm] add coroutine/asyncify implementationYuta Saito
set the default coroutine_type as asyncify when wasi Notes: Merged: https://github.com/ruby/ruby/pull/5407
2022-01-19[wasm] wasm/missing.{c,h}: add missing libc stubs for wasi-libcYuta Saito
Notes: Merged: https://github.com/ruby/ruby/pull/5407
2022-01-19[wasm] add asyncify based setjmp, fiber, register scan emulationYuta Saito
configure.ac: setup build tools and register objects main.c: wrap main with rb_wasm_rt_start to handle asyncify unwinds tool/m4/ruby_wasm_tools.m4: setup default command based on WASI_SDK_PATH environment variable. checks wasm-opt which is used for asyncify. tool/wasm-clangw wasm/wasm-opt: a clang wrapper which replaces real wasm-opt with do-nothing wasm-opt to avoid misoptimization before asyncify. asyncify is performed at POSTLINK, but clang linker driver tries to run optimization by wasm-opt unconditionally. inlining pass at wasm level breaks asyncify's assumption, so should not optimize before POSTLIK. wasm/GNUmakefile.in: wasm specific rules to compile objects Notes: Merged: https://github.com/ruby/ruby/pull/5407
2022-01-19[wasm] configure.ac: setup platform specific librariesYuta Saito
These flags are very wasi-libc version specific, so updating wasi-libc may break the build. But supporting multiple wasi-libc versions in ruby doesn't have much benefit because wasi-libc is not installed in most systems. Notes: Merged: https://github.com/ruby/ruby/pull/5407
2022-01-19[wasm] configure.ac: disable stack-protectorYuta Saito
clang does not yet support stack-protector for wasm Notes: Merged: https://github.com/ruby/ruby/pull/5407
2022-01-18[Feature #18491] Drop support for HP-UXPeter Zhu
IA64 support was dropped in ticket #15894, so we can drop support for HP-UX. Notes: Merged: https://github.com/ruby/ruby/pull/5457
2022-01-07io_buffer.c: use mremap based resizing only when mremap availableYuta Saito
some libc implementations (e.g. wasi-libc) define MREMAP_MAYMOVE, but don't have mremap itself, so guard the use of mremap by HAVE_MREMAP Notes: Merged: https://github.com/ruby/ruby/pull/5401
2021-12-24configure.in: unexpand exec_prefix in includedirNobuyoshi Nakada
Replace `exec_prefix` in includedir as well as bindir, libdir, and so on. [Bug #18373] Notes: Merged: https://github.com/ruby/ruby/pull/5318
2021-12-07Move -ljemalloc to DLDLIBS [Bug #18391]Nobuyoshi Nakada
Set the alternative memory management library only as a platform specific library, without other libraries. Notes: Merged: https://github.com/ruby/ruby/pull/5223
2021-11-30Delete #if line during checking madvise() on SolarisNaohisa Goto
The madvise() declaration should always be compiled on Solaris to check whether the declaration is good on the environment. For the purpose, the #if line is unnecessary. (There was also a trivial typo that the #if was not closed by #endif and the check always failed with preprocessor error.)
2021-11-30Enable load-relative on SolarisNobuyoshi Nakada
2021-11-30Cache wheather madvise declaration is needed on SolarisNobuyoshi Nakada
2021-11-30Fix conflicting declaration on SolarisNobuyoshi Nakada
SunC ``` "cont.c", line 24: identifier redeclared: madvise current : function(pointer to char, unsigned int, int) returning int previous: function(pointer to void, unsigned int, int) returning int : "/usr/include/sys/mman.h", line 232 ``` GCC ``` cont.c:24:12: error: conflicting types for 'madvise' 24 | extern int madvise(caddr_t, size_t, int); | ^~~~~~~ In file included from cont.c:16: /usr/include/sys/mman.h:232:12: note: previous declaration of 'madvise' was here 232 | extern int madvise(void *, size_t, int); | ^~~~~~~ ```
2021-11-30Workaround for implicit declaration of function 'madvise' on SolarisNaohisa Goto
On Solaris, madvise(3C) is NOT defined for SUS (XPG4v2) or later, but MADV_* macros are defined when __EXTENSIONS__ is defined. This may cause compile error on Solaris 10 with GCC when "-Werror=implicit-function-declaration" and "-D_XOPEN_SOURCE=600" are added by configure.
2021-11-03configure.ac: don't use shutdown on emscriptenYusuke Endoh
... to absorb a change on Ubuntu 21.10
2021-10-30Split thread-model config into another ac fileYuta Saito
This is a first step to allow the thread-model implementation to be switched by configure's option Notes: Merged: https://github.com/ruby/ruby/pull/5043
2021-10-27Check old-style definitionsNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/5034
2021-10-20Mention YJIT in Capstone autoconf checkAlan Wu