summaryrefslogtreecommitdiffhomepage
path: root/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'tasks')
-rw-r--r--tasks/libmruby.rake10
-rw-r--r--tasks/mrbgem_spec.rake12
-rw-r--r--tasks/mrbgems_test.rake6
-rw-r--r--tasks/mruby_build.rake8
-rw-r--r--tasks/mruby_build_commands.rake15
5 files changed, 38 insertions, 13 deletions
diff --git a/tasks/libmruby.rake b/tasks/libmruby.rake
index c3b9d714f..108f42f59 100644
--- a/tasks/libmruby.rake
+++ b/tasks/libmruby.rake
@@ -1,5 +1,15 @@
MRuby.each_target do
file libfile("#{build_dir}/lib/libmruby") => libmruby.flatten do |t|
archiver.run t.name, t.prerequisites
+ open("#{build_dir}/lib/libmruby.flags.mak", 'w') do |f|
+ f.puts 'CFLAGS = "%s"' % cc.all_flags.gsub('"', '\\"')
+
+ gem_flags = gems.map { |g| g.linker.flags }
+ gem_library_paths = gems.map { |g| g.linker.library_paths }
+ f.puts 'LDFLAGS = "%s"' % linker.all_flags(gem_library_paths, gem_flags).gsub('"', '\\"')
+
+ gem_libraries = gems.map { |g| g.linker.libraries }
+ f.puts 'LIBS = "%s"' % linker.library_flags(gem_libraries).gsub('"', '\\"')
+ end
end
end
diff --git a/tasks/mrbgem_spec.rake b/tasks/mrbgem_spec.rake
index bf381cf33..906f47ad0 100644
--- a/tasks/mrbgem_spec.rake
+++ b/tasks/mrbgem_spec.rake
@@ -35,15 +35,15 @@ module MRuby
def setup
MRuby::Gem.current = self
- MRuby::Build::COMMANDS.each do |command|
- instance_variable_set("@#{command}", @build.send(command).clone)
- end
- @linker = LinkerConfig.new([], [], [])
- compilers.each do |compiler|
+ @build.compilers.each do |compiler|
compiler.defines -= %w(DISABLE_GEMS)
compiler.include_paths << "#{dir}/include"
end
+ MRuby::Build::COMMANDS.each do |command|
+ instance_variable_set("@#{command}", @build.send(command).clone)
+ end
+ @linker = LinkerConfig.new([], [], [])
@rbfiles = Dir.glob("#{dir}/mrblib/*.rb")
@objs = Dir.glob("#{dir}/src/*.{c,cpp,m,asm,S}").map do |f|
@@ -94,7 +94,7 @@ module MRuby
def define_gem_init_builder
file objfile("#{build_dir}/gem_init") => "#{build_dir}/gem_init.c"
- file "#{build_dir}/gem_init.c" => [build.mrbcfile] + rbfiles do |t|
+ file "#{build_dir}/gem_init.c" => [build.mrbcfile] + [rbfiles].flatten do |t|
FileUtils.mkdir_p build_dir
generate_gem_init("#{build_dir}/gem_init.c")
end
diff --git a/tasks/mrbgems_test.rake b/tasks/mrbgems_test.rake
index 1c495be5b..cb00aba57 100644
--- a/tasks/mrbgems_test.rake
+++ b/tasks/mrbgems_test.rake
@@ -5,16 +5,16 @@ MRuby.each_target do
test_rbc = "#{g.build_dir}/gem_test.c"
test_rbobj = test_rbc.ext(exts.object)
- file g.testlib => g.test_objs + [test_rbobj] do |t|
+ file g.testlib => [g.test_objs, test_rbobj].flatten do |t|
g.build.archiver.run t.name, t.prerequisites
end
file test_rbobj => test_rbc
- file test_rbc => g.test_rbfiles + [g.build.mrbcfile, libfile("#{build_dir}/lib/libmruby")] do |t|
+ file test_rbc => [g.test_rbfiles].flatten + [g.build.mrbcfile, libfile("#{build_dir}/lib/libmruby")] do |t|
open(t.name, 'w') do |f|
g.print_gem_init_header(f)
g.build.mrbc.run f, g.test_preload, "gem_test_irep_#{g.funcname}_preload"
- g.test_rbfiles.each_with_index do |rbfile, i|
+ g.test_rbfiles.flatten.each_with_index do |rbfile, i|
g.build.mrbc.run f, rbfile, "gem_test_irep_#{g.funcname}_#{i}"
end
f.puts %Q[void mrb_#{g.funcname}_gem_test(mrb_state *mrb);] unless g.test_objs.empty?
diff --git a/tasks/mruby_build.rake b/tasks/mruby_build.rake
index bcae9dfd9..3ce2f4992 100644
--- a/tasks/mruby_build.rake
+++ b/tasks/mruby_build.rake
@@ -113,7 +113,7 @@ module MRuby
def filename(name)
if name.is_a?(Array)
- name.map { |n| filename(n) }
+ name.flatten.map { |n| filename(n) }
else
'"%s"' % name.gsub('/', file_separator)
end
@@ -121,7 +121,7 @@ module MRuby
def exefile(name)
if name.is_a?(Array)
- name.map { |n| exefile(n) }
+ name.flatten.map { |n| exefile(n) }
else
"#{name}#{exts.executable}"
end
@@ -129,7 +129,7 @@ module MRuby
def objfile(name)
if name.is_a?(Array)
- name.map { |n| objfile(n) }
+ name.flatten.map { |n| objfile(n) }
else
"#{name}#{exts.object}"
end
@@ -137,7 +137,7 @@ module MRuby
def libfile(name)
if name.is_a?(Array)
- name.map { |n| libfile(n) }
+ name.flatten.map { |n| libfile(n) }
else
"#{name}#{exts.library}"
end
diff --git a/tasks/mruby_build_commands.rake b/tasks/mruby_build_commands.rake
index 6c160784b..8ffafe9b0 100644
--- a/tasks/mruby_build_commands.rake
+++ b/tasks/mruby_build_commands.rake
@@ -45,6 +45,12 @@ module MRuby
@option_define = '-D%s'
@compile_options = "%{flags} -MMD -o %{outfile} -c %{infile}"
end
+
+ def all_flags(_defineds=[], _include_paths=[], _flags=[])
+ define_flags = [defines, _defineds].flatten.map{ |d| option_define % d }
+ include_path_flags = [include_paths, _include_paths].flatten.map{ |f| option_include_path % filename(f) }
+ [flags, define_flags, include_path_flags, _flags].flatten.join(' ')
+ end
def run(outfile, infile, _defineds=[], _include_paths=[], _flags=[])
FileUtils.mkdir_p File.dirname(outfile)
@@ -112,6 +118,15 @@ module MRuby
@link_options = "%{flags} -o %{outfile} %{objs} %{libs}"
end
+ def all_flags(_library_paths=[], _flags=[])
+ library_path_flags = [library_paths, _library_paths].flatten.map{ |f| option_library_path % filename(f) }
+ [flags, library_path_flags, _flags].flatten.join(' ')
+ end
+
+ def library_flags(_libraries)
+ [libraries, _libraries].flatten.reverse.map{ |d| option_library % d }.join(' ')
+ end
+
def run(outfile, objfiles, _libraries=[], _library_paths=[], _flags=[])
FileUtils.mkdir_p File.dirname(outfile)
library_flags = [libraries, _libraries].flatten.reverse.map{ |d| option_library % d }