summaryrefslogtreecommitdiffhomepage
path: root/lib
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2019-07-12 18:35:20 +0900
committerKOBAYASHI Shuji <[email protected]>2019-07-12 18:35:20 +0900
commit16e4657acdacfd99bd649d50b44a748d86a31861 (patch)
tree45744b8455c0e4355dca0d5a532b5478d186e0e3 /lib
parentc5f0a0256b550f853de95a57ac9cb3845d0e064a (diff)
downloadmruby-16e4657acdacfd99bd649d50b44a748d86a31861.tar.gz
mruby-16e4657acdacfd99bd649d50b44a748d86a31861.zip
Lazy load `tasks/toolchains/*.rake`
Diffstat (limited to 'lib')
-rw-r--r--lib/mruby/build.rb19
1 files changed, 9 insertions, 10 deletions
diff --git a/lib/mruby/build.rb b/lib/mruby/build.rb
index 887a5518e..d9d52948b 100644
--- a/lib/mruby/build.rb
+++ b/lib/mruby/build.rb
@@ -22,7 +22,6 @@ module MRuby
def initialize(name, &block)
@name, @initializer = name.to_s, block
- MRuby::Toolchain.toolchains ||= {}
MRuby::Toolchain.toolchains[@name] = self
end
@@ -30,13 +29,8 @@ module MRuby
conf.instance_exec(conf, params, &@initializer)
end
- def self.load
- Dir.glob("#{MRUBY_ROOT}/tasks/toolchains/*.rake").each do |file|
- Kernel.load file
- end
- end
+ self.toolchains = {}
end
- Toolchain.load
class Build
class << self
@@ -196,10 +190,15 @@ EOS
end
def toolchain(name, params={})
- tc = Toolchain.toolchains[name.to_s]
- fail "Unknown #{name} toolchain" unless tc
+ name = name.to_s
+ tc = Toolchain.toolchains[name] || begin
+ path = "#{MRUBY_ROOT}/tasks/toolchains/#{name}.rake"
+ fail "Unknown #{name} toolchain" unless File.exist?(path)
+ load path
+ Toolchain.toolchains[name]
+ end
tc.setup(self, params)
- @toolchains.unshift name.to_s
+ @toolchains.unshift name
end
def primary_toolchain