Commit graph

512 commits

Author SHA1 Message Date
S-H-GAMELINKS
5b467400d2 [DOC]Some link prefix replace 2022-04-09 17:43:46 +09:00
S-H-GAMELINKS
bff12e1a9a [DOC] Fix comment links 2022-04-07 10:37:52 +09:00
Alan Wu
2222032979
Remove dependency on libcapstone
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
2022-03-31 17:26:28 -04:00
Nobuyoshi Nakada
2cb3efffcf
Extract RUBY_REQUIRE_FUNCS 2022-03-28 16:56:15 +09:00
Nobuyoshi Nakada
7470780058 Check if __assume is supported 2022-02-19 23:32:52 +09:00
Nobuyoshi Nakada
131154f878 Define HAVE___BUILTIN_UNREACHABLE instead of UNREACHABLE
`UNREACHABLE` in ruby/internal/has/builtin.h is only used as just
a flag now, and redefined in ruby/backward/2/assume.h then.
2022-02-19 23:32:52 +09:00
Nobuyoshi Nakada
4113862c00 Do not search for commands with double tool prefixes [Bug #18504]
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.
2022-02-17 22:47:02 +09:00
Nobuyoshi Nakada
bffd6cbd97
Check if execv is available for ruby/missing.h
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 []);
      |                 ^~~~~
```
2022-01-26 18:23:51 +09:00
Nobuyoshi Nakada
4010cbfe35
Use the prefixed pkg-config command 2022-01-26 15:56:22 +09:00
Nobuyoshi Nakada
2c25427496
GCC provides -Wdiv-by-zero 2022-01-22 20:09:56 +09:00
Nobuyoshi Nakada
71bc999009
MinGW also uses rb_w32_shutdown
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.
2022-01-20 01:18:49 +09:00
Nobuyoshi Nakada
5646f4b67b
Fix a missing comma 2022-01-19 14:46:27 +09:00
Yuta Saito
bb2228817f [wasm] configure.ac: disable mjit on wasi by default 2022-01-19 11:19:06 +09:00
Yuta Saito
df31fa4a51 [wasm] configure.ac: don't require dup and dup2 only for wasi 2022-01-19 11:19:06 +09:00
Yuta Saito
3794ef6f01 configure.ac: stop overwriting cc wrapper by darwin-cc everytime 2022-01-19 11:19:06 +09:00
Yuta Saito
a4b73f1ba8 [wasm] add coroutine/asyncify implementation
set the default coroutine_type as asyncify when wasi
2022-01-19 11:19:06 +09:00
Yuta Saito
7ee786388a [wasm] wasm/missing.{c,h}: add missing libc stubs for wasi-libc 2022-01-19 11:19:06 +09:00
Yuta Saito
65f95f26ff [wasm] add asyncify based setjmp, fiber, register scan emulation
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
2022-01-19 11:19:06 +09:00
Yuta Saito
e41b121e94 [wasm] configure.ac: setup platform specific libraries
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.
2022-01-19 11:19:06 +09:00
Yuta Saito
8a50a6b6f9 [wasm] configure.ac: disable stack-protector
clang does not yet support stack-protector for wasm
2022-01-19 11:19:06 +09:00
Peter Zhu
ffda21b7ba [Feature #18491] Drop support for HP-UX
IA64 support was dropped in ticket #15894, so we can drop support for
HP-UX.
2022-01-18 09:52:15 -05:00
Yuta Saito
ae51f304d2 io_buffer.c: use mremap based resizing only when mremap available
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
2022-01-07 02:13:19 +09:00
Nobuyoshi Nakada
c87c027f18 configure.in: unexpand exec_prefix in includedir
Replace `exec_prefix` in includedir as well as bindir, libdir, and
so on. [Bug #18373]
2021-12-24 19:11:10 +09:00
Nobuyoshi Nakada
ec878dac90
Move -ljemalloc to DLDLIBS [Bug #18391]
Set the alternative memory management library only as a platform
specific library, without other libraries.
2021-12-07 15:20:02 +09:00
Naohisa Goto
e59f3054c3 Delete #if line during checking madvise() on Solaris
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-30 16:39:31 +09:00
Nobuyoshi Nakada
316caf6b39
Enable load-relative on Solaris 2021-11-30 12:40:02 +09:00
Nobuyoshi Nakada
f379748e80
Cache wheather madvise declaration is needed on Solaris 2021-11-30 11:12:21 +09:00
Nobuyoshi Nakada
12fbdf4d4e
Fix conflicting declaration on Solaris
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-30 09:10:58 +09:00
Naohisa Goto
8287d2f23c Workaround for implicit declaration of function 'madvise' on Solaris
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-30 00:03:04 +09:00
Yusuke Endoh
9fc7ea64a1 configure.ac: don't use shutdown on emscripten
... to absorb a change on Ubuntu 21.10
2021-11-03 14:00:51 +09:00
Yuta Saito
ccda26efe7 Split thread-model config into another ac file
This is a first step to allow the thread-model implementation to be
switched by configure's option
2021-10-30 10:18:33 +09:00
Nobuyoshi Nakada
5ff47e0c8a Check old-style definitions 2021-10-27 16:28:10 +09:00
Alan Wu
28632ea7ba Mention YJIT in Capstone autoconf check 2021-10-20 18:19:43 -04:00
Aaron Patterson
7efde1bfb4 conditionally add libcapstone 2021-10-20 18:19:27 -04:00
Aaron Patterson
e427fdff0a Directly link libcapstone for easier development
This lets us use libcapstone directly from miniruby so we don't need a
Ruby Gem to to dev work.

Example usage:

```ruby
def foo(x)
  if x < 1
    "wow"
  else
    "neat"
  end
end

iseq = RubyVM::InstructionSequence.of(method(:foo))
puts UJIT.disasm(iseq)
100.times { foo 1 }
puts UJIT.disasm(iseq)
```

Then in the terminal

```
$ ./miniruby test.rb

== disasm: #<ISeq:foo@test.rb:1 (1,0)-(7,3)> (catch: FALSE)
local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 1] x@0<Arg>
0000 getlocal_WC_0                          x@0                       (   2)[LiCa]
0002 putobject_INT2FIX_1_
0003 opt_lt                                 <calldata!mid:<, argc:1, ARGS_SIMPLE>
0005 branchunless                           10
0007 putstring                              "wow"                     (   3)[Li]
0009 leave                                                            (   7)[Re]
0010 putstring                              "neat"                    (   5)[Li]
0012 leave                                                            (   7)[Re]

== ISEQ RANGE: 10 -> 10 ========================================================
        0x0:    movabs  rax, 0x7fe816e2d1a0
        0xa:    mov     qword ptr [rdi], rax
        0xd:    mov     r8, rax
        0x10:   mov     r9, rax
        0x13:   mov     r11, r12
        0x16:   jmp     qword ptr [rax]
== ISEQ RANGE: 0 -> 7 ==========================================================
        0x0:    mov     rax, qword ptr [rdi + 0x20]
        0x4:    mov     rax, qword ptr [rax - 0x18]
        0x8:    mov     qword ptr [rdx], rax
        0xb:    mov     qword ptr [rdx + 8], 3
        0x13:   movabs  rax, 0x7fe817808200
        0x1d:   test    byte ptr [rax + 0x3e6], 1
        0x24:   jne     0x3ffff7b
        0x2a:   test    byte ptr [rdx], 1
        0x2d:   je      0x3ffff7b
        0x33:   test    byte ptr [rdx + 8], 1
        0x37:   je      0x3ffff7b
        0x3d:   mov     rax, qword ptr [rdx]
        0x40:   cmp     rax, qword ptr [rdx + 8]
        0x44:   movabs  rax, 0
        0x4e:   movabs  rcx, 0x14
        0x58:   cmovl   rax, rcx
        0x5c:   mov     qword ptr [rdx], rax
        0x5f:   test    qword ptr [rdx], -9
        0x66:   jne     0x3ffffd5
```

Make sure to `brew install pkg-config capstone`
2021-10-20 18:19:27 -04:00
David CARLIER
dfe944bfbe haiku configure fix (again). 2021-10-18 17:40:19 +09:00
David CARLIER
1831693c1f haiku build update stack overflow check in libroot (haiku's libc) now 2021-10-17 14:00:59 +09:00
Jeremy Evans
06c3e80611 Do not allow configuration where neither static or shared library is installed
Fixes [Bug #18000]
2021-10-08 14:01:54 -09:00
Nobuyoshi Nakada
e0ef4899f3 [Win32] Prefer Cryptography Next Generation API
[BCryptGenRandom] is available since Windows Vista / Windows
Server 2008.

Regarding [CryptGenRandom]:
> This API is deprecated. New and existing software should start
> using Cryptography Next Generation APIs. Microsoft may remove
> this API in future releases.

[BCryptGenRandom]: https://docs.microsoft.com/en-us/windows/win32/api/bcrypt/nf-bcrypt-bcryptgenrandom
[CryptGenRandom]: https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptgenrandom
2021-10-02 21:22:33 +09:00
Nobuyoshi Nakada
0ad3ed5e0e
Checks for CPU specific header on universal build 2021-10-01 20:30:10 +09:00
Nobuyoshi Nakada
ca3cc677b3
Define ACTION-IF-UNIVERSAL of AC_C_BIGENDIAN [Bug #18156]
As we do not use config.h.in, just define the helper macro
instead.
2021-10-01 10:56:11 +09:00
Nobuyoshi Nakada
912a8dcfc5
Needs AC_PROG_CC
Although `AC_PROG_CC_C99` has been obsolete, `AC_PROG_CC` is not
and the latter is necessary not to make C++ compiler mandatory.
2021-09-30 19:22:08 +09:00
Lars Kanis
576b2e64cd MINGW-UCRT: Set CONFIG['arch'] and RUBY_PLATFORM to "x64-mingw-ucrt"
This allows easy differentiation between ABI incompatible platforms like MSWIN64 and MSVCRT-based MINGW32.
This also implicates a distinct rubygem platform which is also "x64-mingw-ucrt".

Although the term "mingw32" is the OS-part for 64 bit systems as well, the "32" is misleading and confusing for many users.
Therefore the new platform string drops the "32" from the OS part to just "mingw".
This conforms to the common practice of windows platform testing per RUBY_PLATFORM=~/mswin|mingw/ .
2021-09-20 00:15:30 +09:00
xtkoba (Tee KOBAYASHI)
637d7288f3 MINGW: More permissive pattern matching for coroutine
Pattern matching for target_os in configure script should be permissive if we consider suffixing something onto "mingw32".
2021-09-20 00:15:30 +09:00
xtkoba (Tee KOBAYASHI)
8bda512878 MINGW: set rb_cv_msvcrt=ucrt and RT_VER=140 when UCRT is used 2021-09-20 00:15:30 +09:00
DC
a8fe7c9e2a coroutine enables assembly version for dragonflybsd. 2021-09-13 08:12:15 +12:00
Nobuyoshi Nakada
b76ad15ed0
Remove stale DLEXT2
Actually disabled at 181a3a2af5 in
2004,  it has remained in config.status and been carried over to
rbconfig.rb.
2021-09-10 14:51:56 +09:00
Nobuyoshi Nakada
7487371eeb
Make ruby.pc from make
Expand variables undefined in configure.ac, RUBY_RELEASE_DATE and
so on.
2021-08-29 14:08:53 +09:00
Nobuyoshi Nakada
623736ae7f
Move DEFFILE to EXTDLDFLAGS
So that it is no longer needed in ruby.pc.in.
2021-08-29 13:04:42 +09:00
Nobuyoshi Nakada
80c1faf076
Use C99-defined signbit macro 2021-08-27 12:42:23 +09:00