Sha256: 8f971dd74b26c2019340aaa3e079ab09534280982a3621fe22717d9ba04b3910

Contents?: true

Size: 1.77 KB

Versions: 2

Compression:

Stored size: 1.77 KB

Contents

require 'mkmf'
require 'fileutils'

make_dir = FileUtils.pwd

# Creating tmp dir
working_dir = File.expand_path('../../tmp', File.dirname(__FILE__))
FileUtils.mkdir_p(working_dir)
puts "Working dir: #{working_dir}"

# Clone Ruby source code
ruby_source = File.expand_path('ruby', working_dir)
if File.exist?(ruby_source)
  puts "Ruby source code exists at '#{ruby_source}'."
else
  puts "Ruby source code not exist. Cloning at '#{ruby_source}'."
  result = system("git clone https://github.com/ruby/ruby #{ruby_source}")
  unless result
    puts 'Fail to clone ruby source code. Aborting.'
    exit
  end
end

# Checkout into current ruby version
FileUtils.cd(ruby_source)
ruby_version = "v#{RUBY_VERSION.gsub(/\./i, '_')}"
puts "Checking out into Ruby version #{RUBY_VERSION} with tag #{ruby_version}."
result = system("git checkout #{ruby_version}")
unless result
  puts "Fail to check out into Ruby version #{RUBY_VERSION}.
  Only official releases are supported. Aborting."
  exit
end

# Generate configure file
puts 'Generate configure file ...'
result = system('autoconf')
unless result
  puts 'Fail to generate configure file.
  Please sure autoconf is installed. Aborting'
  exit
end

# Run configure to setup compile-ready configurations
puts 'Runing configure ...'
result = system('./configure')
unless result
  puts 'Fail to compile ruby source code. Aborting.'
  exit
end

# Compile ruby source code
puts 'Compiling Ruby ...'
result = system('make')
unless result
  puts 'Fail to compile ruby source code. Aborting.'
  exit
end

# Go back and continue compiling gem
FileUtils.cd(make_dir)

cflags = " -I #{ruby_source} -I #{ruby_source}/include -I #{ruby_source}/.ext/include/#{RUBY_PLATFORM}"

with_cflags(RbConfig::CONFIG['CFLAGS'] + cflags) do
  create_makefile 'yarv_generator/yarv_generator'
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
yarv_generator-0.2.3 ext/yarv_generator/extconf.rb
yarv_generator-0.2.2 ext/yarv_generator/extconf.rb