summaryrefslogtreecommitdiffhomepage
path: root/tasks
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2020-11-21 15:36:46 +0900
committerKOBAYASHI Shuji <[email protected]>2020-11-21 15:36:46 +0900
commit551bf0c635ca5dda1741a39a92de528dc82e90d6 (patch)
tree4dcf4e7850157dc45e0be9a49851a9564f96a402 /tasks
parentfb028b47aa6fb730f3e5b866d51577636b9a1ba3 (diff)
downloadmruby-551bf0c635ca5dda1741a39a92de528dc82e90d6.tar.gz
mruby-551bf0c635ca5dda1741a39a92de528dc82e90d6.zip
Move some `.rake` files to `tasks` directory for consistency
Diffstat (limited to 'tasks')
-rw-r--r--tasks/core.rake17
-rw-r--r--tasks/mrblib.rake30
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