mrbtest.rake 1.2 KB
Newer Older
1
MRuby.each_target do
2 3
  dir = File.dirname(__FILE__).relative_path_from(root)

4 5
  exec = exefile("#{build_dir}/#{dir}/mrbtest")
  clib = "#{build_dir}/#{dir}/mrbtest.c"
6
  mlib = clib.ext(exts.object)
7 8 9 10
  mrbs = Dir.glob("#{dir}/t/*.rb")
  init = "#{dir}/init_mrbtest.c"
  asslib = "#{dir}/assert.rb"

11
  objs = [objfile("#{build_dir}/#{dir}/driver"), mlib].flatten
12

13 14 15 16 17
  file exec => objs + gems.map(&:testlib) + [libfile("#{build_dir}/lib/libmruby")] do |t|
    gem_flags = gems.map { |g| g.linker.flags }
    gem_libraries = gems.map { |g| g.linker.libraries }
    gem_library_paths = gems.map { |g| g.linker.library_paths }
    linker.run t.name, t.prerequisites, gem_libraries, gem_library_paths, gem_flags
18 19 20
  end

  file mlib => [clib]
21
  file clib => [mrbcfile, init, asslib] + mrbs do |t|
22
    _pp "GEN *.rb > #{clib}"
23
    open(clib, 'w') do |f|
24 25
      f.puts IO.read(init)
      mrbc.run f, [asslib] + mrbs, 'mrbtest_irep'
26
      gems.each do |g|
27
        f.puts %Q[void GENERATED_TMP_mrb_#{g.funcname}_gem_test(mrb_state *mrb);]
28
      end
29
      f.puts %Q[void mrbgemtest_init(mrb_state* mrb) {]
30
      gems.each do |g|
31
        f.puts %Q[    GENERATED_TMP_mrb_#{g.funcname}_gem_test(mrb);]
32
      end
33
      f.puts %Q[}]
34 35
    end
  end
36
end