dir = File.dirname(__FILE__) require File.expand_path("#{dir}/rake_helper") require 'rake/gempackagetask' require 'rake/contrib/rubyforgepublisher' require 'rake/clean' require 'rake/testtask' require 'rake/rdoctask' 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 ] do end task :spec => [:compile, :install] do require File.expand_path("#{dir}/spec/spec_suite") end task :lib do directory "lib" end 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.2" PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}" PKG_FILES = FileList[ '[A-Z]*', '*.rb', 'lib/**/*.rb', 'ext/**/*.{h,c,rb}', 'spec/**/*.rb' ] spec = Gem::Specification.new do |s| s.name = PKG_NAME s.version = PKG_VERSION s.summary = <<-EOF This library is for parsing JSON strings and unparsing ruby data structures. This library is a fork of Florian Frank's JSON library with key parts implemented in C for performance improvements. EOF s.description = s.summary 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 end