1- $:. push File . join ( File . dirname ( __FILE__ ) , 'lib' )
2- $:. push File . join ( File . dirname ( __FILE__ ) , 'tasks/support' )
3-
4- require 'rubygems'
1+ require 'rake'
52require 'bundler/gem_tasks'
63require 'rspec'
74require 'rspec/core/rake_task'
85
9- require 'concurrent '
6+ require_relative 'lib/extension_helper '
107
118Bundler ::GemHelper . install_tasks
129
@@ -16,8 +13,67 @@ Dir.glob('tasks/**/*.rake').each do|rakefile|
1613 load rakefile
1714end
1815
16+ desc "Run benchmarks"
17+ task :bench do
18+ exec "ruby -Ilib -Iext examples/bench_atomic.rb"
19+ end
20+
21+ if defined? ( JRUBY_VERSION )
22+ require 'ant'
23+
24+ EXTENSION_NAME = 'concurrent_jruby'
25+
26+ directory "pkg/classes"
27+
28+ desc "Clean up build artifacts"
29+ task :clean do
30+ rm_rf "pkg/classes"
31+ rm_rf "lib/#{ EXTENSION_NAME } .jar"
32+ end
33+
34+ desc "Compile the extension"
35+ task :compile_java => "pkg/classes" do |t |
36+ ant . javac :srcdir => "ext" , :destdir => t . prerequisites . first ,
37+ :source => "1.5" , :target => "1.5" , :debug => true ,
38+ :classpath => "${java.class.path}:${sun.boot.class.path}"
39+ end
40+
41+ desc "Build the jar"
42+ task :jar => :compile_java do
43+ ant . jar :basedir => "pkg/classes" , :destfile => "lib/#{ EXTENSION_NAME } .jar" , :includes => "**/*.class"
44+ end
45+
46+ task :compile => :jar
47+
48+ elsif use_c_extensions?
49+
50+ EXTENSION_NAME = 'concurrent_cruby'
51+
52+ require 'rake/extensiontask'
53+
54+ CLEAN . include Rake ::FileList [ '**/*.so' , '**/*.bundle' , '**/*.o' , '**/mkmf.log' , '**/Makefile' ]
55+
56+ spec = Gem ::Specification . load ( 'concurrent-ruby.gemspec' )
57+ Rake ::ExtensionTask . new ( EXTENSION_NAME , spec ) do |ext |
58+ ext . ext_dir = 'ext'
59+ ext . name = EXTENSION_NAME
60+ ext . source_pattern = "**/*.{h,c,cpp}"
61+ end
62+
63+ desc 'Clean, compile, and build the extension from scratch'
64+ task :compile_c => [ :clean , :compile ]
65+
66+ task :irb => [ :compile ] do
67+ sh "irb -r ./lib/#{ EXTENSION_NAME } .bundle -I #{ File . join ( File . dirname ( __FILE__ ) , 'lib' ) } "
68+ end
69+ end
70+
1971RSpec ::Core ::RakeTask . new ( :travis_spec ) do |t |
2072 t . rspec_opts = '--tag ~@not_on_travis'
2173end
2274
23- task :default => [ :travis_spec ]
75+ if use_c_extensions?
76+ task :default => [ :compile_c , :travis_spec ]
77+ else
78+ task :default => [ :travis_spec ]
79+ end
0 commit comments