mirror of
https://github.com/ruby/ruby.git
synced 2025-09-16 17:14:01 +02:00
merge revision(s) f96216df8dfd2d1e206150572912289f4dda7386,0091fac1d8de07e86fef8315ba77609bed9dd7f5,04c704c5c967ea9bded6bf645439fe59c7d9f7d6,23655e6de5ee989feb8c65c7061fe9a71579dc54,7cb8904a12c850ee30dcd67817fa2f9dc3fee813,41168f69fbeb32cfc88210911d62e419b8116589,87f6154bb4c67ca77ee353bb1fe25a922036c0e5: [Backport #17202]
Remove "All Rights Reserved." from Copyright statement. Patch assembly so that it aligns properly Removed trailing spaces [ci skip] Fix build error on Apple silicon macOS This patch will fix following build error on macOS 11.0 + Xcode 12 beta. ``` $ ./configure $ make V=1 BASERUBY = /Users/watson/.rbenv/shims/ruby --disable=gems CC = clang -fdeclspec LD = ld LDSHARED = clang -fdeclspec -dynamiclib CFLAGS = -O3 -ggdb3 -Wall -Wextra -Werror=deprecated-declarations -Werror=division-by-zero -Werror=implicit-function-declaration -Werror=implicit-int -Werror=misleading-indentation -Werror=pointer-arith -Werror=shorten-64-to-32 -Werror=write-strings -Wmissing-noreturn -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wunused-variable -Werror=extra-tokens -std=gnu99 -pipe XCFLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -DRUBY_DEVEL=1 -fvisibility=hidden -DRUBY_EXPORT -fPIE -DCANONICALIZATION_FOR_MATHN -I. -I.ext/include/arm64-darwin20 -I./include -I. -I./enc/unicode/12.1.0 CPPFLAGS = -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT DLDFLAGS = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -fstack-protector-strong -Wl,-pie -framework Security -framework Foundation SOLIBS = -lpthread -ldl -lobjc LANG = ja_JP.UTF-8 LC_ALL = LC_CTYPE = MFLAGS = Apple clang version 12.0.0 (clang-1200.0.22.19) Target: arm64-apple-darwin20.0.0 Thread model: posix InstalledDir: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin clang -fdeclspec -O3 -ggdb3 -Wall -Wextra -Werror=deprecated-declarations -Werror=division-by-zero -Werror=implicit-function-declaration -Werror=implicit-int -Werror=misleading-indentation -Werror=pointer-arith -Werror=shorten-64-to-32 -Werror=write-strings -Wmissing-noreturn -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wunused-variable -Werror=extra-tokens -std=gnu99 -pipe -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -DRUBY_DEVEL=1 -fvisibility=hidden -DRUBY_EXPORT -fPIE -DCANONICALIZATION_FOR_MATHN -I. -I.ext/include/arm64-darwin20 -I./include -I. -I./enc/unicode/12.1.0 -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -o cont.o -c cont.c In file included from cont.c:19: ./coroutine/ucontext/Context.h:32:5: error: 'getcontext' is deprecated: first deprecated in macOS 10.6 [-Werror,-Wdeprecated-declarations] getcontext(&context->state); ^ /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ucontext.h:37:6: note: 'getcontext' has been explicitly marked deprecated here int getcontext(ucontext_t *) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_2_0, __IPHONE_2_0) __WATCHOS_PROHIBITED __TVOS_PROHIBITED; ^ In file included from cont.c:19: ./coroutine/ucontext/Context.h:51:5: error: 'makecontext' is deprecated: first deprecated in macOS 10.6 [-Werror,-Wdeprecated-declarations] makecontext(&context->state, (void(*)(void))coroutine_trampoline, 2, (void*)start, (void*)context); ^ /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ucontext.h:38:6: note: 'makecontext' has been explicitly marked deprecated here void makecontext(ucontext_t *, void (*)(), int, ...) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_2_0, __IPHONE_2_0) __WATCHOS_PROHI... ^ In file included from cont.c:19: ./coroutine/ucontext/Context.h:59:5: error: 'swapcontext' is deprecated: first deprecated in macOS 10.6 [-Werror,-Wdeprecated-declarations] swapcontext(¤t->state, &target->state); ^ /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ucontext.h:40:6: note: 'swapcontext' has been explicitly marked deprecated here int swapcontext(ucontext_t * __restrict, const ucontext_t * __restrict) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_2_0, __IPHONE_... ^ 3 errors generated. make: *** [cont.o] Error 1 ``` Extract correct processor name for ARM64 Macs Prefix export symbol prefix to coroutine_transfer Revert "Revert "[ruby/fiddle] Use ffi_closure_free by default. (#20)"" This reverts commitefd641ffab
. This changeset seems to be needed to suppress a warning on Ubuntu 20.0420200304
T033004Z.log.html.gz ``` closure.c:264:5: warning: 'ffi_prep_closure' is deprecated: use ffi_prep_closure_loc instead [-Wdeprecated-declarations] 264 | result = ffi_prep_closure(pcl, cif, callback, (void *)self); | ^~~~~~ ``` I guess there was a reason why the commit was reverted (maybe some CIs failed?), so try it again.
This commit is contained in:
parent
ea347990a5
commit
f469298339
19 changed files with 51 additions and 68 deletions
|
@ -2309,6 +2309,9 @@ AS_CASE([$rb_cv_coroutine], [yes|''], [
|
||||||
[x*64-darwin*], [
|
[x*64-darwin*], [
|
||||||
rb_cv_coroutine=amd64
|
rb_cv_coroutine=amd64
|
||||||
],
|
],
|
||||||
|
[arm64-darwin*], [
|
||||||
|
rb_cv_coroutine=arm64
|
||||||
|
],
|
||||||
[x*64-linux*], [
|
[x*64-linux*], [
|
||||||
AS_CASE(["$ac_cv_sizeof_voidp"],
|
AS_CASE(["$ac_cv_sizeof_voidp"],
|
||||||
[8], [ rb_cv_coroutine=amd64 ],
|
[8], [ rb_cv_coroutine=amd64 ],
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
## This file is part of the "Coroutine" project and released under the MIT License.
|
## This file is part of the "Coroutine" project and released under the MIT License.
|
||||||
##
|
##
|
||||||
## Created by Samuel Williams on 10/5/2018.
|
## Created by Samuel Williams on 10/5/2018.
|
||||||
## Copyright, 2018, by Samuel Williams. All rights reserved.
|
## Copyright, 2018, by Samuel Williams.
|
||||||
##
|
##
|
||||||
|
|
||||||
#define TOKEN_PASTE(x,y) x##y
|
#define TOKEN_PASTE(x,y) x##y
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* This file is part of the "Coroutine" project and released under the MIT License.
|
* This file is part of the "Coroutine" project and released under the MIT License.
|
||||||
*
|
*
|
||||||
* Created by Samuel Williams on 10/5/2018.
|
* Created by Samuel Williams on 10/5/2018.
|
||||||
* Copyright, 2018, by Samuel Williams. All rights reserved.
|
* Copyright, 2018, by Samuel Williams.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
|
@ -2,21 +2,28 @@
|
||||||
## This file is part of the "Coroutine" project and released under the MIT License.
|
## This file is part of the "Coroutine" project and released under the MIT License.
|
||||||
##
|
##
|
||||||
## Created by Samuel Williams on 10/5/2018.
|
## Created by Samuel Williams on 10/5/2018.
|
||||||
## Copyright, 2018, by Samuel Williams. All rights reserved.
|
## Copyright, 2018, by Samuel Williams.
|
||||||
##
|
##
|
||||||
|
|
||||||
.text
|
#define TOKEN_PASTE(x,y) x##y
|
||||||
|
#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
|
||||||
|
|
||||||
.globl coroutine_transfer
|
.file "Context.S"
|
||||||
coroutine_transfer:
|
.text
|
||||||
|
.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
|
||||||
|
.align 2
|
||||||
|
.type PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer),%function
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
|
PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
|
||||||
# Save caller state (8 registers + return address)
|
# Save caller state (8 registers + return address)
|
||||||
push {r4-r11,lr}
|
push {r4-r11,lr}
|
||||||
|
|
||||||
# Save caller stack pointer
|
# Save caller stack pointer
|
||||||
str sp, [r0]
|
str sp, [r0]
|
||||||
|
|
||||||
# Restore callee stack pointer
|
# Restore callee stack pointer
|
||||||
ldr sp, [r1]
|
ldr sp, [r1]
|
||||||
|
|
||||||
# Restore callee state (8 registers program counter)
|
# Restore callee state (8 registers program counter)
|
||||||
pop {r4-r11,pc}
|
pop {r4-r11,pc}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* This file is part of the "Coroutine" project and released under the MIT License.
|
* This file is part of the "Coroutine" project and released under the MIT License.
|
||||||
*
|
*
|
||||||
* Created by Samuel Williams on 10/5/2018.
|
* Created by Samuel Williams on 10/5/2018.
|
||||||
* Copyright, 2018, by Samuel Williams. All rights reserved.
|
* Copyright, 2018, by Samuel Williams.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
|
@ -2,18 +2,21 @@
|
||||||
## This file is part of the "Coroutine" project and released under the MIT License.
|
## This file is part of the "Coroutine" project and released under the MIT License.
|
||||||
##
|
##
|
||||||
## Created by Samuel Williams on 10/5/2018.
|
## Created by Samuel Williams on 10/5/2018.
|
||||||
## Copyright, 2018, by Samuel Williams. All rights reserved.
|
## Copyright, 2018, by Samuel Williams.
|
||||||
##
|
##
|
||||||
|
|
||||||
|
#define TOKEN_PASTE(x,y) x##y
|
||||||
|
#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.align 2
|
.align 2
|
||||||
|
|
||||||
.global coroutine_transfer
|
.global PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
|
||||||
coroutine_transfer:
|
PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
|
||||||
|
|
||||||
# Make space on the stack for caller registers
|
# Make space on the stack for caller registers
|
||||||
sub sp, sp, 0xb0
|
sub sp, sp, 0xb0
|
||||||
|
|
||||||
# Save caller registers
|
# Save caller registers
|
||||||
stp d8, d9, [sp, 0x00]
|
stp d8, d9, [sp, 0x00]
|
||||||
stp d10, d11, [sp, 0x10]
|
stp d10, d11, [sp, 0x10]
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* This file is part of the "Coroutine" project and released under the MIT License.
|
* This file is part of the "Coroutine" project and released under the MIT License.
|
||||||
*
|
*
|
||||||
* Created by Samuel Williams on 10/5/2018.
|
* Created by Samuel Williams on 10/5/2018.
|
||||||
* Copyright, 2018, by Samuel Williams. All rights reserved.
|
* Copyright, 2018, by Samuel Williams.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* This file is part of the "Coroutine" project and released under the MIT License.
|
* This file is part of the "Coroutine" project and released under the MIT License.
|
||||||
*
|
*
|
||||||
* Created by Samuel Williams on 24/6/2019.
|
* Created by Samuel Williams on 24/6/2019.
|
||||||
* Copyright, 2019, by Samuel Williams. All rights reserved.
|
* Copyright, 2019, by Samuel Williams.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "Context.h"
|
#include "Context.h"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* This file is part of the "Coroutine" project and released under the MIT License.
|
* This file is part of the "Coroutine" project and released under the MIT License.
|
||||||
*
|
*
|
||||||
* Created by Samuel Williams on 27/6/2019.
|
* Created by Samuel Williams on 27/6/2019.
|
||||||
* Copyright, 2019, by Samuel Williams. All rights reserved.
|
* Copyright, 2019, by Samuel Williams.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
|
#define TOKEN_PASTE(x,y) x##y
|
||||||
|
#define PREFIXED_SYMBOL(prefix,name) TOKEN_PASTE(prefix,name)
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.align 2
|
.align 2
|
||||||
|
|
||||||
.globl coroutine_transfer
|
.globl PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer)
|
||||||
.type coroutine_transfer, @function
|
.type PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer), @function
|
||||||
coroutine_transfer:
|
PREFIXED_SYMBOL(SYMBOL_PREFIX,coroutine_transfer):
|
||||||
# Make space on the stack for caller registers
|
# Make space on the stack for caller registers
|
||||||
addi 1,1,-152
|
addi 1,1,-152
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* This file is part of the "Coroutine" project and released under the MIT License.
|
* This file is part of the "Coroutine" project and released under the MIT License.
|
||||||
*
|
*
|
||||||
* Created by Samuel Williams on 24/6/2019.
|
* Created by Samuel Williams on 24/6/2019.
|
||||||
* Copyright, 2019, by Samuel Williams. All rights reserved.
|
* Copyright, 2019, by Samuel Williams.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* According to Solaris' ucontext.h, makecontext, etc. are removed in SUSv4.
|
/* According to Solaris' ucontext.h, makecontext, etc. are removed in SUSv4.
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
;; This file is part of the "Coroutine" project and released under the MIT License.
|
;; This file is part of the "Coroutine" project and released under the MIT License.
|
||||||
;;
|
;;
|
||||||
;; Created by Samuel Williams on 10/5/2018.
|
;; Created by Samuel Williams on 10/5/2018.
|
||||||
;; Copyright, 2018, by Samuel Williams. All rights reserved.
|
;; Copyright, 2018, by Samuel Williams.
|
||||||
;;
|
;;
|
||||||
|
|
||||||
.386
|
.386
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
## This file is part of the "Coroutine" project and released under the MIT License.
|
## This file is part of the "Coroutine" project and released under the MIT License.
|
||||||
##
|
##
|
||||||
## Created by Samuel Williams on 4/11/2018.
|
## Created by Samuel Williams on 4/11/2018.
|
||||||
## Copyright, 2018, by Samuel Williams. All rights reserved.
|
## Copyright, 2018, by Samuel Williams.
|
||||||
##
|
##
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
;; This file is part of the "Coroutine" project and released under the MIT License.
|
;; This file is part of the "Coroutine" project and released under the MIT License.
|
||||||
;;
|
;;
|
||||||
;; Created by Samuel Williams on 10/5/2018.
|
;; Created by Samuel Williams on 10/5/2018.
|
||||||
;; Copyright, 2018, by Samuel Williams. All rights reserved.
|
;; Copyright, 2018, by Samuel Williams.
|
||||||
;;
|
;;
|
||||||
|
|
||||||
.code
|
.code
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
## This file is part of the "Coroutine" project and released under the MIT License.
|
## This file is part of the "Coroutine" project and released under the MIT License.
|
||||||
##
|
##
|
||||||
## Created by Samuel Williams on 3/11/2018.
|
## Created by Samuel Williams on 3/11/2018.
|
||||||
## Copyright, 2018, by Samuel Williams. All rights reserved.
|
## Copyright, 2018, by Samuel Williams.
|
||||||
##
|
##
|
||||||
|
|
||||||
#define TOKEN_PASTE(x,y) x##y
|
#define TOKEN_PASTE(x,y) x##y
|
||||||
|
|
|
@ -13,25 +13,11 @@ typedef struct {
|
||||||
ffi_type **argv;
|
ffi_type **argv;
|
||||||
} fiddle_closure;
|
} fiddle_closure;
|
||||||
|
|
||||||
#if defined(USE_FFI_CLOSURE_ALLOC)
|
|
||||||
#elif defined(__OpenBSD__) || defined(__APPLE__) || defined(__linux__)
|
|
||||||
# define USE_FFI_CLOSURE_ALLOC 0
|
|
||||||
#elif defined(RUBY_LIBFFI_MODVERSION) && RUBY_LIBFFI_MODVERSION < 3000005 && \
|
|
||||||
(defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_AMD64))
|
|
||||||
# define USE_FFI_CLOSURE_ALLOC 0
|
|
||||||
#else
|
|
||||||
# define USE_FFI_CLOSURE_ALLOC 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dealloc(void * ptr)
|
dealloc(void * ptr)
|
||||||
{
|
{
|
||||||
fiddle_closure * cls = (fiddle_closure *)ptr;
|
fiddle_closure * cls = (fiddle_closure *)ptr;
|
||||||
#if USE_FFI_CLOSURE_ALLOC
|
|
||||||
ffi_closure_free(cls->pcl);
|
ffi_closure_free(cls->pcl);
|
||||||
#else
|
|
||||||
munmap(cls->pcl, sizeof(*cls->pcl));
|
|
||||||
#endif
|
|
||||||
if (cls->argv) xfree(cls->argv);
|
if (cls->argv) xfree(cls->argv);
|
||||||
xfree(cls);
|
xfree(cls);
|
||||||
}
|
}
|
||||||
|
@ -205,12 +191,7 @@ allocate(VALUE klass)
|
||||||
VALUE i = TypedData_Make_Struct(klass, fiddle_closure,
|
VALUE i = TypedData_Make_Struct(klass, fiddle_closure,
|
||||||
&closure_data_type, closure);
|
&closure_data_type, closure);
|
||||||
|
|
||||||
#if USE_FFI_CLOSURE_ALLOC
|
|
||||||
closure->pcl = ffi_closure_alloc(sizeof(ffi_closure), &closure->code);
|
closure->pcl = ffi_closure_alloc(sizeof(ffi_closure), &closure->code);
|
||||||
#else
|
|
||||||
closure->pcl = mmap(NULL, sizeof(ffi_closure), PROT_READ | PROT_WRITE,
|
|
||||||
MAP_ANON | MAP_PRIVATE, -1, 0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
@ -257,17 +238,8 @@ initialize(int rbargc, VALUE argv[], VALUE self)
|
||||||
if (FFI_OK != result)
|
if (FFI_OK != result)
|
||||||
rb_raise(rb_eRuntimeError, "error prepping CIF %d", result);
|
rb_raise(rb_eRuntimeError, "error prepping CIF %d", result);
|
||||||
|
|
||||||
#if USE_FFI_CLOSURE_ALLOC
|
|
||||||
result = ffi_prep_closure_loc(pcl, cif, callback,
|
result = ffi_prep_closure_loc(pcl, cif, callback,
|
||||||
(void *)self, cl->code);
|
(void *)self, cl->code);
|
||||||
#else
|
|
||||||
result = ffi_prep_closure(pcl, cif, callback, (void *)self);
|
|
||||||
cl->code = (void *)pcl;
|
|
||||||
i = mprotect(pcl, sizeof(*pcl), PROT_READ | PROT_EXEC);
|
|
||||||
if (i) {
|
|
||||||
rb_sys_fail("mprotect");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (FFI_OK != result)
|
if (FFI_OK != result)
|
||||||
rb_raise(rb_eRuntimeError, "error prepping closure %d", result);
|
rb_raise(rb_eRuntimeError, "error prepping closure %d", result);
|
||||||
|
|
|
@ -7,8 +7,7 @@ bundle = enable_config('bundled-libffi')
|
||||||
if ! bundle
|
if ! bundle
|
||||||
dir_config 'libffi'
|
dir_config 'libffi'
|
||||||
|
|
||||||
pkg_config("libffi") and
|
pkg_config("libffi")
|
||||||
ver = pkg_config("libffi", "modversion")
|
|
||||||
|
|
||||||
if have_header(ffi_header = 'ffi.h')
|
if have_header(ffi_header = 'ffi.h')
|
||||||
true
|
true
|
||||||
|
@ -28,20 +27,20 @@ begin
|
||||||
Dir.glob("#{$srcdir}/libffi-*/").each{|dir| FileUtils.rm_rf(dir)}
|
Dir.glob("#{$srcdir}/libffi-*/").each{|dir| FileUtils.rm_rf(dir)}
|
||||||
extlibs.run(["--cache=#{cache_dir}", ext_dir])
|
extlibs.run(["--cache=#{cache_dir}", ext_dir])
|
||||||
end
|
end
|
||||||
ver = bundle != false &&
|
libffi_dir = bundle != false &&
|
||||||
Dir.glob("#{$srcdir}/libffi-*/")
|
Dir.glob("#{$srcdir}/libffi-*/")
|
||||||
.map {|n| File.basename(n)}
|
.map {|n| File.basename(n)}
|
||||||
.max_by {|n| n.scan(/\d+/).map(&:to_i)}
|
.max_by {|n| n.scan(/\d+/).map(&:to_i)}
|
||||||
unless ver
|
unless libffi_dir
|
||||||
raise "missing libffi. Please install libffi."
|
raise "missing libffi. Please install libffi."
|
||||||
end
|
end
|
||||||
|
|
||||||
srcdir = "#{$srcdir}/#{ver}"
|
srcdir = "#{$srcdir}/#{libffi_dir}"
|
||||||
ffi_header = 'ffi.h'
|
ffi_header = 'ffi.h'
|
||||||
libffi = Struct.new(*%I[dir srcdir builddir include lib a cflags ldflags opt arch]).new
|
libffi = Struct.new(*%I[dir srcdir builddir include lib a cflags ldflags opt arch]).new
|
||||||
libffi.dir = ver
|
libffi.dir = libffi_dir
|
||||||
if $srcdir == "."
|
if $srcdir == "."
|
||||||
libffi.builddir = "#{ver}/#{RUBY_PLATFORM}"
|
libffi.builddir = "#{libffi_dir}/#{RUBY_PLATFORM}"
|
||||||
libffi.srcdir = "."
|
libffi.srcdir = "."
|
||||||
else
|
else
|
||||||
libffi.builddir = libffi.dir
|
libffi.builddir = libffi.dir
|
||||||
|
@ -52,7 +51,6 @@ begin
|
||||||
libffi.a = "#{libffi.lib}/libffi_convenience.#{$LIBEXT}"
|
libffi.a = "#{libffi.lib}/libffi_convenience.#{$LIBEXT}"
|
||||||
nowarn = CONFIG.merge("warnflags"=>"")
|
nowarn = CONFIG.merge("warnflags"=>"")
|
||||||
libffi.cflags = RbConfig.expand("$(CFLAGS)".dup, nowarn)
|
libffi.cflags = RbConfig.expand("$(CFLAGS)".dup, nowarn)
|
||||||
ver = ver[/libffi-(.*)/, 1]
|
|
||||||
|
|
||||||
FileUtils.mkdir_p(libffi.dir)
|
FileUtils.mkdir_p(libffi.dir)
|
||||||
libffi.opt = CONFIG['configure_args'][/'(-C)'/, 1]
|
libffi.opt = CONFIG['configure_args'][/'(-C)'/, 1]
|
||||||
|
@ -112,12 +110,6 @@ begin
|
||||||
$INCFLAGS << " -I" << libffi.include
|
$INCFLAGS << " -I" << libffi.include
|
||||||
end
|
end
|
||||||
|
|
||||||
if ver
|
|
||||||
ver = ver.gsub(/-rc\d+/, '') # If ver contains rc version, just ignored.
|
|
||||||
ver = (ver.split('.') + [0,0])[0,3]
|
|
||||||
$defs.push(%{-DRUBY_LIBFFI_MODVERSION=#{ '%d%03d%03d' % ver }})
|
|
||||||
end
|
|
||||||
|
|
||||||
have_header 'sys/mman.h'
|
have_header 'sys/mman.h'
|
||||||
|
|
||||||
if have_header "dlfcn.h"
|
if have_header "dlfcn.h"
|
||||||
|
|
|
@ -66,6 +66,9 @@ AS_IF([test ${target_archs+set}], [
|
||||||
#ifdef __ppc64__
|
#ifdef __ppc64__
|
||||||
"processor-name=powerpc64"
|
"processor-name=powerpc64"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef __arm64__
|
||||||
|
"processor-name=arm64"
|
||||||
|
#endif
|
||||||
EOF
|
EOF
|
||||||
sed -n 's/^"processor-name=\(.*\)"/\1/p'`
|
sed -n 's/^"processor-name=\(.*\)"/\1/p'`
|
||||||
target="$target_cpu${target}"
|
target="$target_cpu${target}"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
|
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
|
||||||
#define RUBY_VERSION_TEENY 1
|
#define RUBY_VERSION_TEENY 1
|
||||||
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
|
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
|
||||||
#define RUBY_PATCHLEVEL 132
|
#define RUBY_PATCHLEVEL 133
|
||||||
|
|
||||||
#define RUBY_RELEASE_YEAR 2020
|
#define RUBY_RELEASE_YEAR 2020
|
||||||
#define RUBY_RELEASE_MONTH 9
|
#define RUBY_RELEASE_MONTH 9
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue