summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/build_tasks.rb
diff options
context:
space:
mode:
authorYuichiro MASUI <[email protected]>2012-12-17 02:19:46 +0900
committerYuichiro MASUI <[email protected]>2012-12-17 02:19:46 +0900
commit8f9105d21a3039641e6c1f700adafd1d75e6b255 (patch)
tree1e57860066f6220c97dc15de0517dbcfe9a68fc7 /mrbgems/build_tasks.rb
parent4b8959daff04feabbcb3b2302f5171561ca1f194 (diff)
downloadmruby-8f9105d21a3039641e6c1f700adafd1d75e6b255.tar.gz
mruby-8f9105d21a3039641e6c1f700adafd1d75e6b255.zip
Moved some building script from GNU make to Ruby script
Added minirake what's Rake subset
Diffstat (limited to 'mrbgems/build_tasks.rb')
-rw-r--r--mrbgems/build_tasks.rb30
1 files changed, 18 insertions, 12 deletions
diff --git a/mrbgems/build_tasks.rb b/mrbgems/build_tasks.rb
index f7accdffa..0e2d24a2e 100644
--- a/mrbgems/build_tasks.rb
+++ b/mrbgems/build_tasks.rb
@@ -7,31 +7,32 @@ MAKEFILE_4_GEM = "#{MRUBY_ROOT}/mrbgems/Makefile4gem"
GEM_MAKE_FLAGS = "#{MAKE_FLAGS} MAKEFILE_4_GEM='#{MAKEFILE_4_GEM}'"
-task :mrbgems_all => ["#{GEM_INIT}.a"] do
- for_each_gem do |f|
- sh "#{MAKE} -C #{f} #{GEM_MAKE_FLAGS}"
+task :mrbgems_all => ["#{GEM_INIT}.a", :mrbgems_generate_gem_makefile_list] do
+ for_each_gem do |path, gemname|
+ sh "#{MAKE} -C #{path} #{GEM_MAKE_FLAGS}"
end
end
task :mrbgems_clean do
+ sh "cd #{MRUBY_ROOT}/mrbgems && #{RM_F} *.c *.d *.a *.o"
sh "cd #{MRUBY_ROOT}/mrbgems/g && #{RM_F} *.c *.d *.rbtmp *.ctmp *.o mrbtest"
- for_each_gem do |f|
- sh "#{MAKE} clean -C #{f} #{GEM_MAKE_FLAGS}"
+ for_each_gem do |path, gemname|
+ sh "#{MAKE} clean -C #{path} #{GEM_MAKE_FLAGS}"
end
end
task :mrbgems_prepare_test do
- sh "#{CAT} #{for_each_gem{|f| "#{f}/test/*.rb "}} > #{MRUBY_ROOT}/mrbgems/g/mrbgemtest.rbtmp"
+ sh "#{CAT} #{for_each_gem{|path, gemname| "#{path}/test/*.rb "}} > #{MRUBY_ROOT}/mrbgems/g/mrbgemtest.rbtmp"
sh "#{MRUBY_ROOT}/bin/mrbc -Bmrbgemtest_irep -o#{MRUBY_ROOT}/mrbgems/g/mrbgemtest.ctmp #{MRUBY_ROOT}/mrbgems/g/mrbgemtest.rbtmp"
end
file "#{GEM_INIT}.a" => ["#{GEM_INIT}.c", "#{GEM_INIT}.o"] do |t|
- sh "#{AR} rs #{t.name} #{t.prerequisites.join(' ')}"
+ sh "#{AR} rs #{t.name} #{GEM_INIT}.o"
end
rule ".o" => [".c"] do |t|
puts "Build the driver which initializes all gems"
- sh "#{CC} #{CFLAGS.join(' ')} -I #{MRUBY_ROOT}/include -MMD -c #{t.source} -o #{t.name}"
+ sh "#{CC} #{CFLAGS.join(' ')} -I#{MRUBY_ROOT}/include -MMD -c #{t.source} -o #{t.name}"
end
file "#{GEM_INIT}.c" do |t|
@@ -50,11 +51,11 @@ file "#{GEM_INIT}.c" do |t|
#include "mruby.h"
-#{for_each_gem{|f| "void GENERATED_TMP_mrb_%s_gem_init(mrb_state*);\n" % [File.basename(f)]}}
+#{for_each_gem{|path, gemname, escaped_gemname| "void GENERATED_TMP_mrb_%s_gem_init(mrb_state*);" % [escaped_gemname]}}
void
mrb_init_mrbgems(mrb_state *mrb) {
-#{for_each_gem{|f| " GENERATED_TMP_mrb_%s_gem_init(mrb);\n" % [File.basename(f)]}}
+#{for_each_gem{|path, gemname, escaped_gemname| " GENERATED_TMP_mrb_%s_gem_init(mrb);" % [escaped_gemname]}}
}
__EOF__
end
@@ -62,17 +63,22 @@ end
def for_each_gem(&block)
IO.readlines(ACTIVE_GEMS).map { |line|
- block.call(line.chomp)
+ path = line.chomp
+ gemname = File.basename(path)
+ escaped_gemname = gemname.gsub(/-/, '_')
+ block.call(path, gemname, escaped_gemname)
}.join('')
end
task :mrbgems_generate_gem_makefile_list do
open(GEM_MAKEFILE_LIST, 'w') do |f|
f.puts <<__EOF__
-GEM_LIST := #{for_each_gem{|f| "#{f}/mrb-#{File.basename(f)}-gem.a"}}
+GEM_LIST := #{for_each_gem{|path, gemname| "#{path}/mrb-#{gemname}-gem.a "}}
GEM_ARCHIVE_FILES := #{MRUBY_ROOT}/mrbgems/gem_init.a
GEM_ARCHIVE_FILES += $(GEM_LIST)
+
+GEM_INCLUDE_LIST := #{for_each_gem{|path, gemname| "-I#{path}/include "}}
__EOF__
end
end