roll gem version back a little
[concurrent.git] / Rakefile
blobaec8efb5e8c3cb5d4cc1aa8437267411c602d1c9
1 require 'rake'
2 require 'rake/testtask'
3 require 'rake/rdoctask'
4 require 'rake/gempackagetask'
6 GEM_VERSION = "0.4.999"
8 desc "Remove build products"
9 task :clean do
10   rm Dir.glob( "lib/**/*.jar" )
11   rm Dir.glob( "lib/**/*.#{ Config::CONFIG['DLEXT'] }" )
12   rm Dir.glob( "ext/**/Makefile" )
13   rm Dir.glob( "ext/**/*.{o,#{ Config::CONFIG['DLEXT'] }}" )
14   rm Dir.glob( "java/**/*.{class,jar}" )
15 end
17 Rake::RDocTask.new do |task|
18   task.rdoc_files.add [ 'lib/**/*.rb', 'stubs/**/*.rb' ]
19 end
21 task :clobber => [ :clean ]
23 def setup_extension( dir, lib_dir, extension )
24   ext = File.join( "ext", dir )
25   so_name = "#{ extension }.#{ Config::CONFIG['DLEXT'] }"
26   ext_so = File.join( ext, so_name )
27   lib_so = File.join( "lib", lib_dir, so_name )
28   ext_files = FileList[ File.join( ext, "*.{c,h}" ) ]
29   ext_makefile = File.join( ext, "Makefile" )
30   extconf_rb = File.join( ext, "extconf.rb" )
31   
32   file ext_makefile => [ extconf_rb ] do
33     Dir.chdir ext do
34       ruby "extconf.rb"
35     end
36   end
38   file ext_so => ext_files + [ ext_makefile ] do
39     Dir.chdir ext do
40       case PLATFORM
41       when /win32/
42         sh 'nmake'
43       else
44         sh 'make'
45       end
46     end
47   end
49   file lib_so => [ ext_so ] do
50     cp ext_so, lib_so
51   end
53   task :compile => [ lib_so ]
54 end
56 def setup_jar( dir, lib_dir, extension )
57   ext = File.join( "java", dir )
58   jar_name = "#{ extension }.jar"
59   ext_jar = File.join( ext, lib_dir, jar_name )
60   lib_jar = File.join( "lib", lib_dir, jar_name )
61   ext_files = FileList[ File.join( ext, "**", "*.java" ) ]
62   main_source = File.join( lib_dir, "#{ extension.capitalize }Service.java" )
64   file ext_jar => [ ext_files ] do
65     Dir.chdir( ext ) do
66       sh 'javac', '-classpath', File.join( ENV['JRUBY_HOME'], 'lib/jruby.jar' ), main_source
67       sh 'jar', 'cf', File.join( lib_dir, jar_name ), *Dir.glob( '**/*.class' )
68     end
69   end
71   file lib_jar => ext_jar do
72     cp ext_jar, lib_jar
73   end
75   task :compile => [ lib_jar ]
76 end
78 case RUBY_PLATFORM
79 when /java/
80   setup_jar( 'futures', 'concurrent', 'futures' )
81   setup_jar( 'primitives', 'concurrent', 'primitives' )
82 else
83   setup_extension( 'futures', 'concurrent', 'futures' )
84   setup_extension( 'primitives', 'concurrent', 'primitives' )
85 end
87 desc "Compile extensions"
88 task :compile
90 task :test => [ :compile ]
91 Rake::TestTask.new do |task|
92   task.ruby_opts << '-rrubygems'
93   task.libs << 'lib'
94   task.libs << 'test'
95   task.test_files = [ "test/test_all.rb" ]
96   task.verbose = true
97 end
99 gemspec = Gem::Specification.new do |gemspec|
100   gemspec.name = "concurrent"
101   gemspec.version = GEM_VERSION
102   gemspec.author = "MenTaLguY <mental@rydia.net>"
103   gemspec.summary = "Omnibus concurrency library for Ruby"
104   gemspec.test_file = 'test/test_all.rb'
105   gemspec.files = FileList[ 'Rakefile', 'test/*.rb', 'ext/**/*.{c,h,rb}',
106                             'java/**/*.java',
107                             "lib/**/*.{rb,jar,#{ Config::CONFIG['DLEXT'] }}" ]
108   gemspec.require_paths = [ 'lib' ]
109   gemspec.add_dependency 'scheduler', '>= 0.1'
110   gemspec.has_rdoc = true
112   case RUBY_PLATFORM
113   when /java/
114     gemspec.platform = 'jruby'
115   when /win32/
116     gemspec.platform = Gem::Platform::WIN32
117   else
118     gemspec.platform = Gem::Platform::RUBY
119     gemspec.extensions = FileList[ 'ext/**/extconf.rb' ]
120   end
123 task :package => [ :clean, :test ]
124 Rake::GemPackageTask.new( gemspec ) do |task|
125   task.gem_spec = gemspec
126   task.need_tar = true
129 task :default => [ :clean, :test ]