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