diff options
Diffstat (limited to 'template/fake.rb.in')
-rw-r--r-- | template/fake.rb.in | 39 |
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") |