summaryrefslogtreecommitdiff
path: root/template/fake.rb.in
diff options
context:
space:
mode:
Diffstat (limited to 'template/fake.rb.in')
-rw-r--r--template/fake.rb.in39
1 files changed, 28 insertions, 11 deletions
diff --git a/template/fake.rb.in b/template/fake.rb.in
index 25053d3dbf..5e52d95594 100644
--- a/template/fake.rb.in
+++ b/template/fake.rb.in
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+# shareable_constant_value: literal
<%
arg = {}
while /\A(\w+)=(.*)/ =~ ARGV[0]
@@ -7,16 +9,23 @@ while /\A(\w+)=(.*)/ =~ ARGV[0]
end
if inc = arg['i']
src = inc == '-' ? STDIN.read : File.read(inc)
- def src.value(name)
- eval(self[/\bruby_#{name}(?:\[\])?\s*=\s*((?:"(?:\\.|[^\"\\])*"\s*)*(?=;)|[^{};]+)/m, 1].gsub(/#/, '\\#'))
- end
- arg['versions'] = version = {}
- File.read(File.join(arg['srcdir'], 'version.c')).
- scan(/rb_define_global_const\("(RUBY_\w+)",[^;]*?\bMK(?:INT|STR)\(([^()]*)\)/m) do |n, v|
- version[n] = src.value(v)
+ src.gsub!(/^#.*\n/, '')
+else
+ src = ""
+end
+def src.value(name)
+ unless val = self[/\bruby_#{name}(?:\[\])?\s*=\s*((?:"(?:\\.|[^\"\\])*"\s*)*(?=;)|[^{};]+)/m, 1]
+ return
end
- arg['RUBY_DESCRIPTION_WITH_JIT'] = src.value('description_with_jit')
+ eval(val.gsub(/#/, '\\#').gsub(/((?:\G|[^\\])(?:\\\\)*)\n/, '\1'))
+end
+arg['versions'] = version = {}
+File.read(File.join(arg['srcdir'], 'version.c')).
+ scan(/rb_define_global_const\("(RUBY_\w+)",[^;]*?\bMK(?:INT|(STR))\(([^()]*)\)/m) do |n, s, v|
+ version[n] = arg[v] || src.value(v) || (s ? v : 0)
end
+arg['RUBY_DESCRIPTION_WITH_RJIT'] = src.value('description_with_rjit') || 'description_with_rjit'
+arg['RUBY_DESCRIPTION_WITH_YJIT'] = src.value('description_with_yjit') || 'description_with_yjit'
%>baseruby="<%=arg['BASERUBY']%>"
_\
=begin
@@ -32,12 +41,20 @@ class Object
CROSS_COMPILING = RUBY_PLATFORM
constants.grep(/^RUBY_/) {|n| remove_const n}
% arg['versions'].each {|n, v|
- <%=n%> = <%if n=='RUBY_DESCRIPTION' %>RubyVM.const_defined?(:JIT) && RubyVM::JIT.enabled? ?
- <%=arg['RUBY_DESCRIPTION_WITH_JIT'].inspect%> :
- <%end%><%=v.inspect%>
+ <%=n%> = <%if n=='RUBY_DESCRIPTION' %>case
+ when RubyVM.const_defined?(:RJIT) && RubyVM::RJIT.enabled?
+ <%=arg['RUBY_DESCRIPTION_WITH_RJIT'].inspect%>
+ when RubyVM.const_defined?(:YJIT) && RubyVM::YJIT.enabled?
+ <%=arg['RUBY_DESCRIPTION_WITH_YJIT'].inspect%>
+ else
+ <%=v.inspect%>
+ end<%else%><%=v.inspect%><%end%>
% }
end
builddir = File.dirname(File.expand_path(__FILE__))
+libpathenv = libpathenv = "<%=arg['LIBPATHENV']%>"
+preloadenv = preloadenv = "<%=arg['PRELOADENV']%>"
+libruby_so = libruby_so = "<%=arg['LIBRUBY_SO']%>"
srcdir = "<%=arg['srcdir']%>"
top_srcdir = File.realpath(srcdir, builddir)
fake = File.join(top_srcdir, "tool/fake.rb")