diff options
Diffstat (limited to 'tasks/mrbgems.rake')
| -rw-r--r-- | tasks/mrbgems.rake | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tasks/mrbgems.rake b/tasks/mrbgems.rake new file mode 100644 index 000000000..356e40369 --- /dev/null +++ b/tasks/mrbgems.rake @@ -0,0 +1,33 @@ +dir = File.dirname(__FILE__).sub(%r|^\./|, '') + +MRuby.each_target do + if enable_gems? + self.libmruby << "#{build_dir}/mrbgems/gem_init.o" + + file "#{build_dir}/mrbgems/gem_init.o" => "#{build_dir}/mrbgems/gem_init.c" + file "#{build_dir}/mrbgems/gem_init.c" do |t| + FileUtils.mkdir_p "#{build_dir}/mrbgems" + open(t.name, 'w') do |f| + f.puts <<__EOF__ +/* + * This file contains a list of all + * initializing methods which are + * necessary to bootstrap all gems. + * + * IMPORTANT: + * This file was generated! + * All manual changes will get lost. + */ + +#include "mruby.h" + +#{gems.map{|gem| "void GENERATED_TMP_mrb_%s_gem_init(mrb_state* mrb);" % [gem.funcname]}.join("\n")} +void +mrb_init_mrbgems(mrb_state *mrb) { +#{gems.map{|gem| "GENERATED_TMP_mrb_%s_gem_init(mrb);" % [gem.funcname]}.join("\n")} +} +__EOF__ + end + end + end +end |
