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