OSDN Git Service

Makefile を Rakefile に切り替えた。
[simplecms/utakata.git] / test / Rakefile.in
1 # -*- coding: utf-8 -*-
2 require "rake/clean"
3
4 CC = "@CXX@"
5 cflags = "@CFLAGS@ -fno-default-inline"
6
7 TOPDIR = "@top_srcdir@"
8
9 ldflags = "@DEFS@ "
10 ldflags += "-L@top_srcdir@/test/gtest/gtest-all"
11
12 includes = " "
13 includes += "-I. -I@top_srcdir@"
14
15 # lists of compile dependency objects
16 SRCS = FileList["*.cpp"]
17 OBJS = SRCS.ext("o")
18 OBJECTS = FileList["@top_srcdir@/src/**/*.o"]
19
20 TARGET_OBJECTS = FileList[]
21 TARGET_OBJECTS.include(OBJS)
22 TARGET_OBJECTS.include(OBJECTS)
23
24 # lists of running test program
25 TEST_PROGRAMS = FileList["*_test.cpp"]
26 TEST_PROGRAMS_EXE = TEST_PROGRAMS.ext("")
27 EXEEXT = "@EXEEXT@"
28
29 # lists of clean objects
30 CLEAN.include(OBJS)
31 CLOBBER.include(TEST_PROGRAMS)
32
33 DEPDIR = "./.deps"
34
35 task "default" => [DEPDIR, "compile"]
36 task "test" => ["compile", "execute"]
37
38 directory DEPDIR
39 file DEPDIR do |t|
40   rm_f t.name + "/*.po"
41 end
42
43 desc "Compile all sources "
44 task "compile" => OBJS do |t|
45   cd("../src") do |f|
46     sh "rake -f ../src/Rakefile --trace"
47   end
48 end
49
50 rule "_test#{EXEEXT}" => TARGET_OBJECTS do |t|
51   sh "#{CC} -o #{t.name} #{ldflags} #{cflags} #{includes} #{OBJECTS.join(' ')} ../test/gtest/gtest-all.o #{t.source} "
52 end
53
54 rule '.o' => '.cpp' do |t|
55   depname = File.basename(t.name, ".o") + ".po"
56   sh "#{CC} -MD -MF #{DEPDIR}/#{depname} #{ldflags} #{cflags} #{includes} -c #{t.source}"
57 end
58
59 desc "run all test program in `TEST_PROGRAMS`"
60 task :execute => TEST_PROGRAMS_EXE do |t|
61   t.prerequisites.each { |f|
62     sh "./#{f}#{EXEEXT} --gtest_color=yes"
63   }
64 end