require "rake/clean" require "rake/testtask" require "rake/rdoctask" require "rake/packagetask" require "rake/contrib/compositepublisher" require "rake/contrib/sshpublisher" require "rake/configuretask" require "rake/extensiontask" PKG_NAME = "ruby-ecore" modules = [:ecore, :ecore_evas, :ecore_job, :ecore_x, :ecore_con] module_objects = { :ecore => [ :rb_ecore, :rb_animator, :rb_event_handler, :rb_fd_handler, :rb_idle_enterer, :rb_idler, :rb_timer ], :ecore_evas => [ :rb_ecore_evas_main, :rb_ecore_evas, :rb_buffer, :rb_fb, :rb_gl_x11, :rb_software_x11, :rb_xrender_x11 ], :ecore_job => [:rb_ecore_job, :rb_job], :ecore_x => [:rb_ecore_x, :rb_window, :rb_cursor], :ecore_con => [:rb_ecore_con, :rb_server] } module_tasks = modules.map { |mod| "ext_#{mod}".to_sym } task :default => module_tasks config = Rake::ConfigureTask.new do |t| modules.each do |mod| d = mod.to_s.sub(/ecore_/, "ecore-") t.tests << Rake::ConfigureTask:: PkgConfigTest.new(d, :is_critical => true) end end module_tasks.each do |mt| task mt => ["pre_#{mt}".to_sym] end exts = {} modules.each_with_index do |mod, i| name = module_tasks[i] exts[mod] = Rake::ExtensionTask.new name => module_objects[mod] do |t| t.dir = "src/#{mod}" t.lib_name = "#{t.dir}/#{mod}.so" end task "pre_#{name}".to_sym => [:configure] do d = mod.to_s.sub(/ecore_/, "ecore-") exts[mod].link_libs << config[d].libs cflags = [ exts[mod].env[:cflags], config[d].cflags ] exts[mod].env.update(:cflags => cflags) end end task :install => module_tasks do |t| destdir = "#{ENV["DESTDIR"]}" sitearchdir = ENV["RUBYARCHDIR"] || Config::CONFIG['sitearchdir'] ddir = destdir + sitearchdir FileUtils::Verbose.mkdir_p(ddir) unless File.directory?(ddir) sos = exts.values.map { |e| e.lib_name } FileUtils::Verbose.install(sos, ddir, :mode => 0755) ddir = destdir + sitearchdir + "/ecore" FileUtils::Verbose.mkdir_p(ddir) unless File.directory?(ddir) headers = ["src/ecore_evas/rb_ecore_evas.h", "src/ecore_x/rb_window.h"] FileUtils::Verbose.install(headers, ddir, :mode => 0644) end Rake::RDocTask.new do |t| t.rdoc_dir = "doc" t.title = "ruby-ecore -- Ruby bindings for Ecore" t.options = ["--line-numbers", "--inline-source", "--main", "README"] t.rdoc_files = FileList[ "AUTHORS", "COPYING", "README", "src/ecore/rb_ecore.c", "src/ecore/rb_animator.c", "src/ecore/rb_event_handler.c", "src/ecore/rb_fd_handler.c", "src/ecore/rb_idle_enterer.c", "src/ecore/rb_idler.c", "src/ecore/rb_timer.c", "src/ecore_con/rb_ecore_con.c", "src/ecore_con/rb_server.c", "src/ecore_job/rb_ecore_job.c", "src/ecore_job/rb_job.c", "src/ecore_x/rb_cursor.c", "src/ecore_x/rb_ecore_x.c", "src/ecore_x/rb_window.c", "src/ecore_evas/rb_ecore_evas_main.c", "src/ecore_evas/rb_ecore_evas.c", "src/ecore_evas/rb_buffer.c", "src/ecore_evas/rb_fb.c", "src/ecore_evas/rb_gl_x11.c", "src/ecore_evas/rb_software_x11.c", "src/ecore_evas/rb_xrender_x11.c" ] end task :publish => [:rdoc] do p = Rake::CompositePublisher.new p.add(Rake::SshFreshDirPublisher.new("code-monkey.de", "public_docs/" + PKG_NAME, "doc")) p.upload end