annotate Makefile @ 109:0e5c059a7658

added diagnosis for GNUMake's $(eval ...), $(shell ...) and $(eval ... $(shell ...))
author thomask
date Sat, 06 Nov 2004 14:07:01 +0000
parents aa6478748245
children 553c8aaa0982
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
1 # GnuMakefile for DStress http://dmd.kuehne.cn/dstress.html
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
2 # Copyright (C) 2004 Thomas Kuehne
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
3 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
4 # This program is free software; you can redistribute it and/or modify
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
5 # it under the terms of the GNU General Public License as published by
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
6 # the Free Software Foundation; either version 2 of the License, or
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
7 # (at your option) any later version.
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
8 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
9 # This program is distributed in the hope that it will be useful,
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
12 # GNU General Public License for more details.
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
13 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
14 # You should have received a copy of the GNU General Public License
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
15 # along with this program; if not, write to the Free Software
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
17 #
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
18
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
19 # dir: temp objects will be placed there
32
315459a24bf4 fixed LOG and OBJ_DIR
thomask
parents: 31
diff changeset
20 ifndef OBJ_DIR
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
21 OBJ_DIR = obj
32
315459a24bf4 fixed LOG and OBJ_DIR
thomask
parents: 31
diff changeset
22 endif
315459a24bf4 fixed LOG and OBJ_DIR
thomask
parents: 31
diff changeset
23
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
24 # file: append compiler messages and runtime assertions
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
25 # NOTE: this has to be an absolut path (required for some complex.mak files)
32
315459a24bf4 fixed LOG and OBJ_DIR
thomask
parents: 31
diff changeset
26 ifndef LOG
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
27 LOG = $(PWD)/log.txt
32
315459a24bf4 fixed LOG and OBJ_DIR
thomask
parents: 31
diff changeset
28 endif
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
29
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
30 # executeable: the compiler
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
31 ifndef DMD
3269e4627918 init dstress
svnowner
parents:
diff changeset
32 DMD = dmd
3269e4627918 init dstress
svnowner
parents:
diff changeset
33 endif
3269e4627918 init dstress
svnowner
parents:
diff changeset
34
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
35 # executeable: a GNU findutils compatible find (e.g.: find path -regex "?\\.*something")
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
36 ifndef FIND
3269e4627918 init dstress
svnowner
parents:
diff changeset
37 FIND = find
3269e4627918 init dstress
svnowner
parents:
diff changeset
38 endif
3269e4627918 init dstress
svnowner
parents:
diff changeset
39
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
40 # executeable: remove zero or more files (e.g.: rm -f a b c)
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
41 ifndef RM
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
42 RM = rm -f
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
43 endif
3269e4627918 init dstress
svnowner
parents:
diff changeset
44
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
45 # executeable: change to a given dir (e.g. cd some/other/dir)
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
46 ifndef CD
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
47 CD = cd
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
48 endif
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
49
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
50 # executeable: display a message test (e.g. echo "something to say)
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
51 ifndef ECHO
3269e4627918 init dstress
svnowner
parents:
diff changeset
52 ECHO = echo
3269e4627918 init dstress
svnowner
parents:
diff changeset
53 endif
3269e4627918 init dstress
svnowner
parents:
diff changeset
54
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
55 # executeable: update the timestamp of an existing file or create a new empty file
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
56 ifndef TOUCH
3269e4627918 init dstress
svnowner
parents:
diff changeset
57 TOUCH = touch
3269e4627918 init dstress
svnowner
parents:
diff changeset
58 endif
3269e4627918 init dstress
svnowner
parents:
diff changeset
59
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
60 ###############################################################################
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
61 ###############################################################################
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
62 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
63 # nothing to customize below
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
64 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
65 ###############################################################################
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
66 ###############################################################################
6
e238a15dbc74 1) added added html-sourcefile support
thomask
parents: 0
diff changeset
67
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
68 # tools
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
69 return__ = ./return__
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
70 ifeq__ = ./ifeq__
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
71 extract__ = ./extract__
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
72
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
73 # settings
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
74 to_log = >> $(LOG) 2>&1
3269e4627918 init dstress
svnowner
parents:
diff changeset
75 ext_run = exe
3269e4627918 init dstress
svnowner
parents:
diff changeset
76 ext_norun = bin
3269e4627918 init dstress
svnowner
parents:
diff changeset
77 ext_nocompile = no
3269e4627918 init dstress
svnowner
parents:
diff changeset
78 ext_compile = o
3269e4627918 init dstress
svnowner
parents:
diff changeset
79 ext_source = d
6
e238a15dbc74 1) added added html-sourcefile support
thomask
parents: 0
diff changeset
80 ext_source_html = html
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
81 complex_todo = complex.mak
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
82 complex_done = complex.done
85
659bb018c489 1) changed "?DSTRESS_FLAGS?" to "__DSTRESS_DFLAGS__" in order to cope with botched shells
thomask
parents: 83
diff changeset
83 flag_pattern = __DSTRESS_DFLAGS__
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
84
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
85
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
86 .PHONY: all basic_tools compile nocompile run norun complex clean distclean clean_log log
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
87 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
88 # test everything
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
89 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
90 all : Makefile compile nocompile run norun complex
6
e238a15dbc74 1) added added html-sourcefile support
thomask
parents: 0
diff changeset
91
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
92 #
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
93 # the tools
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
94 #
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
95 $(return__) : return__.c Makefile
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
96 $(CC) $(CFLAGS) $< -o $@
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
97
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
98 $(ifeq__) : ifeq__.c Makefile
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
99 $(CC) $(CFLAGS) $< -o $@
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
100
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
101 $(extract__) : extract__.c Makefile
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
102 $(CC) $(CFLAGS) $< -o $@
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
103
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
104 basic_tools : $(ifeq__) $(return__) $(extract__)
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
105
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
106
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
107 #
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
108 # include complex test cases
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
109 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
110 complex_makefiles = $(sort $(shell $(FIND) complex -regex ".*$(complex_todo)"))
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
111 include $(complex_makefiles)
6
e238a15dbc74 1) added added html-sourcefile support
thomask
parents: 0
diff changeset
112
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
113 #
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
114 # extract potential compiling flags from the test case sources
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
115 #
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
116 define extract_z_flags
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
117 $(eval z_flags = $(shell $(extract__) $(flag_pattern) < $<))
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
118 endef
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
119
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
120 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
121 # target should fail to compile
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
122 #
41
84e813a3e99b fixed Makefile so that an edited makefile triggers a rebuild of outdated targets
thomask
parents: 32
diff changeset
123 nocompile : Makefile $(sort $(subst .$(ext_source),.$(ext_nocompile),$(shell $(FIND) nocompile -regex ".*\\.$(ext_source)" ) ) $(subst .$(ext_source_html),.$(ext_nocompile),$(shell $(FIND) nocompile -regex ".*\\.$(ext_source_html)" ) ) )
17
deb014248067 cleanup of makefile
thomask
parents: 14
diff changeset
124
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
125 define analyse_nocompile
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
126 @if $(ifeq__) $(z_return) 0 ; then \
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
127 $(ECHO) "XPASS: $(z_name)"; $(RM) $@; \
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
128 else \
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
129 if $(ifeq__) $(z_return) 256 ; then \
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
130 $(ECHO) "XFAIL: $(z_name)"; $(TOUCH) $@; \
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
131 else \
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
132 $(ECHO) "ERROR: $(z_name) [$(z_return)]"; $(RM) $@; \
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
133 fi \
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
134 fi
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
135 endef
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
136
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
137 %.$(ext_nocompile) : %.$(ext_source) basic_tools
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
138 $(eval z_name = $(subst .$(ext_nocompile),,$@))
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
139 $(extract_z_flags)
92
df8fe715d493 added support for multifile "nocompile" targets
thomask
parents: 85
diff changeset
140 $(eval z_return = $(shell $(return__) "$(DMD) $(DFLAGS) $(z_flags) -c -od$(OBJ_DIR) $< $(to_log)"))
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
141 $(analyse_nocompile)
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
142
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
143 %.$(ext_nocompile) : %.$(ext_source_html) basic_tools
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
144 $(eval z_name = $(subst .$(ext_nocompile),,$@))
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
145 $(extract_z_flags)
92
df8fe715d493 added support for multifile "nocompile" targets
thomask
parents: 85
diff changeset
146 $(eval z_return = $(shell $(return__) "$(DMD) $(DFLAGS) $(z_flags) -c -od$(OBJ_DIR) $< $(to_log)"))
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
147 $(analyse_nocompile)
32
315459a24bf4 fixed LOG and OBJ_DIR
thomask
parents: 31
diff changeset
148
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
149 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
150 # target should compile (excludes linking)
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
151 #
41
84e813a3e99b fixed Makefile so that an edited makefile triggers a rebuild of outdated targets
thomask
parents: 32
diff changeset
152 compile : Makefile $(sort $(subst .$(ext_source),.$(ext_compile),$(shell $(FIND) compile -regex ".*\\.$(ext_source)" ) ) $(subst .$(ext_source_html),.$(ext_compile),$(shell $(FIND) compile -regex ".*\\.$(ext_source_html)" ) ) )
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
153
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
154 define analyse_compile
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
155 @if $(ifeq__) $(z_return) 0 ; then \
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
156 $(ECHO) "PASS: $(z_name)"; \
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
157 else \
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
158 if $(ifeq__) $(z_return) 256 ; then \
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
159 $(ECHO) "FAIL: $(z_name)"; $(RM) $@; \
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
160 else \
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
161 $(ECHO) "ERROR: $(z_name) [$(z_return)]"; $(RM) $@; \
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
162 fi \
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
163 fi
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
164 endef
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
165
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
166 %.$(ext_compile) : %.$(ext_source) basic_tools
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
167 $(eval z_name = $(subst .$(ext_compile),,$@))
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
168 $(extract_z_flags)
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
169 $(eval z_return = $(shell $(return__) "$(DMD) $(DFLAGS) $(z_flags) -c -of$@ $< $(to_log)"))
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
170 $(analyse_compile)
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
171
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
172
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
173 %.$(ext_compile) : %.$(ext_source_html) basic_tools
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
174 $(eval z_name = $(subst .$(ext_compile),,$@))
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
175 $(extract_z_flags)
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
176 $(eval z_return = $(shell $(return__) "$(DMD) $(DFLAGS) $(z_flags) -c -of$@ $< $(to_log)"))
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
177 $(analyse_compile)
6
e238a15dbc74 1) added added html-sourcefile support
thomask
parents: 0
diff changeset
178
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
179 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
180 # target should compile, link and run
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
181 #
41
84e813a3e99b fixed Makefile so that an edited makefile triggers a rebuild of outdated targets
thomask
parents: 32
diff changeset
182 run : Makefile $(sort $(subst .$(ext_source),.$(ext_run),$(shell $(FIND) run -regex ".*\\.$(ext_source)" ) ) $(subst .$(ext_source_html),.$(ext_run),$(shell $(FIND) run -regex ".*\\.$(ext_source_html)" ) ) )
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
183
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
184 define analyse_run
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
185 @if $(ifeq__) $(z_return) 0 ; then \
80
72fa445c2fbb minor makefile cleanup
thomask
parents: 75
diff changeset
186 $(eval z_return2 = $(shell $(return__) "./$@ $(to_log)")) \
72fa445c2fbb minor makefile cleanup
thomask
parents: 75
diff changeset
187 if $(ifeq__) $(z_return2) 0 ; then \
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
188 $(ECHO) "PASS: $(z_name)"; \
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
189 else \
80
72fa445c2fbb minor makefile cleanup
thomask
parents: 75
diff changeset
190 if $(ifeq__) $(z_return2) 256 ; then \
72fa445c2fbb minor makefile cleanup
thomask
parents: 75
diff changeset
191 $(ECHO) "FAIL: $(z_name)"; $(RM) $@; \
72fa445c2fbb minor makefile cleanup
thomask
parents: 75
diff changeset
192 else \
72fa445c2fbb minor makefile cleanup
thomask
parents: 75
diff changeset
193 $(ECHO) "ERROR: $(z_name) [run: $(z_return2)]"; $(RM) $@; \
72fa445c2fbb minor makefile cleanup
thomask
parents: 75
diff changeset
194 fi \
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
195 fi \
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
196 else \
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
197 if $(ifeq__) $(z_return) 256 ; then \
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
198 $(ECHO) "FAIL: $(z_name) (compiling error)"; \
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
199 else \
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
200 $(ECHO) "ERROR: $(z_name) [$(z_return)]"; \
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
201 fi \
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
202 fi
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
203 endef
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
204
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
205 %.$(ext_run) : %.$(ext_source) basic_tools
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
206 $(eval z_name = $(subst .$(ext_run),,$@))
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
207 $(extract_z_flags)
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
208 $(eval z_return = $(shell $(return__) "$(DMD) $(DFLAGS) $(z_flags) -od$(OBJ_DIR) -of$@ $< $(to_log)"))
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
209 $(analyse_run)
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
210
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
211 %.$(ext_run) : %.$(ext_source_html) basic_tools
63
9ca076fc9ce9 fixed mangling of html test names
thomask
parents: 58
diff changeset
212 $(eval z_name = $(subst .$(ext_run),,$@))
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
213 $(extract_z_flags)
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
214 $(eval z_return = $(shell $(return__) "$(DMD) $(DFLAGS) $(z_flags) -od$(OBJ_DIR) -of$@ $< $(to_log)"))
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
215 $(analyse_run)
6
e238a15dbc74 1) added added html-sourcefile support
thomask
parents: 0
diff changeset
216
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
217 #
108
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
218 # target should compile, link and run
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
219 # (used for Makefile diagnosis)
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
220 #
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
221 %.diagnose.$(ext_run) : %.$(ext_source) basic_tools
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
222 # destination: $@
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
223 # source: $<
109
0e5c059a7658 added diagnosis for GNUMake's $(eval ...), $(shell ...) and $(eval ... $(shell ...))
thomask
parents: 108
diff changeset
224 $(eval y_tmp = OK)
0e5c059a7658 added diagnosis for GNUMake's $(eval ...), $(shell ...) and $(eval ... $(shell ...))
thomask
parents: 108
diff changeset
225 # eval: $(y_tmp)
0e5c059a7658 added diagnosis for GNUMake's $(eval ...), $(shell ...) and $(eval ... $(shell ...))
thomask
parents: 108
diff changeset
226 # shell:
0e5c059a7658 added diagnosis for GNUMake's $(eval ...), $(shell ...) and $(eval ... $(shell ...))
thomask
parents: 108
diff changeset
227 @$(ECHO) $(shell $(ECHO) "OK")
0e5c059a7658 added diagnosis for GNUMake's $(eval ...), $(shell ...) and $(eval ... $(shell ...))
thomask
parents: 108
diff changeset
228 $(eval y_tmp = $(shell $(ECHO) "OK"))
0e5c059a7658 added diagnosis for GNUMake's $(eval ...), $(shell ...) and $(eval ... $(shell ...))
thomask
parents: 108
diff changeset
229 # eval.shell: $(y_tmp)
108
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
230 $(eval z_name = $(subst .diagnose.$(ext_run),,$@))
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
231 # name: $(z_name)
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
232 # extract__: $(extract__)
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
233 # extract__.cmd: $(extract__) $(flag_pattern) < $<
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
234 $(extract_z_flags)
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
235 # extract__.result: $(z_flags)
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
236 # ifeq__: $(ifeq__)
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
237 # continue if ifeq__ works
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
238 $(ifeq__) someString someString
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
239 # return__: $(return__)
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
240 # dmd: $(DMD)
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
241 $(eval y_tmp = $(shell $(return__) "$(ifeq__) 1 1"))
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
242 # return__.return_code_0: $(y_tmp) (expect=0)
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
243 $(eval y_tmp = $(shell $(return__) "$(DMD) > /dev/null"))
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
244 # return__.return_code_1: $(y_tmp) (expect=256)
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
245 # dmd.cmd: $(DMD) $(DFLAGS) $(z_flags) -od$(OBJ_DIR) -of$@ $< $(to_log)
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
246 $(eval z_return = $(shell $(return__) "$(DMD) $(DFLAGS) $(z_flags) -od$(OBJ_DIR) -of$@ $< $(to_log)"))
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
247 # dmd.return: $(z_return)
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
248 # for analyse_run diagnosis: '@if' -> 'if' in 'define analyse_run' (line 185)
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
249 $(analyse_run)
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
250
aa6478748245 added makefile diagnostics
thomask
parents: 92
diff changeset
251 #
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
252 # target should compile and link but fail to run
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
253 #
41
84e813a3e99b fixed Makefile so that an edited makefile triggers a rebuild of outdated targets
thomask
parents: 32
diff changeset
254 norun : Makefile $(sort $(subst .$(ext_source),.$(ext_norun),$(shell $(FIND) norun -regex ".*\\.$(ext_source)" ) ) $(subst .$(ext_source_html),.$(ext_norun),$(shell $(FIND) norun -regex ".*\\.$(ext_source_html)" ) ) )
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
255
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
256 define analyse_norun
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
257 @if $(ifeq__) $(z_return) 0; then \
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
258 if ./$@ $(to_log); \
58
eedf04fffdc3 re-aligned test output
thomask
parents: 46
diff changeset
259 then $(ECHO) "XPASS: $(z_name)"; $(RM) $@; \
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
260 else \
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
261 $(ECHO) "XFAIL: $(z_name)"; \
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
262 fi \
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
263 else \
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
264 if $(ifeq__) $(z_return) 256 ; then \
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
265 $(ECHO) "FAIL: $(z_name) (compiling error)"; $(RM) $@; \
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
266 else \
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
267 $(ECHO) "ERROR: $(z_name) [$(z_return)]"; \
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
268 fi \
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
269 fi
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
270 endef
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
271
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
272 %.$(ext_norun) : %.$(ext_source) basic_tools
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
273 $(eval z_name = $(subst .$(ext_norun),,$@))
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
274 $(extract_z_flags)
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
275 $(eval z_return = $(shell $(return__) "$(DMD) $(DFLAGS) $(z_flags) -od$(OBJ_DIR) -of$@ $< $(to_log)"))
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
276 $(analyse_norun)
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
277
72
b0e95b878322 added segfault detection support
thomask
parents: 63
diff changeset
278 %.$(ext_norun) : %.$(ext_source_html) Makefile
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
279 $(eval z_name = $(subst .$(ext_norun),,$@))
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
280 $(extract_z_flags)
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
281 $(eval z_return = $(shell $(return__) "$(DMD) $(DFLAGS) $(z_flags) -od$(OBJ_DIR) -of$@ $< $(to_log)"))
75
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
282 $(analyse_norun)
edc279c4f7f9 makefile cleanup
thomask
parents: 72
diff changeset
283
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
284
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
285 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
286 # run all complex test cases
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
287 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
288 complex : $(sort $(subst $(complex_todo),$(complex_done),$(complex_makefiles)))
6
e238a15dbc74 1) added added html-sourcefile support
thomask
parents: 0
diff changeset
289
32
315459a24bf4 fixed LOG and OBJ_DIR
thomask
parents: 31
diff changeset
290
17
deb014248067 cleanup of makefile
thomask
parents: 14
diff changeset
291 log : distclean all
32
315459a24bf4 fixed LOG and OBJ_DIR
thomask
parents: 31
diff changeset
292
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
293 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
294 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
295 #
17
deb014248067 cleanup of makefile
thomask
parents: 14
diff changeset
296 distclean : clean_log clean
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
297 $(RM) $(shell $(FIND) . -regex ".*~") $(shell $(FIND) . -regex "\\..*\\.swp")
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
298 $(RM) return__ ifeq__ extract__ www/*.class
6
e238a15dbc74 1) added added html-sourcefile support
thomask
parents: 0
diff changeset
299
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
300 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
301 # remove compiler and assertion messages
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
302 #
0
3269e4627918 init dstress
svnowner
parents:
diff changeset
303 clean_log :
3269e4627918 init dstress
svnowner
parents:
diff changeset
304 $(RM) $(LOG)
3269e4627918 init dstress
svnowner
parents:
diff changeset
305
46
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
306 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
307 # remove targets and all temp objects
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
308 #
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
309 clean : $(sort $(subst $(complex_todo),clean,$(complex_makefiles)))
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
310 $(RM) $(OBJ_DIR)/?*.?*
1f7f839145de added complex test case(e.g. multi file) support
thomask
parents: 41
diff changeset
311 $(RM) run/?*.$(ext_run) norun/?*.$(ext_norun) compile/?*.$(ext_compile) nocompile/?*.$(ext_nocompile)
83
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
312
6a56a7866943 added ?DSTRESS_FLAGS? support (2)
thomask
parents: 80
diff changeset
313 # the empty line above has to remain, otherwise some weired problems can arise