summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Rakefile15
-rw-r--r--build_config.rb2
-rw-r--r--src/vm.c2
-rw-r--r--tasks/mrbgem_spec.rake1
-rw-r--r--tasks/mrbgems.rake2
-rw-r--r--tasks/mruby_build.rake63
-rw-r--r--tasks/mruby_build_commands.rake6
-rw-r--r--tasks/toolchains/clang.rake2
-rw-r--r--tasks/toolchains/gcc.rake2
9 files changed, 54 insertions, 41 deletions
diff --git a/Rakefile b/Rakefile
index 6a04ef87c..ac2d43ae5 100644
--- a/Rakefile
+++ b/Rakefile
@@ -8,8 +8,17 @@ load 'tasks/mrbgem_spec.rake'
##############################
# compile flags
-MRUBY_CONFIG = File.expand_path(ENV['MRUBY_CONFIG'] || './build_config.rb')
-load MRUBY_CONFIG
+load 'build_config.rb'
+
+MRUBY_CONFIGS = ['build_config.rb']
+if ENV['MRUBY_CONFIG']
+ MRUBY_CONFIGS << ENV['MRUBY_CONFIG']
+ load ENV['MRUBY_CONFIG']
+end
+
+MRuby.each_target do |build|
+ build.define_rules
+end
load 'src/mruby_core.rake'
load 'mrblib/mrblib.rake'
@@ -34,7 +43,7 @@ depfiles = MRuby.targets['host'].bins.map do |bin|
FileUtils.rm t.name, :force => true
FileUtils.cp t.prerequisites.first, t.name
end
-
+
install_path
end
diff --git a/build_config.rb b/build_config.rb
index eeaa255ab..12cf0affd 100644
--- a/build_config.rb
+++ b/build_config.rb
@@ -74,5 +74,5 @@ end
# conf.cc.flags << "-m32"
# conf.linker.flags << "-m32"
#
-# conf.gem 'examples/mrbgems/c_and_ruby_extension_example'
+# conf.gem 'doc/mrbgems/c_and_ruby_extension_example'
# end
diff --git a/src/vm.c b/src/vm.c
index ca31f6675..021fc2c90 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -477,7 +477,7 @@ argnum_error(mrb_state *mrb, int num)
mrb->exc = (struct RObject*)mrb_object(exc);
}
-#ifdef __GNUC__
+#ifdef __GNUC__dummy
#define DIRECT_THREADED
#endif
diff --git a/tasks/mrbgem_spec.rake b/tasks/mrbgem_spec.rake
index 0e228629b..5a28053b5 100644
--- a/tasks/mrbgem_spec.rake
+++ b/tasks/mrbgem_spec.rake
@@ -35,7 +35,6 @@ module MRuby
def setup
MRuby::Gem.current = self
-
@build.compilers.each do |compiler|
compiler.defines -= %w(DISABLE_GEMS)
compiler.include_paths << "#{dir}/include"
diff --git a/tasks/mrbgems.rake b/tasks/mrbgems.rake
index 9d8798ef3..285aa75b8 100644
--- a/tasks/mrbgems.rake
+++ b/tasks/mrbgems.rake
@@ -8,7 +8,7 @@ MRuby.each_target do
# loader all gems
self.libmruby << objfile("#{build_dir}/mrbgems/gem_init")
file objfile("#{build_dir}/mrbgems/gem_init") => "#{build_dir}/mrbgems/gem_init.c"
- file "#{build_dir}/mrbgems/gem_init.c" => [MRUBY_CONFIG] do |t|
+ file "#{build_dir}/mrbgems/gem_init.c" => [MRUBY_CONFIGS].flatten do |t|
FileUtils.mkdir_p "#{build_dir}/mrbgems"
open(t.name, 'w') do |f|
f.puts %Q[/*]
diff --git a/tasks/mruby_build.rake b/tasks/mruby_build.rake
index cd9f77fc4..2962e167a 100644
--- a/tasks/mruby_build.rake
+++ b/tasks/mruby_build.rake
@@ -53,39 +53,37 @@ module MRuby
Exts = Struct.new(:object, :executable, :library)
def initialize(name='host', &block)
- MRuby::Build.current = self
- @name = name
- @root = File.expand_path("#{File.dirname(__FILE__)}/..")
+ @name = name.to_s
- if ENV['OS'] == 'Windows_NT'
- @exts = Exts.new('.o', '.exe', '.a')
- else
- @exts = Exts.new('.o', '', '.a')
- end
-
- @file_separator = '/'
- @cc = Command::Compiler.new(self, %w(.c))
- @cxx = Command::Compiler.new(self, %w(.cc .cxx .cpp))
- @objc = Command::Compiler.new(self, %w(.m))
- @asm = Command::Compiler.new(self, %w(.S .asm))
- @linker = Command::Linker.new(self)
- @archiver = Command::Archiver.new(self)
- @yacc = Command::Yacc.new(self)
- @gperf = Command::Gperf.new(self)
- @git = Command::Git.new(self)
- @mrbc = Command::Mrbc.new(self)
-
- @bins = %w(mruby mrbc mirb)
- @gems, @libmruby = [], []
+ unless MRuby.targets[@name]
+ @root = File.expand_path("#{File.dirname(__FILE__)}/..")
- MRuby.targets[name.to_s] = self
-
- instance_eval(&block)
+ if ENV['OS'] == 'Windows_NT'
+ @exts = Exts.new('.o', '.exe', '.a')
+ else
+ @exts = Exts.new('.o', '', '.a')
+ end
- compilers.each do |compiler|
- compiler.defines -= %w(DISABLE_GEMS) if respond_to?(:enable_gems?) && enable_gems?
- compiler.define_rules build_dir
+ @file_separator = '/'
+ @cc = Command::Compiler.new(self, %w(.c))
+ @cxx = Command::Compiler.new(self, %w(.cc .cxx .cpp))
+ @objc = Command::Compiler.new(self, %w(.m))
+ @asm = Command::Compiler.new(self, %w(.S .asm))
+ @linker = Command::Linker.new(self)
+ @archiver = Command::Archiver.new(self)
+ @yacc = Command::Yacc.new(self)
+ @gperf = Command::Gperf.new(self)
+ @git = Command::Git.new(self)
+ @mrbc = Command::Mrbc.new(self)
+
+ @bins = %w(mruby mrbc mirb)
+ @gems, @libmruby = [], []
+
+ MRuby.targets[@name] = self
end
+
+ MRuby::Build.current = MRuby.targets[@name]
+ MRuby.targets[@name].instance_eval(&block)
end
def toolchain(name)
@@ -108,6 +106,13 @@ module MRuby
end
end
+ def define_rules
+ compilers.each do |compiler|
+ compiler.defines -= %w(DISABLE_GEMS) if respond_to?(:enable_gems?) && enable_gems?
+ compiler.define_rules build_dir
+ end
+ end
+
def filename(name)
if name.is_a?(Array)
name.flatten.map { |n| filename(n) }
diff --git a/tasks/mruby_build_commands.rake b/tasks/mruby_build_commands.rake
index 20203ad7e..98a216920 100644
--- a/tasks/mruby_build_commands.rake
+++ b/tasks/mruby_build_commands.rake
@@ -36,14 +36,14 @@ module MRuby
def initialize(build, source_exts=[])
super(build)
- @command = ENV['CC'] || 'gcc'
+ @command = ENV['CC'] || 'cc'
@flags = [ENV['CFLAGS'] || []]
@source_exts = source_exts
@include_paths = ["#{build.root}/include"]
@defines = %w(DISABLE_GEMS)
@option_include_path = '-I%s'
@option_define = '-D%s'
- @compile_options = "%{flags} -MMD -o %{outfile} -c %{infile}"
+ @compile_options = '%{flags} -o %{outfile} -c %{infile}'
end
def all_flags(_defineds=[], _include_paths=[], _flags=[])
@@ -111,7 +111,7 @@ module MRuby
def initialize(build)
super
- @command = ENV['LD'] || 'gcc'
+ @command = ENV['LD'] || 'ld'
@flags = (ENV['LDFLAGS'] || [])
@flags_before_libraries, @flags_after_libraries = [], []
@libraries = []
diff --git a/tasks/toolchains/clang.rake b/tasks/toolchains/clang.rake
index 1785c4c79..d5d2ccd7c 100644
--- a/tasks/toolchains/clang.rake
+++ b/tasks/toolchains/clang.rake
@@ -1,7 +1,7 @@
MRuby::Toolchain.new(:clang) do |conf|
toolchain :gcc
- [conf.cc, conf.cxx, conf.objc].each do |cc|
+ [conf.cc, conf.cxx, conf.objc, conf.asm].each do |cc|
cc.command = ENV['CC'] || 'clang'
end
conf.linker.command = ENV['LD'] || 'clang'
diff --git a/tasks/toolchains/gcc.rake b/tasks/toolchains/gcc.rake
index 2c160683d..bef9b8618 100644
--- a/tasks/toolchains/gcc.rake
+++ b/tasks/toolchains/gcc.rake
@@ -1,5 +1,5 @@
MRuby::Toolchain.new(:gcc) do |conf|
- [conf.cc, conf.cxx, conf.objc].each do |cc|
+ [conf.cc, conf.cxx, conf.objc, conf.asm].each do |cc|
cc.command = ENV['CC'] || 'gcc'
cc.flags = [ENV['CFLAGS'] || %w(-g -O3 -Wall -Werror-implicit-function-declaration)]
cc.include_paths = ["#{root}/include"]