summaryrefslogtreecommitdiff
path: root/storage/mroonga/vendor/groonga/vendor/mruby/update.rb
diff options
context:
space:
mode:
Diffstat (limited to 'storage/mroonga/vendor/groonga/vendor/mruby/update.rb')
-rwxr-xr-xstorage/mroonga/vendor/groonga/vendor/mruby/update.rb88
1 files changed, 88 insertions, 0 deletions
diff --git a/storage/mroonga/vendor/groonga/vendor/mruby/update.rb b/storage/mroonga/vendor/groonga/vendor/mruby/update.rb
new file mode 100755
index 00000000000..888c3d3066d
--- /dev/null
+++ b/storage/mroonga/vendor/groonga/vendor/mruby/update.rb
@@ -0,0 +1,88 @@
+#!/usr/bin/env ruby
+
+if ARGV.size != 2
+ puts("Usage: #{$0} BUILD_COFNIG.RB MRUBY_SOURCE_DIR")
+ exit(false)
+end
+
+require "find"
+
+build_config_rb = ARGV.shift
+mruby_source_dir = ARGV.shift
+
+module MRuby
+ class Build
+ class << self
+ def source_dir=(dir)
+ @@source_dir = dir
+ end
+
+ def latest
+ @@latest
+ end
+ end
+
+ attr_reader :config
+ def initialize(&block)
+ @@latest = self
+ @config = Config.new(@@source_dir)
+ @config.instance_eval(&block)
+ end
+ end
+
+ class Config
+ attr_reader :gem_dirs
+ def initialize(source_dir)
+ @source_dir = source_dir
+ @gem_dirs = []
+ end
+
+ def toolchain(*args)
+ # ignore
+ end
+
+ def enable_debug
+ # ignore
+ end
+
+ def gem(gem_dir)
+ if gem_dir.is_a?(Hash)
+ gem_dir = load_special_path_gem(gem_dir)
+ return if gem_dir.nil?
+ end
+ @gem_dirs << gem_dir
+ end
+
+ private
+ def load_special_path_gem(params)
+ if params[:core]
+ "#{@source_dir}/mrbgems/#{params[:core]}"
+ elsif params[:github]
+ nil
+ else
+ raise "Unsupported gem options: #{params.inspect}"
+ end
+ end
+ end
+end
+
+MRuby::Build.source_dir = mruby_source_dir
+load build_config_rb
+build = MRuby::Build.latest
+
+sources = []
+source_dirs = ["#{mruby_source_dir}/src"] + build.config.gem_dirs
+source_dirs.each do |source_dir|
+ Find.find(source_dir) do |path|
+ case path
+ when /\.[ch]\z/
+ sources << path
+ end
+ end
+end
+
+indented_sources = sources.collect do |source|
+ "\t#{source}"
+end
+puts("libmruby_la_SOURCES = \\")
+puts(indented_sources.join(" \\\n"))