2022-04-01 14:15:00 +03:00
|
|
|
# frozen_string_literal: true
|
|
|
|
# shareable_constant_value: literal
|
2015-06-10 05:06:28 +03:00
|
|
|
<%
|
|
|
|
arg = {}
|
|
|
|
while /\A(\w+)=(.*)/ =~ ARGV[0]
|
|
|
|
arg[$1] = $2
|
|
|
|
arg[$1].tr!(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
|
|
|
|
ARGV.shift
|
|
|
|
end
|
2015-07-29 05:06:38 +03:00
|
|
|
if inc = arg['i']
|
|
|
|
src = inc == '-' ? STDIN.read : File.read(inc)
|
2022-09-05 05:00:20 +03:00
|
|
|
else
|
|
|
|
src = ""
|
|
|
|
end
|
|
|
|
def src.value(name)
|
|
|
|
unless val = self[/\bruby_#{name}(?:\[\])?\s*=\s*((?:"(?:\\.|[^\"\\])*"\s*)*(?=;)|[^{};]+)/m, 1]
|
|
|
|
return
|
2015-06-10 05:06:28 +03:00
|
|
|
end
|
2022-09-05 05:00:20 +03:00
|
|
|
eval(val.gsub(/#/, '\\#').gsub(/((?:\G|[^\\])(?:\\\\)*)\n/, '\1'))
|
|
|
|
end
|
2022-09-05 05:25:42 +03:00
|
|
|
arg['versions'] = version = {}
|
2022-09-05 05:00:20 +03:00
|
|
|
File.read(File.join(arg['srcdir'], 'version.c')).
|
|
|
|
scan(/rb_define_global_const\("(RUBY_\w+)",[^;]*?\bMK(?:INT|(STR))\(([^()]*)\)/m) do |n, s, v|
|
2022-09-05 05:25:42 +03:00
|
|
|
version[n] = arg[v] || src.value(v) || (s ? "" : 0)
|
2015-06-10 05:06:28 +03:00
|
|
|
end
|
2022-09-05 05:25:42 +03:00
|
|
|
arg['RUBY_DESCRIPTION_WITH_MJIT'] = src.value('description_with_mjit') || version['RUBY_DESCRIPTION']
|
|
|
|
arg['RUBY_DESCRIPTION_WITH_YJIT'] = src.value('description_with_yjit') || version['RUBY_DESCRIPTION']
|
2015-06-10 05:06:28 +03:00
|
|
|
%>baseruby="<%=arg['BASERUBY']%>"
|
2015-11-22 09:42:14 +03:00
|
|
|
_\
|
|
|
|
=begin
|
2015-04-13 02:24:33 +03:00
|
|
|
_=
|
2015-11-22 09:42:14 +03:00
|
|
|
ruby="${RUBY-$baseruby}"
|
|
|
|
case "$ruby" in "echo "*) $ruby; exit $?;; esac
|
|
|
|
case "$0" in /*) r=-r"$0";; *) r=-r"./$0";; esac
|
|
|
|
exec $ruby "$r" "$@"
|
|
|
|
=end
|
|
|
|
=baseruby
|
2009-02-19 09:47:13 +03:00
|
|
|
class Object
|
2011-02-11 05:39:05 +03:00
|
|
|
remove_const :CROSS_COMPILING if defined?(CROSS_COMPILING)
|
2009-02-19 09:47:13 +03:00
|
|
|
CROSS_COMPILING = RUBY_PLATFORM
|
2015-06-10 05:06:28 +03:00
|
|
|
constants.grep(/^RUBY_/) {|n| remove_const n}
|
|
|
|
% arg['versions'].each {|n, v|
|
2022-04-11 20:28:07 +03:00
|
|
|
<%=n%> = <%if n=='RUBY_DESCRIPTION' %>case
|
|
|
|
when RubyVM.const_defined?(:MJIT) && RubyVM::MJIT.enabled?
|
|
|
|
<%=arg['RUBY_DESCRIPTION_WITH_MJIT'].inspect%>
|
|
|
|
when RubyVM.const_defined?(:YJIT) && RubyVM::YJIT.enabled?
|
|
|
|
<%=arg['RUBY_DESCRIPTION_WITH_YJIT'].inspect%>
|
|
|
|
else
|
|
|
|
<%=v.inspect%>
|
|
|
|
end<%else%><%=v.inspect%><%end%>
|
2015-06-10 05:06:28 +03:00
|
|
|
% }
|
2009-02-19 09:47:13 +03:00
|
|
|
end
|
2015-04-13 02:25:21 +03:00
|
|
|
builddir = File.dirname(File.expand_path(__FILE__))
|
2015-09-04 13:06:49 +03:00
|
|
|
srcdir = "<%=arg['srcdir']%>"
|
|
|
|
top_srcdir = File.realpath(srcdir, builddir)
|
2014-07-06 09:20:10 +04:00
|
|
|
fake = File.join(top_srcdir, "tool/fake.rb")
|
2018-08-27 17:25:14 +03:00
|
|
|
eval(File.binread(fake), nil, fake)
|
2018-07-03 07:43:27 +03:00
|
|
|
ropt = "-r#{__FILE__}"
|
|
|
|
["RUBYOPT"].each do |flag|
|
2018-08-27 17:33:10 +03:00
|
|
|
opt = ENV[flag]
|
2019-04-19 01:30:01 +03:00
|
|
|
opt = opt ? ([ropt] | opt.b.split(/\s+/)).join(" ") : ropt
|
2018-07-03 07:43:27 +03:00
|
|
|
ENV[flag] = opt
|
|
|
|
end
|