diff options
Diffstat (limited to 'tasks')
| -rw-r--r-- | tasks/core.rake | 17 | ||||
| -rw-r--r-- | tasks/mrblib.rake | 30 |
2 files changed, 47 insertions, 0 deletions
diff --git a/tasks/core.rake b/tasks/core.rake new file mode 100644 index 000000000..c4816d4ce --- /dev/null +++ b/tasks/core.rake @@ -0,0 +1,17 @@ +as_cxx_srcs = %w[vm error gc].map{|name| "#{MRUBY_ROOT}/src/#{name}.c"} + +MRuby.each_target do + objs = Dir.glob("#{MRUBY_ROOT}/src/*.c").map do |src| + dst = src.pathmap("#{build_dir}/src/%n") + if cxx_exception_enabled? && as_cxx_srcs.include?(src) + compile_as_cxx(src, "#{dst}.cxx") + else + objfile(dst) + end + end + self.libmruby_objs << objs + + file libmruby_core_static => objs do |t| + archiver.run t.name, t.prerequisites + end +end diff --git a/tasks/mrblib.rake b/tasks/mrblib.rake new file mode 100644 index 000000000..7231b63bc --- /dev/null +++ b/tasks/mrblib.rake @@ -0,0 +1,30 @@ +MRuby.each_target do + src = "#{build_dir}/mrblib/mrblib.c" + obj = objfile(src.ext) + rbfiles = Dir["#{MRUBY_ROOT}/mrblib/*.rb"].sort! + + self.libmruby_objs << obj + + file obj => src + file src => [mrbcfile, __FILE__, *rbfiles] do |t| + mkdir_p File.dirname(t.name) + File.open(t.name, 'w') do |f| + _pp "GEN", "mrblib/*.rb", "#{t.name.relative_path}" + f.puts %Q[/*] + f.puts %Q[ * This file is loading the mrblib] + f.puts %Q[ *] + f.puts %Q[ * IMPORTANT:] + f.puts %Q[ * This file was generated!] + f.puts %Q[ * All manual changes will get lost.] + f.puts %Q[ */] + mrbc.run f, rbfiles, 'mrblib_proc' + f.puts <<INIT_END +void +mrb_init_mrblib(mrb_state *mrb) +{ + mrb_load_proc(mrb, mrblib_proc); +} +INIT_END + end + end +end |
