mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge pull request #5212 from shuujii/make-it-possible-that-libmruby.a-is-not-created
Make it possible that `libmruby.a` is not created
This commit is contained in:
@@ -230,7 +230,7 @@ desc "preallocated symbols"
|
||||
task :gensym => presym_file
|
||||
|
||||
depfiles += MRuby.targets.map { |n, t|
|
||||
t.libraries
|
||||
t.libmruby_enabled? ? t.libraries : t.libmruby_core_static
|
||||
}.flatten
|
||||
|
||||
depfiles += MRuby.targets.reject { |n, t| n == 'host' }.map { |n, t|
|
||||
|
||||
@@ -1,9 +1,3 @@
|
||||
MRuby::Build.new("host") do |conf|
|
||||
# load specific toolchain settings
|
||||
toolchain :gcc
|
||||
conf.gem :core => "mruby-bin-mrbc"
|
||||
end
|
||||
|
||||
# Define cross build settings
|
||||
MRuby::CrossBuild.new('no-float') do |conf|
|
||||
toolchain :gcc
|
||||
|
||||
+20
-13
@@ -53,7 +53,7 @@ module MRuby
|
||||
include Rake::DSL
|
||||
include LoadGems
|
||||
attr_accessor :name, :bins, :exts, :file_separator, :build_dir, :gem_clone_dir
|
||||
attr_reader :libmruby_objs, :gems, :toolchains, :gem_dir_to_repo_url
|
||||
attr_reader :libmruby_core_objs, :libmruby_objs, :gems, :toolchains, :gem_dir_to_repo_url
|
||||
|
||||
alias libmruby libmruby_objs
|
||||
|
||||
@@ -66,7 +66,7 @@ module MRuby
|
||||
def initialize(name='host', build_dir=nil, &block)
|
||||
@name = name.to_s
|
||||
|
||||
unless MRuby.targets[@name]
|
||||
unless current = MRuby.targets[@name]
|
||||
if ENV['OS'] == 'Windows_NT'
|
||||
@exts = Exts.new('.o', '.exe', '.a')
|
||||
else
|
||||
@@ -91,7 +91,9 @@ module MRuby
|
||||
|
||||
@bins = []
|
||||
@gems = MRuby::Gem::List.new
|
||||
@libmruby_objs = []
|
||||
@libmruby_core_objs = []
|
||||
@libmruby_objs = [@libmruby_core_objs]
|
||||
@enable_libmruby = true
|
||||
@build_mrbtest_lib_only = false
|
||||
@cxx_exception_enabled = false
|
||||
@cxx_exception_disabled = false
|
||||
@@ -102,15 +104,22 @@ module MRuby
|
||||
@toolchains = []
|
||||
@gem_dir_to_repo_url = {}
|
||||
|
||||
MRuby.targets[@name] = self
|
||||
MRuby.targets[@name] = self.class.current = current = self
|
||||
end
|
||||
|
||||
current = MRuby.targets[@name]
|
||||
MRuby::Build.current = current
|
||||
current.instance_eval(&block)
|
||||
current.build_mrbc_exec if current.libmruby_enabled? && @name == "host"
|
||||
current.build_mrbtest if current.test_enabled?
|
||||
end
|
||||
|
||||
def libmruby_enabled?
|
||||
@enable_libmruby
|
||||
end
|
||||
|
||||
def disable_libmruby
|
||||
@enable_libmruby = false
|
||||
end
|
||||
|
||||
def debug_enabled?
|
||||
@enable_debug
|
||||
end
|
||||
@@ -255,11 +264,9 @@ EOS
|
||||
def mrbcfile
|
||||
return @mrbcfile if @mrbcfile
|
||||
|
||||
unless gems.detect {|v| v.name == 'mruby-bin-mrbc' }
|
||||
build_mrbc_exec
|
||||
gems.detect {|v| v.name == 'mruby-bin-mrbc' }.setup
|
||||
end
|
||||
@mrbcfile = self.exefile("#{self.build_dir}/bin/mrbc")
|
||||
gem_name = "mruby-bin-mrbc"
|
||||
gem = gems[gem_name] || MRuby.targets["host"].gems[gem_name]
|
||||
@mrbcfile = exefile("#{gem.build.build_dir}/bin/mrbc")
|
||||
end
|
||||
|
||||
def compilers
|
||||
@@ -392,6 +399,7 @@ EOS
|
||||
toolchain :gcc
|
||||
end
|
||||
conf.gem :core => 'mruby-bin-mrbc'
|
||||
conf.disable_libmruby
|
||||
end
|
||||
end
|
||||
@endian = nil
|
||||
@@ -400,8 +408,7 @@ EOS
|
||||
end
|
||||
|
||||
def mrbcfile
|
||||
host = MRuby.targets['host']
|
||||
host.exefile("#{host.build_dir}/bin/mrbc")
|
||||
MRuby.targets['host'].mrbcfile
|
||||
end
|
||||
|
||||
def run_test
|
||||
|
||||
@@ -353,6 +353,10 @@ module MRuby
|
||||
@ary.each(&b)
|
||||
end
|
||||
|
||||
def [](name)
|
||||
@ary.detect {|g| g.name == name}
|
||||
end
|
||||
|
||||
def <<(gem)
|
||||
unless @ary.detect {|g| g.dir == gem.dir }
|
||||
@ary << gem
|
||||
|
||||
@@ -78,6 +78,9 @@ MRuby::GemBox.new do |conf|
|
||||
conf.gem :core => "mruby-rational"
|
||||
conf.gem :core => "mruby-complex"
|
||||
|
||||
# Generate mrbc command
|
||||
conf.gem :core => "mruby-bin-mrbc"
|
||||
|
||||
# Generate mirb command
|
||||
conf.gem :core => "mruby-bin-mirb"
|
||||
|
||||
|
||||
@@ -2,15 +2,14 @@ MRuby::Gem::Specification.new 'mruby-bin-mrbc' do |spec|
|
||||
spec.license = 'MIT'
|
||||
spec.author = 'mruby developers'
|
||||
spec.summary = 'mruby compiler executable'
|
||||
|
||||
spec.add_dependency 'mruby-compiler', :core => 'mruby-compiler'
|
||||
|
||||
exec = exefile("#{build.build_dir}/bin/mrbc")
|
||||
mrbc_objs = Dir.glob("#{spec.dir}/tools/mrbc/*.c").map { |f| objfile(f.pathmap("#{spec.build_dir}/tools/mrbc/%n")) }.flatten
|
||||
mrbc_objs = Dir.glob("#{spec.dir}/tools/mrbc/*.c").map { |f| objfile(f.pathmap("#{spec.build_dir}/tools/mrbc/%n")) }
|
||||
|
||||
file exec => mrbc_objs + [build.libmruby_core_static] do |t|
|
||||
file exec => mrbc_objs << build.libmruby_core_static do |t|
|
||||
build.linker.run t.name, t.prerequisites
|
||||
end
|
||||
|
||||
build.bins << 'mrbc' unless build.bins.find { |v| v == 'mrbc' }
|
||||
build.bins << 'mrbc'
|
||||
end
|
||||
|
||||
@@ -3,20 +3,18 @@ MRuby::Gem::Specification.new 'mruby-compiler' do |spec|
|
||||
spec.author = 'mruby developers'
|
||||
spec.summary = 'mruby compiler library'
|
||||
|
||||
lex_def = "#{dir}/core/lex.def"
|
||||
core_objs = Dir.glob("#{dir}/core/*.c").map { |f|
|
||||
next nil if build.cxx_exception_enabled? and f =~ /(codegen|y\.tab)\.c$/
|
||||
objfile(f.pathmap("#{build_dir}/core/%n"))
|
||||
}.compact
|
||||
|
||||
if build.cxx_exception_enabled?
|
||||
core_objs <<
|
||||
build.compile_as_cxx("#{dir}/core/y.tab.c", "#{build_dir}/core/y.tab.cxx",
|
||||
objfile("#{build_dir}/y.tab"), ["#{dir}/core"]) <<
|
||||
build.compile_as_cxx("#{dir}/core/codegen.c", "#{build_dir}/core/codegen.cxx")
|
||||
else
|
||||
core_objs << objfile("#{build_dir}/core/y.tab")
|
||||
as_cxx_srcs = %w[codegen y.tab].map{|name| "#{dir}/core/#{name}.c"}
|
||||
objs = Dir.glob("#{dir}/core/*.c").map do |src|
|
||||
dst = src.pathmap("#{build_dir}/core/%n")
|
||||
if build.cxx_exception_enabled? && as_cxx_srcs.include?(src)
|
||||
build.compile_as_cxx(src, "#{dst}.cxx")
|
||||
else
|
||||
objfile(dst)
|
||||
end
|
||||
end
|
||||
build.libmruby_core_objs << objs
|
||||
|
||||
lex_def = "#{dir}/core/lex.def"
|
||||
|
||||
# Parser
|
||||
file "#{dir}/core/y.tab.c" => ["#{dir}/core/parse.y", lex_def] do |t|
|
||||
@@ -30,9 +28,6 @@ MRuby::Gem::Specification.new 'mruby-compiler' do |spec|
|
||||
replace_line_directive(t.name)
|
||||
end
|
||||
|
||||
file build.libmruby_core_static => core_objs
|
||||
build.libmruby << core_objs
|
||||
|
||||
def replace_line_directive(path)
|
||||
content = File.read(path).gsub(%r{
|
||||
^\#line\s+\d+\s+"\K.*$ | # #line directive
|
||||
|
||||
+1
-5
@@ -9,9 +9,5 @@ MRuby.each_target do
|
||||
objfile(dst)
|
||||
end
|
||||
end
|
||||
self.libmruby_objs << objs
|
||||
|
||||
file libmruby_core_static => objs do |t|
|
||||
archiver.run t.name, t.prerequisites
|
||||
end
|
||||
self.libmruby_core_objs << objs
|
||||
end
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
MRuby.each_target do
|
||||
file libmruby_core_static => libmruby_core_objs.flatten do |t|
|
||||
archiver.run t.name, t.prerequisites
|
||||
end
|
||||
|
||||
next unless libmruby_enabled?
|
||||
|
||||
file libmruby_static => libmruby_objs.flatten do |t|
|
||||
archiver.run t.name, t.prerequisites
|
||||
end
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
MRuby.each_target do
|
||||
next unless libmruby_enabled?
|
||||
|
||||
src = "#{build_dir}/mrblib/mrblib.c"
|
||||
obj = objfile(src.ext)
|
||||
rbfiles = Dir["#{MRUBY_ROOT}/mrblib/*.rb"].sort!
|
||||
|
||||
Reference in New Issue
Block a user