# HG changeset patch # User Frank Benoit # Date 1236001496 -3600 # Node ID 0e8eed4cac02ec09d9030ab7f9d79c71a5bfb65e # Parent 6dd524f61e625133316f2e4db91d6fa315e60b50 add rakefile diff -r 6dd524f61e62 -r 0e8eed4cac02 rakefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rakefile Mon Mar 02 14:44:56 2009 +0100 @@ -0,0 +1,84 @@ +# +# RSP : Create a response file for the compiler, which lists all files from the packages +# Compile and create Headers +# Move objects to unique names +# +require 'find' +require 'fileutils' + +DMD="dmd.exe" +LOCALOBJDIR="obj" +OBJDIR="obj" +DIMPDIR="imp" +RSPNAME="rsp" + +class String + def to_path + self.gsub( '/', '\\' ); + end +end + +def buildTree( basedir, srcdir, resdir ) + + objdir_abs = File.expand_path( OBJDIR ) + dimpdir_abs = File.expand_path( DIMPDIR ) + resdir_abs = File.expand_path( File.join( basedir, resdir )) + srcdir_abs = File.expand_path( File.join( basedir, srcdir )) + rspfile_abs = File.expand_path( RSPNAME ) + + FileUtils.mkdir_p dimpdir_abs + FileUtils.mkdir_p objdir_abs + + puts "Create response file" + rsp = File.new( rspfile_abs, "w+" ) + rsp.puts "-H" + rsp.puts "-I#{srcdir_abs.to_path}" + rsp.puts "-I#{dimpdir_abs.to_path}" + rsp.puts "-J#{resdir_abs.to_path}" + rsp.puts "-c" + rsp.puts "-op" + rsp.puts "-version=TANGOSVN" + Find.find( srcdir_abs ) do |path| + if path =~ /\.d$/ then + rsp.puts path.to_path + end + end + rsp.close + + Dir.chdir(basedir) do + puts "Compile" + sh "#{DMD} @#{rspfile_abs.to_path}" do |ok, res| + raise "compile error" unless ok + end + end + + puts "Move D Headers" + Find.find( srcdir_abs ) do |path| + if FileTest.file?(path) && path =~ /\.di$/ then + trgfile = File.join( dimpdir_abs, path[ srcdir_abs.length+1 .. -1 ]) + FileUtils.mkdir_p File.dirname(trgfile) + FileUtils.mv path, trgfile + end + end + + puts "Move Objects" + srcdirparts = split_all( srcdir_abs ).length + Find.find( srcdir_abs ) do |path| + if FileTest.file?(path) && path =~ /\.o(bj)?$/ then + trgfile = split_all( path )[ srcdirparts .. -1 ].join( "-" ) + FileUtils.mv path, File.join( objdir_abs, trgfile ) + end + end + +end + +desc "Build Java" +task :java do + buildTree( "java", "src", "res" ) +end + +desc "Build SWT" +task :swt do + buildTree( "org.eclipse.swt.win32.win32.x86", "src", "res" ) +end +