mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Add Support to build loadable modules defined in mrbgems.
This commit is contained in:
@@ -48,6 +48,30 @@ depfiles = MRuby.targets['host'].bins.map do |bin|
|
||||
install_path
|
||||
end
|
||||
|
||||
MRuby.each_target do
|
||||
gems.map do | gem |
|
||||
current_dir = gem.dir.relative_path_from(Dir.pwd)
|
||||
relative_from_root = gem.dir.relative_path_from(MRUBY_ROOT)
|
||||
current_build_dir = "#{build_dir}/#{relative_from_root}"
|
||||
|
||||
gem.bins.each do | bin |
|
||||
exec = exefile("#{build_dir}/bin/#{bin}")
|
||||
objs = Dir.glob("#{current_dir}/tool/#{bin}/*.c").map { |f| objfile(f.pathmap("#{current_build_dir}/tool/#{bin}/%n")) }
|
||||
|
||||
file exec => objs + [libfile("#{build_dir}/lib/libmruby")] do |t|
|
||||
gem_flags = gems.map { |g| g.linker.flags }
|
||||
gem_flags_before_libraries = gems.map { |g| g.linker.flags_before_libraries }
|
||||
gem_flags_after_libraries = gems.map { |g| g.linker.flags_after_libraries }
|
||||
gem_libraries = gems.map { |g| g.linker.libraries }
|
||||
gem_library_paths = gems.map { |g| g.linker.library_paths }
|
||||
linker.run t.name, t.prerequisites, gem_libraries, gem_library_paths, gem_flags, gem_flags_before_libraries
|
||||
end
|
||||
|
||||
depfiles += [ exec ]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
depfiles += MRuby.targets.reject { |n, t| n == 'host' }.map { |n, t|
|
||||
[t.libfile("#{t.build_dir}/lib/libmruby")] + t.bins.map { |bin| t.exefile("#{t.build_dir}/bin/#{bin}") }
|
||||
}.flatten
|
||||
|
||||
@@ -28,6 +28,9 @@ module MRuby
|
||||
attr_accessor :test_objs, :test_rbfiles, :test_args
|
||||
attr_accessor :test_preload
|
||||
|
||||
attr_accessor :bins
|
||||
alias :bin= :bins=
|
||||
|
||||
attr_block MRuby::Build::COMMANDS
|
||||
|
||||
def initialize(name, &block)
|
||||
@@ -59,6 +62,8 @@ module MRuby
|
||||
@test_preload = 'test/assert.rb'
|
||||
@test_args = {}
|
||||
|
||||
@bins = []
|
||||
|
||||
instance_eval(&@initializer)
|
||||
|
||||
if !name || !licenses || !authors
|
||||
|
||||
@@ -174,8 +174,9 @@ module MRuby
|
||||
puts " Binaries: #{@bins.join(', ')}" unless @bins.empty?
|
||||
unless @gems.empty?
|
||||
puts " Included Gems:"
|
||||
@gems.map(&:name).each do |name|
|
||||
puts " #{name}"
|
||||
@gems.map do |gem|
|
||||
puts " #{gem.name}"
|
||||
puts " - Binaries: #{gem.bins.join(', ')}" unless gem.bins.empty?
|
||||
end
|
||||
end
|
||||
puts "================================================"
|
||||
|
||||
Reference in New Issue
Block a user