require "bundler/gem_helper" require "rake/clean" base_dir = File.join(File.dirname(__FILE__)) helper = Bundler::GemHelper.new(base_dir) helper.install spec = helper.gemspec def run_extconf(build_dir, extension_dir, *arguments) cd(build_dir) do ruby(File.join(extension_dir, "extconf.rb"), *arguments) end end def make_command if RUBY_PLATFORM =~ /mswin/ "nmake" else ENV["MAKE"] || find_make end end def find_make candidates = ["gmake", "make"] paths = ENV.fetch("PATH", "").split(File::PATH_SEPARATOR) exeext = RbConfig::CONFIG["EXEEXT"] candidates.each do |candidate| paths.each do |path| cmd = File.join(path, "#{candidate}#{exeext}") return cmd if File.executable?(cmd) end end end Dir[File.expand_path('../tasks/**/*.rake', __FILE__)].each {|f| load f } 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, "pycall") directory build_dir else build_dir = extension_dir end makefile = File.join(build_dir, "Makefile") file makefile => build_dir do run_extconf(build_dir, extension_dir) end CLOBBER << makefile CLOBBER << File.join(build_dir, "mkmf.log") desc "Configure" task configure: makefile desc "Compile" task compile: makefile do cd(build_dir) do sh(make_command) end end task :clean do cd(build_dir) do sh(make_command, "clean") if File.exist?("Makefile") end end end require "rake/extensiontask" Rake::ExtensionTask.new("pycall/spec_helper") desc "Run tests" task :test do cd(base_dir) do ruby("test/run-test.rb") end end task default: :test require "rspec/core/rake_task" RSpec::Core::RakeTask.new(:spec) do |t| ext_dir = File.join(base_dir, "ext/pycall") t.ruby_opts = "-I#{ext_dir}" t.verbose = true end task default: :spec task spec: :compile