From 1f0735b23c07158176ff4c2c856e1811de7631eb Mon Sep 17 00:00:00 2001 From: j8takagi Date: Fri, 22 Feb 2019 00:18:57 +0900 Subject: [PATCH] =?utf8?q?make=20valgrind=E3=81=A7=E3=80=81CMD=5FVALGRIND?= =?utf8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=81=8C=E3=81=82=E3=82=8C?= =?utf8?q?=E3=81=B0=E3=81=9D=E3=81=AE=E3=82=B3=E3=83=9E=E3=83=B3=E3=83=89?= =?utf8?q?=E3=82=92=E5=AE=9F=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- VERSION | 2 +- template/Define.mk | 8 +++++++- template/Test.mk | 19 +++++++++++-------- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/VERSION b/VERSION index 1e8eced..3742f5d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.2p16 +0.2p17 diff --git a/template/Define.mk b/template/Define.mk index 48f103d..74f4c33 100644 --- a/template/Define.mk +++ b/template/Define.mk @@ -41,7 +41,9 @@ TEST := test TIME := time TR := tr VALGRIND := valgrind -VALGRINDFLAG := -q --leak-check=full --show-leak-kinds=all --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 ###################################################################### # テストグループとテストでの共通マクロ @@ -68,6 +70,7 @@ define create_dir $(MKDIR) $1 endef + # ファイル1からファイル2への相対パス # 引数は、ファイル名1、ファイル名2 # 用例: $(call rel_to,file1,file2) @@ -130,6 +133,9 @@ GROUP_MAKEFILE_REL = $(call rel_to,$(GROUPDIR),$(GROUP_MAKEFILE)) # テストコマンドファイル CMD_FILE := cmd +# valgrindテストコマンドファイル +VALGRIND_CMD_FILE := cmd_valgrind + # テスト説明ファイル DESC_FILE := desc.txt diff --git a/template/Test.mk b/template/Test.mk index def57eb..e8a3135 100644 --- a/template/Test.mk +++ b/template/Test.mk @@ -39,16 +39,16 @@ define time_cmd ($(TIME) ./$1 1>$(DEV_NULL) 2>$(DEV_NULL)) 2>&1 | $(GREP) '^real' >$2 endef -CMD_VALGRIND = $(strip $(shell if test "`$(FILE) $(CMD_FILE)`" = "data"; then cat $(CMD_FILE); else $(PRINTF) "./$(CMD_FILE)"; fi)) +VALGRIND_CMD = $(strip $(shell if test -s $(VALGRIND_CMD_FILE); then $(CAT) $(VALGRIND_CMD_FILE); elif test "`$(FILE) $(CMD_FILE)`" = "data"; then $(CAT) $(CMD_FILE); else $(PRINTF) "./$(CMD_FILE)"; fi)) # valgrindによるメモリーチェック結果を、指定されたファイルに出力して表示 # 引数は、テスト名、コマンドファイル、出力ファイル # 用例: $(call valgrind_cmd,file_cmd,file_out) define valgrind_cmd - -$(VALGRIND) $(VALGRINDFLAG) $(CMD_VALGRIND) 1>/dev/null 2>&1 + -$(VALGRIND) $(VALGRINDFLAG) $(VALGRIND_CMD) 1>/dev/null 2>&1 endef -# テスト実行コマンド。 +# テスト実行コマンド # コマンドファイルを実行し、標準出力を指定されたファイルに保存。 # エラー発生時は、エラー出力を出力ファイルとエラーファイルに保存。 # 引数は、コマンドファイル、出力ファイル、エラーファイル @@ -129,7 +129,7 @@ reset: all-clean $(CMD_FILE) @$(CAT) $(TEST0_FILE) clean: - @$(RM) $(TEST_RES_FILES) $(TIME_FILE) $(VALGRIND_FILE) core + @$(RM) $(TEST_RES_FILES) $(TIME_FILE) $(VALGRIND_LOGFILE) $(VALGRIND_CMDLOGFILE) core all-clean: clean @$(RM) $(TEST0_FILE) @@ -140,11 +140,14 @@ time: time-clean $(TIME_FILE) time-clean: @$(RM) $(TIME_FILE) -valgrind: valgrind-clean $(VALGRIND_FILE) - if test -s $(VALGRIND_FILE); then $(ECHO) $(CURDIR) && $(CAT) $(VALGRIND_FILE); else $(RM) $(VALGRIND_FILE); fi +valgrind: valgrind-clean $(VALGRIND_LOGFILE) $(VALGRIND_CMDLOGFILE) + if test -s $(VALGRIND_LOGFILE); then $(ECHO) $(CURDIR) && $(CAT) $(VALGRIND_LOGFILE); else $(RM) $(VALGRIND_LOGFILE); fi + +$(VALGRIND_CMDLOGFILE): $(VALGRIND_LOGFILE) + @$(PRINTF) "$(VALGRIND) $(VALGRINDFLAG) $(VALGRIND_CMD)\n" | $(CAT) - $(VALGRIND_LOGFILE) >$(VALGRIND_CMDLOGFILE) valgrind-clean: - @$(RM) $(VALGRIND_FILE) + @$(RM) $(VALGRIND_LOGFILE) $(TEST1_FILE): $(CMD_FILE) @-$(call exec_cmd,$^,$@,$(ERR_FILE)) @@ -161,5 +164,5 @@ $(DETAIL_FILE): $(LOG_FILE) $(TIME_FILE): $(CMD_FILE) @$(call time_cmd,$^,$@) -$(VALGRIND_FILE): $(CMD_FILE) +$(VALGRIND_LOGFILE): $(CMD_FILE) $(call valgrind_cmd,$^,$@) -- 2.18.0