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