task/lib.rake in rucy-0.1.0 vs task/lib.rake in rucy-0.1.1

- old
+ new

@@ -1,21 +1,28 @@ # -*- mode: ruby; coding: utf-8 -*- +require 'rake/loaders/makefile' + + namespace :lib do name = NAME outname = "lib#{name}.a" out = File.join LIBDIR, outname erbs = convertions glob("**/*.erb"), {".erb" => ""} headers = glob("include/**/*.h") | erbs.values.grep(/\.h$/) srcs = glob("src/**/*.cpp") | erbs.values.grep(/\.cpp$/) - objs = convertions srcs, {".cpp" => ".o"} - tmps = objs.values | erbs.values + depend = 'depend.mf' + objs = convertions srcs, {".cpp" => ".o"} + tmps = (objs.values | erbs.values) + [depend] + cflags = CFLAGS.dup + cflags << INCDIRS.map{|s| " -I#{s}"}.join + task :build => out task :compile => objs.values task :erb => erbs.values @@ -26,14 +33,22 @@ file out => objs.values do sh %( #{AR} #{ARFLAGS} #{out} #{objs.values.join " "} ) end - objs.each do |(src, obj)| - incdirs = INCDIRS.map{|s| " -I#{s}"}.join + file depend => 'lib:erb' do + sh %( #{CC} -M #{cflags} #{srcs.join ' '} > #{depend} ) + input = open(depend) {|f| f.read} + open(depend, 'w') do |output| + output << input.gsub(/\w+\.o/, SRCDIR + '/\0') + end + end - file obj => [src] + erbs.values do - sh %( #{CC} -c #{CFLAGS} #{incdirs} -o #{obj} #{src} ) + import depend if File.exist? depend + + objs.each do |(src, obj)| + file obj => [depend, src] + erbs.values do + sh %( #{CC} -c #{cflags} -o #{obj} #{src} ) end end erbs.each do |(erb, out)| file out => [erb] + RBS do