1<%
2arg = {}
3while /\A(\w+)=(.*)/ =~ ARGV[0]
4  arg[$1] = $2
5  arg[$1].tr!(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
6  ARGV.shift
7end
8if inc = arg['i']
9  src = inc == '-' ? STDIN.read : File.read(inc)
10  def src.value(name)
11    eval(self[/\bruby_#{name}(?:\[\])?\s*=\s*((?:"(?:\\.|[^\"\\])*"\s*)*(?=;)|[^{};]+)/m, 1].gsub(/#/, '\\#'))
12  end
13  arg['versions'] = version = {}
14  File.read(File.join(arg['srcdir'], 'version.c')).
15    scan(/rb_define_global_const\("(RUBY_\w+)",[^;]*?\bMK(?:INT|STR)\(([^()]*)\)/m) do |n, v|
16    version[n] = src.value(v)
17  end
18  arg['RUBY_DESCRIPTION_WITH_JIT'] = src.value('description_with_jit')
19end
20%>baseruby="<%=arg['BASERUBY']%>"
21_\
22=begin
23_=
24ruby="${RUBY-$baseruby}"
25case "$ruby" in "echo "*) $ruby; exit $?;; esac
26case "$0" in /*) r=-r"$0";; *) r=-r"./$0";; esac
27exec $ruby "$r" "$@"
28=end
29=baseruby
30class Object
31  remove_const :CROSS_COMPILING if defined?(CROSS_COMPILING)
32  CROSS_COMPILING = RUBY_PLATFORM
33  constants.grep(/^RUBY_/) {|n| remove_const n}
34% arg['versions'].each {|n, v|
35  <%=n%> = <%if n=='RUBY_DESCRIPTION' %>RubyVM.const_defined?(:MJIT) && RubyVM::MJIT.enabled? ?
36    <%=arg['RUBY_DESCRIPTION_WITH_JIT'].inspect%> :
37    <%end%><%=v.inspect%>
38% }
39end
40builddir = File.dirname(File.expand_path(__FILE__))
41srcdir = "<%=arg['srcdir']%>"
42top_srcdir = File.realpath(srcdir, builddir)
43fake = File.join(top_srcdir, "tool/fake.rb")
44eval(File.binread(fake), nil, fake)
45ropt = "-r#{__FILE__}"
46["RUBYOPT"].each do |flag|
47  opt = ENV[flag]
48  opt = opt ? ([ropt] | opt.b.split).join(" ") : ropt
49  ENV[flag] = opt
50end
51