# -*- coding: utf-8 -*- require "rake/clean" CC = "@CXX@" cflags = "@CFLAGS@ -fno-default-inline" TOPDIR = "@top_srcdir@" ldflags = "@DEFS@ " ldflags += "-L@top_srcdir@/test/gtest/gtest-all" includes = " " includes += "-I. -I@top_srcdir@" # lists of compile dependency objects SRCS = FileList["*.cpp"] OBJS = SRCS.ext("o") OBJECTS = FileList["@top_srcdir@/src/**/*.o"] TARGET_OBJECTS = FileList[] TARGET_OBJECTS.include(OBJS) TARGET_OBJECTS.include(OBJECTS) # lists of running test program TEST_PROGRAMS = FileList["*_test.cpp"] TEST_PROGRAMS_EXE = TEST_PROGRAMS.ext("") EXEEXT = "@EXEEXT@" # lists of clean objects CLEAN.include(OBJS) CLOBBER.include(TEST_PROGRAMS) DEPDIR = "./.deps" task "default" => [DEPDIR, "compile"] task "test" => ["compile", "execute"] directory DEPDIR file DEPDIR do |t| rm_f t.name + "/*.po" end desc "Compile all sources " task "compile" => OBJS do |t| cd("../src") do |f| sh "rake -f ../src/Rakefile --trace" end end rule "_test#{EXEEXT}" => TARGET_OBJECTS do |t| sh "#{CC} -o #{t.name} #{ldflags} #{cflags} #{includes} #{OBJECTS.join(' ')} ../test/gtest/gtest-all.o #{t.source} " end rule '.o' => '.cpp' do |t| depname = File.basename(t.name, ".o") + ".po" sh "#{CC} -MD -MF #{DEPDIR}/#{depname} #{ldflags} #{cflags} #{includes} -c #{t.source}" end desc "run all test program in `TEST_PROGRAMS`" task :execute => TEST_PROGRAMS_EXE do |t| t.prerequisites.each { |f| sh "./#{f}#{EXEEXT} --gtest_color=yes" } end