make valgrindで、CMD_VALGRINDファイルがあればそのコマンドを実行
[autotest_mk.git] / template / Define.mk
index bb55bd4..74f4c33 100644 (file)
@@ -4,6 +4,12 @@
 ifndef DEFINE_INCLUDED
 DEFINE_INCLUDED = 1
 
+# シェルコマンドをデバッグするときは、DEBUGSH変数を設定してmakeを実行する
+# 例: DEBUGSH=1 make
+ifdef DEBUGSH
+  SHELL := /bin/sh -x
+endif
+
 # 現在の日時
 DATE = $(shell date +"%F %T")
 
@@ -21,17 +27,23 @@ DEV_NULL := /dev/null
 DIFF := diff -c
 ECHO := echo
 EXPR := expr
+FILE := file -b -e ascii
 FIND := find
 GREP := grep
 LINECOUNT := wc -l
 LN := ln -s
 MKDIR := mkdir -p
 MV := mv
+PRINTF := printf
+REALPATH := realpath
 SED := sed
+TEST := test
 TIME := time
 TR := tr
 VALGRIND := valgrind
-VALGRINDFLAG :=  -q --leak-check=full --log-file=valgrind.log
+VALGRIND_LOGFILE := _valgrind.log
+VALGRINDFLAG :=  -q --leak-check=full --show-leak-kinds=all --log-file=$(VALGRIND_LOGFILE)
+VALGRIND_CMDLOGFILE := valgrind.log
 
 ######################################################################
 # テストグループとテストでの共通マクロ
@@ -58,6 +70,14 @@ define create_dir
     $(MKDIR) $1
 endef
 
+
+# ファイル1からファイル2への相対パス
+# 引数は、ファイル名1、ファイル名2
+# 用例: $(call rel_to,file1,file2)
+define rel_to
+    $(strip $(shell $(REALPATH) --relative-to=$1 $2))
+endef
+
 # テストディレクトリーのMakefileを作成
 # 引数は、Makefile名、依存ファイル群
 # 用例: $(call create_makefile,file,list_include_file)
@@ -94,11 +114,17 @@ DEFINE_FILE := Define.mk
 # テストのターゲットを定義したMakefile
 TEST_MAKEFILE := Test.mk
 
-# すべてのMakefile群
-MAKEFILES := $(DEFINE_FILE) $(TEST_MAKEFILE)
+# テストグループのMakefileとしてコピーされるファイル
+GROUP_MAKEFILE := Group.mk
+
+# DEFINE_FILEの相対パス
+DEFINE_FILE_REL = $(call rel_to,$(GROUPDIR),$(DEFINE_FILE))
 
-# すべてのMakefile群の絶対パス
-MAKEFILES_ABS := $(foreach file,$(MAKEFILES),$(CURDIR)/$(file))
+# TEST_MAKEFILEの相対パス
+TEST_MAKEFILE_REL = $(call rel_to,$(GROUPDIR),$(TEST_MAKEFILE))
+
+# GROUP_MAKEFILEの相対パス
+GROUP_MAKEFILE_REL = $(call rel_to,$(GROUPDIR),$(GROUP_MAKEFILE))
 
 ######################################################################
 # テストのディレクトリー
@@ -107,6 +133,9 @@ MAKEFILES_ABS := $(foreach file,$(MAKEFILES),$(CURDIR)/$(file))
 # テストコマンドファイル
 CMD_FILE := cmd
 
+# valgrindテストコマンドファイル
+VALGRIND_CMD_FILE := cmd_valgrind
+
 # テスト説明ファイル
 DESC_FILE := desc.txt