|
1 | 1 | require 'rake'
|
2 | 2 | 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' |
6 | 7 |
|
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' |
8 | 12 |
|
9 | 13 | Bundler::GemHelper.install_tasks
|
10 | 14 |
|
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 |
16 | 20 |
|
17 |
| -desc "Run benchmarks" |
| 21 | +desc 'Run benchmarks' |
18 | 22 | 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' |
28 | 24 | end
|
29 | 25 |
|
30 | 26 | if defined?(JRUBY_VERSION)
|
31 |
| - require 'ant' |
32 | 27 |
|
33 | 28 | EXTENSION_NAME = 'concurrent_jruby'
|
34 | 29 |
|
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' |
47 | 32 | end
|
48 | 33 |
|
49 |
| - task :compile_java => :jar |
50 |
| - |
51 | 34 | elsif Concurrent.use_c_extensions?
|
52 | 35 |
|
53 | 36 | EXTENSION_NAME = 'concurrent_cruby'
|
54 | 37 |
|
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| |
59 | 39 | 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'] |
66 | 42 | end
|
67 | 43 |
|
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 |
73 | 59 | end
|
74 | 60 | end
|
75 | 61 |
|
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') |
78 | 66 | end
|
79 | 67 |
|
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 |
0 commit comments