ソースコードの推敲
[YACASL2.git] / test / Template / Define.mk
1 # autotest.mk > test_template > Define.mk
2 # 自動テスト用の変数、マクロ定義
3
4 ifndef DEFINE_INCLUDED
5 DEFINE_INCLUDED = 1
6
7 # シェルコマンドをデバッグするときは、DEBUGSH変数を設定してmakeを実行する
8 # 例: DEBUGSH=1 make
9 ifdef DEBUGSH
10   SHELL := /bin/sh -x
11 endif
12
13 # 現在の日時
14 DATE = $(shell date +"%F %T")
15
16 # Makefile
17 MAKEFILE := Makefile
18
19 ######################################################################
20 # コマンド
21 ######################################################################
22
23 CAT := cat
24 CHMOD := chmod
25 CP := cp
26 DEV_NULL := /dev/null
27 DIFF := diff -c
28 ECHO := echo
29 EXPR := expr
30 FIND := find
31 GREP := grep
32 LINECOUNT := wc -l
33 LN := ln -s
34 MKDIR := mkdir -p
35 MV := mv
36 SED := sed
37 TEST := test
38 TIME := time
39 TR := tr
40 VALGRIND := valgrind
41 VALGRINDFLAG :=  -q --leak-check=full --show-leak-kinds=all --log-file=valgrind.log
42
43 ######################################################################
44 # テストグループとテストでの共通マクロ
45 ######################################################################
46
47 # chk_var_null: 引数がNULLの場合、エラー
48 # 用例: $(call chk_var_null,var)
49 define chk_var_null
50     $(if $1,,$(error NULL argument))
51 endef
52
53 # chk_file_ext: 指定されたファイルが実在する場合、エラー
54 # 用例: $(call chk_file_ext,file)
55 define chk_file_ext
56     $(if $(wildcard $1),$(error $1 exists in $(CURDIR)))
57 endef
58
59 # 指定したディレクトリーを作成
60 # 引数は、ディレクトリー名
61 # 用例: $(call create_dir,name)
62 define create_dir
63     $(call chk_var_null,$1)
64     $(call chk_file_ext,$1)
65     $(MKDIR) $1
66 endef
67
68 # テストディレクトリーのMakefileを作成
69 # 引数は、Makefile名、依存ファイル群
70 # 用例: $(call create_makefile,file,list_include_file)
71 define create_makefile
72     $(RM) $1
73     $(foreach infile,$2,$(ECHO) "include ../$(infile)" >>$1; )
74     $(if $(filter $(SRC),c),$(call puts_cmd_c,$1))
75 endef
76
77 # C言語の関数をテストするための設定を、指定されたファイルに出力
78 # 引数は、ファイル名
79 # 用例: $(call puts_cmd_c,file)
80 define puts_cmd_c
81     $(ECHO) >>$1
82     $(ECHO) "CC := gcc" >>$1
83     $(ECHO) "CFLAGS := -Wall" >>$1
84     $(ECHO) >>$1
85     $(ECHO) ".INTERMEDIATE:" "$$""(CMD_FILE)" >>$1
86     $(ECHO) >>$1
87     $(ECHO) "CMDSRC_FILE := cmd.c" >>$1
88     $(ECHO) "TESTTARGET_FILES :=       # Set test target files" >>$1
89     $(ECHO) >>$1
90     $(ECHO) "$$""(CMD_FILE):" "$$""(CMDSRC_FILE)" "$$""(TESTTARGET_FILES)" >>$1
91     $(ECHO) "   ""$$""(CC)" "$$""(CFLAGS)" "-o" "$$""@" "$$""^" >>$1
92 endef
93
94 ######################################################################
95 # テストグループのディレクトリー
96 ######################################################################
97
98 # テストグループとテストの変数を定義したMakefile
99 DEFINE_FILE := Define.mk
100
101 # テストのターゲットを定義したMakefile
102 TEST_MAKEFILE := Test.mk
103
104 # すべてのMakefile群
105 MAKEFILES := $(DEFINE_FILE) $(TEST_MAKEFILE)
106
107 # すべてのMakefile群の絶対パス
108 MAKEFILES_ABS := $(foreach file,$(MAKEFILES),$(CURDIR)/$(file))
109
110 ######################################################################
111 # テストのディレクトリー
112 ######################################################################
113
114 # テストコマンドファイル
115 CMD_FILE := cmd
116
117 # テスト説明ファイル
118 DESC_FILE := desc.txt
119
120 # テスト想定ファイル
121 TEST0_FILE := 0.txt
122
123 # テスト結果ファイル
124 TEST1_FILE := 1.txt
125
126 # テストの、想定結果と結果の差分ファイル
127 DIFF_FILE := diff.log
128
129 # テストエラーファイル
130 ERR_FILE := err.log
131
132 # テストログファイル
133 LOG_FILE := summary.log
134
135 # 実行時間ファイル
136 TIME_FILE := time.log
137
138 # valgrindによるメモリーチェックファイル
139 VALGRIND_FILE := valgrind.log
140
141 # テスト詳細レポートファイル
142 DETAIL_FILE := detail.log
143
144 # テストの結果として作成されるファイル群
145 TEST_RES_FILES := $(TEST1_FILE) $(DIFF_FILE) $(ERR_FILE) $(LOG_FILE) $(DETAIL_FILE) $(TIME_FILE)
146
147 endif