Rakefile in fjson-0.0.1 vs Rakefile in fjson-0.0.2

- old
+ new

@@ -5,53 +5,87 @@ require 'rake/clean' require 'rake/testtask' require 'rake/rdoctask' -task :default => [ +task :default => [ :compile ] do +end + +task :compile => [ :json_ext, :state_ext, :object_ext, :integer_ext, :float_ext, :string_ext, :true_class_ext, :false_class_ext, :nil_class_ext, :array_ext, - :hash_ext, - :spec + :hash_ext ] do end -task :spec do +task :spec => [:compile, :install] do require File.expand_path("#{dir}/spec/spec_suite") end task :lib do directory "lib" end -setup_extension("json_ext") -setup_extension("state_ext") -setup_extension("extensions/object_ext") -setup_extension("extensions/integer_ext") -setup_extension("extensions/float_ext") -setup_extension("extensions/string_ext") -setup_extension("extensions/true_class_ext") -setup_extension("extensions/false_class_ext") -setup_extension("extensions/nil_class_ext") -setup_extension("extensions/array_ext") -setup_extension("extensions/hash_ext") +fjson_extensions = [ + "json_ext", + "state_ext", + "extensions/object_ext", + "extensions/integer_ext", + "extensions/float_ext", + "extensions/string_ext", + "extensions/true_class_ext", + "extensions/false_class_ext", + "extensions/nil_class_ext", + "extensions/array_ext", + "extensions/hash_ext" +] +fjson_extensions.each do |ext| + setup_extension ext +end + +task :install do + dir = File.dirname(__FILE__) + fjson_extensions.each do |extension_path| + cp extension_binary_path(extension_path), "#{dir}/lib/#{extension_path}" + end +end + +task :cleanup do + fjson_extensions.each do |extension_path| + rm extension_binary_path(extension_path) + rm "#{extension_directory_path(extension_path)}/Rakefile" + end +end + +def extension_binary_path(relative_extension_path) + binary_name = File.basename(relative_extension_path) + ".so" + directory = extension_directory_path(relative_extension_path) + "#{directory}/#{binary_name}" +end + +def extension_directory_path(relative_extension_path) + base_extension_path = File.dirname(__FILE__) + "/ext" + "#{base_extension_path}/#{relative_extension_path}" +end + PKG_NAME = "fjson" -PKG_VERSION = "0.0.1" +PKG_VERSION = "0.0.2" PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}" PKG_FILES = FileList[ '[A-Z]*', + '*.rb', 'lib/**/*.rb', - 'lib/**/*.so', + 'ext/**/*.{h,c,rb}', 'spec/**/*.rb' ] spec = Gem::Specification.new do |s| s.name = PKG_NAME @@ -65,17 +99,22 @@ s.files = PKG_FILES.to_a s.require_path = 'lib' s.has_rdoc = true + s.extra_rdoc_files = [ "README" ] s.test_files = Dir.glob('spec/*_spec.rb') s.require_path = 'lib' s.autorequire = 'fjson' s.author = "Brian Takita" s.email = "brian.takita@gmail.com" s.homepage = "http://fjson.rubyforge.org" s.rubyforge_project = "fjson" + + s.extensions = ["Rakefile"] + + s.add_dependency "mkrf", ">=0.1.2" end Rake::GemPackageTask.new(spec) do |pkg| pkg.need_zip = true pkg.need_tar = true