2 require "rake/testtask"
3 require "rake/rdoctask"
4 require "rake/packagetask"
5 require "rake/contrib/compositepublisher"
6 require "rake/contrib/sshpublisher"
8 require "rake/configuretask"
9 require "rake/gcc4test"
10 require "rake/extensiontask"
12 PKG_NAME = "ruby-vorbistagger"
13 PKG_VERSION = File.read("lib/ogg/vorbis/tagger.rb").
14 match(/^\s*VERSION = \"(.*)\"$/).captures.first
16 ext_objs = [:ext, :comments, :vcedit]
18 task :default => [:ext]
20 config = Rake::ConfigureTask.new do |t|
21 t.tests << Rake::ConfigureTask::
22 PkgConfigTest.new("vorbis", :is_critical => true)
23 t.tests << Rake::ConfigureTask::Gcc4Test.new("gcc4")
26 task :ext => [:pre_ext]
28 ext = Rake::ExtensionTask.new :ext => ext_objs do |t|
30 t.lib_name = "#{t.dir}/vorbistagger_ext.so"
33 task :pre_ext => [:configure] do
34 ext.link_libs << config.vorbis.libs
41 unless config.gcc4.result
42 defines = "EXT_API=\"\""
44 cflags << " -fvisibility=hidden"
45 defines = "EXT_API=\"__attribute__ " +
46 "((visibility(\\\"default\\\")))\""
55 task :install => [:ext] do |t|
56 destdir = ENV["DESTDIR"] || ""
58 ddir = destdir + Config::CONFIG["sitearchdir"]
59 FileUtils::Verbose.mkdir_p(ddir) unless File.directory?(ddir)
60 FileUtils::Verbose.install(ext.lib_name, ddir, :mode => 0755)
62 ddir = destdir + Config::CONFIG["sitelibdir"] + "ogg/vorbis"
63 FileUtils::Verbose.mkdir_p(ddir) unless File.directory?(ddir)
64 FileUtils::Verbose.install("lib/**/*.rb", ddir, :mode => 0644)
69 Rake::TestTask.new do |t|
70 t.libs = ["lib", "ext", "test"]
71 t.test_files = FileList["test/test_*.rb"]
75 Rake::RDocTask.new do |t|
78 t.options = ["--line-numbers", "--inline-source", "--main", "README"]
79 t.rdoc_files.include("README", "COPYING", "AUTHORS",
80 "ext/ext.c", "ext/comments.c", "lib/**/*.rb")
83 Rake::PackageTask.new(PKG_NAME, PKG_VERSION) do |t|
85 t.package_files.include("[A-Z]*", "rake/*rb", "ext/*.[ch]",
86 "lib/**/*.rb", "test/*.rb")
89 task :publish => [:rdoc, :package] do
90 p = Rake::CompositePublisher.new
91 p.add(Rake::SshFreshDirPublisher.new("code-monkey.de",
94 p.add(Rake::SshFilePublisher.new("code-monkey.de",
96 "#{PKG_NAME}-#{PKG_VERSION}.tar.gz"))