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