Refactor `src/mruby_core.rake`
-MRuby.each_target do
- current_dir = File.dirname(__FILE__).relative_path_from(Dir.pwd)
- relative_from_root = File.dirname(__FILE__).relative_path_from(MRUBY_ROOT)
- current_build_dir = "#{build_dir}/#{relative_from_root}"
-
- objs = Dir.glob("#{current_dir}/*.c").map { |f|
- next nil if cxx_exception_enabled? and f =~ /(error|vm|gc)\.c$/
- objfile(f.pathmap("#{current_build_dir}/%n"))
- }.compact
+as_cxx_srcs = %w[vm error gc].map{|name| "#{MRUBY_ROOT}/src/#{name}.c"}
- if cxx_exception_enabled?
- objs += %w(vm error gc).map { |v| compile_as_cxx "#{current_dir}/#{v}.c", "#{current_build_dir}/#{v}.cxx" }
+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
