Skip to content

Commit 45a7aaf

Browse files
committed
Updated build tasks to support rake-compiler-dev-box
wip: Updates to suppoer rake-compiler-dev-box
1 parent 75d009b commit 45a7aaf

File tree

5 files changed

+67
-70
lines changed

5 files changed

+67
-70
lines changed

Gemfile

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,19 @@ source 'https://rubygems.org'
22

33
gemspec
44

5-
group :development do
6-
gem 'rake', '~> 10.2.2'
7-
gem 'countloc', '~> 0.4.0', platforms: :mri
8-
gem 'yard', '~> 0.8.7.4'
9-
gem 'inch', '~> 0.4.1', platforms: :mri
10-
gem 'redcarpet', platforms: :mri # understands github markdown
11-
gem 'rake-compiler', '~> 0.9.2', platforms: [:mri, :mswin, :mingw]
12-
end
5+
gem 'rake', '~> 10.3.2'
6+
gem 'rake-compiler', '~> 0.9.2'
137

148
group :testing do
159
gem 'rspec', '~> 2.14.1'
16-
gem 'simplecov', '~> 0.8.2'
17-
gem 'coveralls', '~> 0.7.0', require: false
10+
gem 'simplecov', '~> 0.8.2', :require => false
11+
gem 'coveralls', '~> 0.7.0', :require => false
1812
gem 'timecop', '~> 0.7.1'
1913
end
14+
15+
group :documentation do
16+
gem 'countloc', '~> 0.4.0', :platforms => :mri, :require => false
17+
gem 'yard', '~> 0.8.7.4', :platforms => :mri, :require => false
18+
gem 'inch', '~> 0.4.1', :platforms => :mri, :require => false
19+
gem 'redcarpet', platforms: :mri # understands github markdown
20+
end

Rakefile

Lines changed: 48 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,76 @@
11
require 'rake'
22
require 'bundler/gem_tasks'
3-
require 'rspec'
4-
require 'rspec/core/rake_task'
5-
require 'fileutils'
3+
require 'rake/extensiontask'
4+
require 'rake/javaextensiontask'
5+
#require 'rspec'
6+
#require 'rspec/core/rake_task'
67

7-
require_relative 'lib/extension_helper'
8+
GEMSPEC = Gem::Specification.load(File.expand_path('../concurrent-ruby.gemspec', __FILE__))
9+
10+
$:.push File.join(File.dirname(__FILE__), 'lib')
11+
require 'extension_helper'
812

913
Bundler::GemHelper.install_tasks
1014

11-
RSpec::Core::RakeTask.new(:spec)
12-
$:.unshift 'tasks'
13-
Dir.glob('tasks/**/*.rake').each do|rakefile|
14-
load rakefile
15-
end
15+
#RSpec::Core::RakeTask.new(:spec)
16+
#$:.unshift 'tasks'
17+
#Dir.glob('tasks/**/*.rake').each do|rakefile|
18+
#load rakefile
19+
#end
1620

17-
desc "Run benchmarks"
21+
desc 'Run benchmarks'
1822
task :bench do
19-
exec "ruby -Ilib -Iext examples/bench_atomic.rb"
20-
end
21-
22-
desc 'Clean up build artifacts'
23-
task :clean do
24-
rm_rf './pkg/classes'
25-
rm_f Dir.glob('./lib/*.jar')
26-
rm_f Dir.glob('./lib/*.{o,so,bundle}')
27-
rm_rf './tmp'
23+
exec 'ruby -Ilib -Iext examples/bench_atomic.rb'
2824
end
2925

3026
if defined?(JRUBY_VERSION)
31-
require 'ant'
3227

3328
EXTENSION_NAME = 'concurrent_jruby'
3429

35-
directory 'pkg/classes'
36-
37-
desc 'Compile the extension'
38-
task :compile => 'pkg/classes' do |t|
39-
ant.javac :srcdir => 'ext', :destdir => t.prerequisites.first,
40-
:source => '1.5', :target => '1.5', :debug => true,
41-
:classpath => '${java.class.path}:${sun.boot.class.path}'
42-
end
43-
44-
desc 'Build the jar'
45-
task :jar => :compile do
46-
ant.jar :basedir => 'pkg/classes', :destfile => "lib/#{EXTENSION_NAME}.jar", :includes => '**/*.class'
30+
Rake::JavaExtensionTask.new(EXTENSION_NAME, GEMSPEC) do |ext|
31+
ext.ext_dir = 'ext'
4732
end
4833

49-
task :compile_java => :jar
50-
5134
elsif Concurrent.use_c_extensions?
5235

5336
EXTENSION_NAME = 'concurrent_cruby'
5437

55-
require 'rake/extensiontask'
56-
57-
spec = Gem::Specification.load('concurrent-ruby.gemspec')
58-
Rake::ExtensionTask.new(EXTENSION_NAME, spec) do |ext|
38+
Rake::ExtensionTask.new(EXTENSION_NAME, GEMSPEC) do |ext|
5939
ext.ext_dir = 'ext'
60-
ext.name = EXTENSION_NAME
61-
ext.source_pattern = "**/*.{h,c,cpp}"
62-
end
63-
64-
task :return_dummy_makefile do
65-
sh "git co ext/Makefile"
40+
ext.cross_compile = true
41+
ext.cross_platform = ['x86-mingw32', 'x64-mingw32']
6642
end
6743

68-
desc 'Clean, compile, and build the extension from scratch'
69-
task :compile_c => [ :clean, :compile, :return_dummy_makefile ]
70-
71-
task :irb => [:compile] do
72-
sh "irb -r ./lib/#{EXTENSION_NAME}.bundle -I #{File.join(File.dirname(__FILE__), 'lib')}"
44+
ENV['RUBY_CC_VERSION'].to_s.split(':').each do |ruby_version|
45+
platforms = {
46+
'x86-mingw32' => 'i686-w64-mingw32',
47+
'x64-mingw32' => 'x86_64-w64-mingw32'
48+
}
49+
platforms.each do |platform, prefix|
50+
task "copy:#{EXTENSION_NAME}:#{platform}:#{ruby_version}" do |t|
51+
%w[lib tmp/#{platform}/stage/lib].each do |dir|
52+
so_file = "#{dir}/#{ruby_version[/^\d+\.\d+/]}/#{EXTENSION_NAME}.so"
53+
if File.exists?(so_file)
54+
sh "#{prefix}-strip -S #{so_file}"
55+
end
56+
end
57+
end
58+
end
7359
end
7460
end
7561

76-
RSpec::Core::RakeTask.new(:travis_spec) do |t|
77-
t.rspec_opts = '--tag ~@not_on_travis'
62+
Rake::Task[:clean].enhance do
63+
rm_rf 'pkg'
64+
rm_f Dir.glob('./lib/*.jar')
65+
rm_f Dir.glob('./lib/*.bundle')
7866
end
7967

80-
if defined?(JRUBY_VERSION)
81-
task :default => [:clean, :compile_java, :travis_spec]
82-
elsif Concurrent.use_c_extensions?
83-
task :default => [:clean, :compile_c, :travis_spec]
84-
else
85-
task :default => [:clean, :travis_spec]
86-
end
68+
#RSpec::Core::RakeTask.new(:travis_spec) do |t|
69+
#t.rspec_opts = '--tag ~@not_on_travis'
70+
#end
71+
72+
#if defined?(EXTENSION_NAME)
73+
#task :default => [:clean, "compile:#{EXTENSION_NAME}", :travis_spec]
74+
#else
75+
#task :default => [:clean, :travis_spec]
76+
#end

concurrent-ruby.gemspec

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,8 @@ Gem::Specification.new do |s|
3333
end
3434

3535
s.required_ruby_version = '>= 1.9.3'
36+
37+
s.add_development_dependency 'bundler', '~> 1.6.2'
38+
s.add_development_dependency 'rake', '~> 10.3.2'
39+
s.add_development_dependency 'rake-compiler', '~> 0.9.2'
3640
end

ext/extconf.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
require 'fileutils'
2-
require_relative '../lib/extension_helper'
2+
3+
$:.push File.join(File.dirname(__FILE__), '../lib')
4+
require 'extension_helper'
35

46
EXTENSION_NAME = 'concurrent_cruby'
57

lib/extension_helper.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ module Concurrent
44
def self.use_c_extensions?
55
host_os = RbConfig::CONFIG['host_os']
66
ruby_name = RbConfig::CONFIG['ruby_install_name']
7-
(ruby_name =~ /^ruby$/i || host_os =~ /mswin32/i || host_os =~ /mingw32/i) && RUBY_VERSION >= '2.0'
7+
(ruby_name =~ /^ruby$/i || host_os =~ /mswin32/i || host_os =~ /mingw32/i) #&& RUBY_VERSION >= '2.0'
88
end
99
end

0 commit comments

Comments
 (0)