X-Git-Url: http://git.code-monkey.de/?p=ruby-ecore.git;a=blobdiff_plain;f=Rakefile;h=a6a28509f8aa4f0929e0f7a53c33ce09f8927edc;hp=ba98a96cc899ff43cd4436898068cb5803c020de;hb=f8c0f815b18adf3d1ea53bd177df636ffd532b08;hpb=34cef7113999d990376b7dd32adaa7ebd52eb1e8 diff --git a/Rakefile b/Rakefile index ba98a96..a6a2850 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,3 @@ -# $Id: Rakefile 319 2005-04-26 21:19:30Z tilman $ - -require "library" require "rake/clean" require "rake/testtask" require "rake/rdoctask" @@ -8,40 +5,110 @@ require "rake/packagetask" require "rake/contrib/compositepublisher" require "rake/contrib/sshpublisher" -CLOBBER.include("src/*/*.{s,}o") +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 -ext_libs = ["ecore", "ecore_evas", "ecore_job", "ecore_x"].map do |lib| - Library.new(lib, "src/#{lib}") +module_tasks.each do |mt| + task mt => ["pre_#{mt}".to_sym] end -task :default => ext_libs.map { |l| l.so } +exts = {} -ext_libs.each do |lib| - file lib.so => lib.objects do |t| - sh "cc #{lib.ldflags} -shared -Wl " + - "-L #{Config::CONFIG['libdir']} " + - Config::CONFIG["LIBRUBYARG_SHARED"] + - " #{t.prerequisites.join(" ")} -o #{t.name}" +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 - lib.objects.each do |object| - file object => object.sub(/\.[^.]+$/, ".c") do |t| - source = t.prerequisites.first - sh "cc #{lib.cflags} -fPIC #{source} -c -o #{t.name}" - 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 => ext_libs.map { |l| l.so } do |t| +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) - FileUtils::Verbose.install(t.prerequisites, destdir + sitearchdir, - :mode => 0755) + sos = exts.values.map { |e| e.lib_name } + FileUtils::Verbose.install(sos, ddir, :mode => 0755) ddir = destdir + sitearchdir + "/ecore" - FileUtils::Verbose.mkdir(ddir) unless File.directory?(ddir) + 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