diff options
Diffstat (limited to 'src/arrow/ruby/red-arrow/Rakefile')
-rw-r--r-- | src/arrow/ruby/red-arrow/Rakefile | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/arrow/ruby/red-arrow/Rakefile b/src/arrow/ruby/red-arrow/Rakefile new file mode 100644 index 000000000..dd2c310b6 --- /dev/null +++ b/src/arrow/ruby/red-arrow/Rakefile @@ -0,0 +1,100 @@ +# -*- ruby -*- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +require "bundler/gem_helper" +require "rake/clean" +require "yard" + +base_dir = File.join(__dir__) + +helper = Bundler::GemHelper.new(base_dir) +helper.install +spec = helper.gemspec + +release_task = Rake::Task["release"] +release_task.prerequisites.replace(["build", "release:rubygem_push"]) + +def run_extconf(build_dir, extension_dir, *arguments) + cd(build_dir) do + ruby(File.join(extension_dir, "extconf.rb"), + *arguments) + end +end + +spec.extensions.each do |extension| + extension_dir = File.join(base_dir, File.dirname(extension)) + build_dir = ENV["BUILD_DIR"] + if build_dir + build_dir = File.join(build_dir, "red-arrow") + directory build_dir + else + build_dir = extension_dir + end + CLOBBER << File.join(build_dir, "Makefile") + CLOBBER << File.join(build_dir, "mkmf.log") + + makefile = File.join(build_dir, "Makefile") + file makefile => build_dir do + run_extconf(build_dir, extension_dir) + end + + desc "Configure" + task :configure => build_dir do + run_extconf(build_dir, extension_dir) + end + + desc "Compile" + task :compile => makefile do + cd(build_dir) do + sh("make") + end + end + + task :clean do + cd(build_dir) do + sh("make", "clean") if File.exist?("Makefile") + end + end +end + +desc "Run tests" +task :test do + cd(base_dir) do + ruby("test/run-test.rb") + end +end + +task default: :test + +desc "Run benchmarks" +task :benchmark do + benchmarks = if ENV["BENCHMARKS"] + ENV["BENCHMARKS"].split + else + FileList["benchmark/{,*/**/}*.yml"] + end + cd(base_dir) do + benchmarks.each do |benchmark| + sh("benchmark-driver", benchmark) + end + end +end + +YARD::Rake::YardocTask.new do |task| +end |