Disable the install of new libraries until we switch over to new testsuite
[dyninst.git] / newtestsuite / make.module.tmpl
1 #
2 # make.module.tmpl for dyninst test suite
3 # Not intended to be a seperate makefile, but to be used in conjunction with
4 # higher level, platform-specific makefiles in the build directories
5
6 RM = rm -f
7 RMDIR ?= rmdir
8 M_GCC ?= purify $(GCC)
9 M_GXX ?= $(GXX)
10 DEPCC ?= $(GCC)
11 DEPENDFLAGS ?= -MM -MT
12 DEPENDDIR = ./depends
13 VPATH   = ../src $(DEPENDDIR)
14
15 #######################################################################
16 ###  Generate compiler id strings
17 ###
18 ###  COMPILERT_NATIVE_CC, COMPILERT_NATIVE_CXX must be defined prior to
19 ###  inclusion of this file.  gcc/g++ are handled here as platform-indep
20 ###
21 #######################################################################
22
23 EMPTY:=
24 BLANK:=$(EMPTY) $(EMPTY)
25 LPAREN:=(
26 RPAREN:=)
27 COMMA=,
28
29 COMPILERT_GCC = $(shell $(M_GCC) -v 2>&1 | grep version | head -1)
30 COMPILER1_GCC = $(subst $(BLANK),_,$(COMPILERT_GCC))
31 COMPILER2_GCC = $(subst $(LPAREN),_,$(COMPILER1_GCC))
32 COMPILER_GCC = $(subst $(RPAREN),_,$(COMPILER2_GCC))
33 MUTATEE_CFLAGS_GNU += -DCOMPILER='"$(COMPILER_GCC)"'
34
35 COMPILERT_GXX = $(shell $(M_GCC) -v 2>&1 | grep version | head -1)
36 COMPILER1_GXX = $(subst $(BLANK),_,$(COMPILERT_GXX))
37 COMPILER2_GXX = $(subst $(LPAREN),_,$(COMPILER1_GXX))
38 COMPILER_GXX = $(subst $(RPAREN),_,$(COMPILER2_GXX))
39 MUTATEE_CXXFLAGS_GNU += -DCOMPILER='"$(COMPILER_GXX)"'
40
41 COMPILER1_NATIVE_CC = $(subst $(BLANK),_,$(COMPILERT_NATIVE_CC))
42 COMPILER2_NATIVE_CC = $(subst $(LPAREN),_,$(COMPILER1_NATIVE_CC))
43 COMPILER_NATIVE_CC = $(subst $(RPAREN),_,$(COMPILER2_NATIVE_CC))
44 MUTATEE_CFLAGS_NATIVE += -DCOMPILER='"$(COMPILER_NATIVE_CC)"'
45
46 COMPILER1_NATIVE_CXX = $(subst $(BLANK),_,$(COMPILERT_NATIVE_CXX))
47 COMPILER2_NATIVE_CXX = $(subst $(LPAREN),_,$(COMPILER1_NATIVE_CXX))
48 COMPILER_NATIVE_CXX = $(subst $(RPAREN),_,$(COMPILER2_NATIVE_CXX))
49 MUTATEE_CXXFLAGS_NATIVE += -DCOMPILER='"$(COMPILER_NATIVE_CXX)"'
50
51 TEST_DEST = $(TO_CORE)/$(PROGRAM_DEST)/testprogs_new
52 LIB_DEST = $(TO_CORE)/$(LIBRARY_DEST)
53
54 #######################################################################
55 ###  Basic definitions (filename prefixes)
56 #######################################################################
57
58 FORALL_MUTATORS =  
59
60 FORALL_MUTATEES = mutatee_util
61
62 TESTLIB_STEMS   += libtestA libtestB libInstMe libLoadMe
63 TESTLIBS = $(addsuffix .so, $(TESTLIB_STEMS))
64
65 ifdef M_ABI
66 TESTLIBS_ABI = $(addsuffix _$(M_ABI).so, $(TESTLIB_STEMS))
67 TESTLIBS_ABI += libTest12_$(M_ABI).so
68 endif
69
70 SRCS_LIBTESTSUITE = test_lib.C \
71                     test_lib_soExecution.C \
72                     test_lib_mutateeStart.C \
73                     test_lib_test7.C \
74                     test_lib_test9.C \
75                     Process_data.C \
76                     ParameterDict.C \
77                     Callbacks.C \
78                     TestData.C \
79                     TestMutator.C
80
81 SRCS_TEMPLATES = test_driver_templates.C 
82
83 OBJS_LIBTESTSUITE = $(SRCS_LIBTESTSUITE:%.C=%.o)
84 OBJS_TEMPLATES = $(SRCS_TEMPLATES:%.C=%.o)
85
86 ifdef USE_LIBTESTSUITE_EXT_A
87 LIBTESTSUITE = libtestSuite.a
88 else
89 LIBTESTSUITE = libtestSuite.so
90 endif
91
92 #######################################################################
93 ###  A list of all the targets we're building, for install purposes
94 #######################################################################
95
96 ALL_TARGETS                     = $(MUTATORS_SO)
97 # ALL_TARGETS                     += $(MUTATEES_GCC) $(MUTATEES_GXX)
98 ALL_TARGETS                     += $(TESTLIBS)
99 #ALL_TARGETS                    += libTest12.so
100 #ALL_TARGETS                    += test11
101 ALL_TARGETS                     += runTests
102 ALL_TARGETS                     += test_driver
103
104 ALL_TARGETS_DEST                = $(addprefix $(TEST_DEST)/,$(ALL_TARGETS))
105 LIBTESTSUITE_DEST               = $(addprefix $(LIB_DEST)/,$(LIBTESTSUITE))
106
107 #######################################################################
108 ###  Some pattern rules
109 #######################################################################
110
111 DYNINST_INCDIR = -I$(TO_CORE)/dyninstAPI/h 
112 CXXFLAGS += $(DYNINST_INCDIR)
113 CXXTFLAGS := $(filter-out -fno-implicit-templates, $(CXXFLAGS))
114 #CXXTFLAGS += -fimplicit-templates
115
116 #%_$(NATIVE_CC).o : %.c
117 #       echo zzrule 1zz
118 #       $(NATIVE_CC) -c $< $(CFLAGS_NATIVE) $(MUTATEE_CFLAGS_NATIVE) -o $@
119 #%_$(NATIVE_CXX).o : %.c
120 #       echo zzrule 2zz
121 #       $(NATIVE_CXX) -c $< $(CXXFLAGS_NATIVE) $(MUTATEE_CXXFLAGS_NATIVE) -o $@
122
123 #%_gcc.o: %.c
124 #       echo zzrule 3zz
125 #       $(M_GCC) -c $< $(CFLAGS) $(MUTATEE_CFLAGS_GNU) -o $@
126 #%_g++.o: %.c 
127 #       echo zzrule 4zz
128 #       $(M_GXX) $(CXXFLAGS) $(MUTATEE_CXXFLAGS_GNU) -c $< -o $@
129 #%_g++.o: %.C 
130 #       echo zzrule 5zz
131 #       $(M_GXX) $(CXXFLAGS) $(MUTATEE_CXXFLAGS_GNU) -c $< -o $@
132
133 #ifdef M_ABI
134 #%_gcc_$(M_ABI).o: %.c
135 #       echo zzrule 6zz
136 #       $(M_GCC) $(M_ABI_FLAG) -c $< $(CFLAGS) $(MUTATEE_CFLAGS_GNU) -o $@
137 #%_g++_$(M_ABI).o: %.c
138 #       echo zzrule 7zz
139 #       $(M_GXX) $(M_ABI_FLAG) $(CXXFLAGS) $(MUTATEE_CXXFLAGS_GNU) -c $< -o $@
140 #%_g++_$(M_ABI).o: %.C
141 #       echo zzrule 8zz
142 #       $(M_GXX) $(M_ABI_FLAG) $(CXXFLAGS) $(MUTATEE_CXXFLAGS_GNU) -c $< -o $@
143 #endif
144
145 #.C.o:
146 #       echo zzrule 9zz
147 #       $(CXX) -c $< $(CXXFLAGS) $(MUTATOR_CXXFLAGS) -o $@
148
149 $(TEST_DEST)/%: %
150         echo Skipping test copy
151 #       -$(CP) $< $(TEST_DEST)
152 #       -$(CHMOD) 750 $(TEST_DEST)/$<
153
154 $(LIB_DEST)/%: %
155         echo Skipping lib copy
156 #       -$(CP) $< $(LIB_DEST)
157 #       -$(CHMOD) 750 $(LIB_DEST)/$<
158
159 $(TEST_DEST_LN)/%: %
160         -$(LN) $< $(TEST_DEST)
161
162 $(LIB_DEST_LN)/%: %
163         -$(LN) $< $(LIB_DEST)
164
165
166 #######################################################################
167 ###  High level targets
168 #######################################################################
169
170 MUTATOR_LDFLAGS := -L. -ltestSuite $(LIBDIR) -lcommon -lsymtabAPI -ldyninstAPI $(MUTATOR_LIBS) $(MUTATOR_LDFLAGS) -lpthread
171 MUTATOR_SO_LDFLAGS = $(filter-out -liberty, $(MUTATOR_LDFLAGS))
172
173
174 # all: testlibs mutators mutatees drivers
175 all: testlibs mutators drivers
176 # See also an addition to the 'all' rule at the end of the file
177
178 ### Automatically generated variables; generated by makegen.py
179 # TODO Have makegen.py create this file
180 include make.mutators.gen
181
182 echo:
183         @echo "DEPS TESTLIBS = $(DEPS_TESTLIBS)"; \
184         echo "MUTATEES_NATIVE_CXX = $(MUTATEES_NATIVE_CXX)"; \
185         echo "MUTATEES_NATIVE_CC = $(MUTATEES_NATIVE_CC)"; \
186         echo "MUTATORS = $(MUTATORS)" ; \
187         echo "MUTATEES_GCC_ABI = $(MUTATEES_GCC_ABI)"
188
189 # *DEBUG* install disabled for now
190 #install: $(TEST_DEST) $(ALL_TARGETS_DEST) $(LIB_DEST) $(LIBTESTSUITE_DEST)
191 #       @echo "install completed"
192 install:
193         @echo "install skipped"
194
195 symlink: $(TEST_DEST) $(LIBTESTSUITE_DEST) $(ALL_TARGETS)
196         @for i in $(ALL_TARGETS); do \
197            $(RM) $(TEST_DEST)/$$i; \
198            echo $(LN) $(PWD)/$$i $(TEST_DEST)/$$i; \
199            $(LN) $(PWD)/$$i $(TEST_DEST)/$$i; \
200         done
201
202         @$(RM) $(LIB_DEST)/$(LIBTESTSUITE)
203         $(LN) $(PWD)/$(LIBTESTSUITE) $(LIB_DEST)/$(LIBTESTSUITE)
204
205 clean: clean_solo_mutatees
206         $(RM) *.da *.bb. *.bbg 
207         $(RM) $(TESTLIBS) $(TESTLIBS_ABI) $(LIBTESTSUITE) test_driver runTests libTest12.so
208         $(RM) $(MUTATORS_SO) $(MUTATEES_GCC) $(MUTATEES_GXX) $(MUTATEES_GCC_ABI) $(MUTATEES_GXX_ABI) $(MUTATEES_G77) $(MUTATEES_GXX_ONLY)
209         $(RM) *.o $(MUTATEES_NATIVE_CC) $(MUTATEES_NATIVE_CXX) $(MUTATEES_NATIVE_FC) $(MUTATEES_NATIVE_CXX_OMP) $(MUTATEES_NATIVE_CXX_ONLY)
210         $(RM) test11
211         $(RM) imagefile
212         $(RM) core core.*
213         $(RM) -r _dyninstsaved*
214         $(RM) *.ii *.ti
215         $(RM) .__afs*
216
217 distclean: clean
218         @if [ -d $(DEPENDDIR) ]; then \
219           $(RM) $(DEPENDDIR)/*.dep; \
220           rmdir $(DEPENDDIR); \
221          fi
222
223 specclean:
224         $(RM) *.gen *.pl tuples
225
226 ifdef M_ABI
227 $(CALL35_1_OBJ_ABI): $(CALL35_1_SRC_ABI)
228         $(M_GCC) $(M_ABI_FLAG) -c $< $(CFLAGS) $(MUTATEE_CFLAGS_GNU) -o $@ 
229 endif
230
231
232 #mutators: $(MUTATORS_SO) test11
233 mutatees: gnu_mutatees native_mutatees
234 gnu_mutatees: $(MUTATEES_GCC) $(MUTATEES_GXX) $(MUTATEES_G77) $(MUTATEES_GCC_ABI) $(MUTATEES_GXX_ABI)
235 native_mutatees: $(MUTATEES_NATIVE_CC) $(MUTATEES_NATIVE_CXX) $(MUTATEES_NATIVE_FC) $(MUTATEES_NATIVE_CXX_OMP) $(MUTATEES_NATIVE_CXX_ONLY)
236 testlibs: $(TESTLIBS) $(TESTLIBS_ABI) $(LIBTESTSUITE) libTest12.so
237
238 drivers: test_driver runTests
239
240 .PHONY: clean install distclean mutators mutatees testlibs gnu_mutatees native_mutatees echo all
241
242 # Despite the look, this isn't actually a pattern rule and so is
243 # defined _after_ all:
244 # $(CALL35_1_OBJ): $(CALL35_1_SRC)
245 #       $(M_GCC) -c $< $(CFLAGS) $(MUTATEE_CFLAGS_GNU) -o $@ 
246
247 # $(TEST6_AS_OBJ_GNU): $(TEST6_AS_SRC)
248 #       $(TEST6_AS_GNU) $(TEST6_ASFLAGS_GNU) -o $@ $<
249
250 #######################################################################
251 ###  Build command for test libraries
252 #######################################################################
253
254 $(TESTLIBS): %.so : %.c $(DEPENDDIR)/%.dep
255 ifdef MAKE_SHARED_LIB
256         $(CC) -g -c $(CFLAGS) -I$(TO_CORE)/dyninstAPI_RT/h $(CFLAGS_TESTLIBS) $(filter %.c, $^) -o $*.o
257         $(MAKE_SHARED_LIB) $(TESTLIB_FLAGS) $*.o -o $@
258 else
259         $(CC) $(TESTLIB_FLAGS) -I$(TO_CORE)/dyninstAPI_RT/h -I../src/ $(filter %.c,$^) -o $@
260 endif
261
262 ifdef M_ABI
263 $(TESTLIBS_ABI): %_$(M_ABI).so : %.c $(DEPENDDIR)/%.dep
264 ifdef MAKE_SHARED_LIB
265         $(CC) -g -c $(CFLAGS) $(CFLAGS_TESTLIBS) $(filter %.c, $^) -o $*.o
266         $(MAKE_SHARED_LIB) $(TESTLIB_FLAGS) $*.o -o $@
267 else
268         $(CC) $(M_ABI_FLAG) $(TESTLIB_FLAGS) -I$(TO_CORE)/dyninstAPI_RT/h -I../src/ $(filter %.c,$^) -o $@
269 endif
270 endif
271
272 $(OBJS_TEMPLATES): %.o : ../src/%.C
273         echo "***OBJS_TEMPLATES***"
274         $(M_GXX) -c -o $@ $(CXXTFLAGS) -I../src/ ../src/$*.C
275
276 test_lib_templates.o : ../src/test_lib_templates.C
277         $(M_GXX) -c -o $@ -fPIC $(CXXTFLAGS) -I../src/ ../src/$*.C
278
279 $(OBJS_LIBTESTSUITE): %.o : ../src/%.C $(DEPENDDIR)/%.dep
280         echo "***OBJS_LIBTESTSUITE***"
281         $(M_GXX) -c -o $@ -fPIC $(CXXFLAGS) -I../src/ ../src/$*.C
282
283 $(LIBTESTSUITE) : $(OBJS_LIBTESTSUITE) test_lib_templates.o test_lib.h
284         $(CXX) -shared $(TESTSUITE_FLAGS) $(LIBDIR) -ldyninstAPI -lsymtabAPI -lcommon $(LIBS_LIBTESTSUITE) $(OBJS_LIBTESTSUITE) test_lib_templates.o -o $@
285
286 libTest12.so: libTest12.c $(DEPENDDIR)/libTest12.dep
287 ifdef MAKE_SHARED_LIB
288         $(CC) -g -c $(CFLAGS) -I$(TO_CORE)/dyninst_RT/h $(CFLAGS_TESTLIBS) $(filter %.c, $^)  -o libTest12.o
289         $(MAKE_SHARED_LIB) $(TESTLIB_FLAGS) $(LIBTEST12_FLAGS) libTest12.o -o $@
290 else
291         $(CC) $(TESTLIB_FLAGS) -I$(TO_CORE)/dyninstAPI_RT/h $(LIBTEST12_FLAGS) $(filter %.c, $^) -o $@
292 endif
293
294 #######################################################################
295 ###  Special Prerequisites for specific Mutatees:
296 #######################################################################
297
298 # Test 1 mutatee depends on two extra files
299 # test1.mutatee_gcc: $(CALL35_1_OBJ) test1.mutateeCommon_gcc.o
300 # test1.mutatee_g++: $(CALL35_1_OBJ) test1.mutateeCommon_g++.o
301 # test1.mutatee_$(NATIVE_CC): $(CALL35_1_SRC) test1.mutateeCommon.c
302 # test1.mutatee_$(NATIVE_CXX): $(CALL35_1_SRC) test1.mutateeCommon.c
303
304 # ifdef M_ABI
305 # test1.mutatee_gcc_$(M_ABI): $(CALL35_1_OBJ_ABI) test1.mutateeCommon_gcc_m32.o
306 # test1.mutatee_g++_$(M_ABI): $(CALL35_1_OBJ_ABI) test1.mutateeCommon_g++_m32.o
307 # test1.mutatee_$(NATIVE_CC)_$(M_ABI): $(CALL35_1_SRC_ABI) test1.mutateeCommon.c
308 # test1.mutatee_$(NATIVE_CXX)_$(M_ABI): $(CALL35_1_SRC_ABI) test1.mutateeCommon.c
309 # endif
310
311 # Test 6 mutatee depends on a platform-specific asm file
312 # test6.mutatee_$(NATIVE_CC): $(TEST6_AS_OBJ_GNU) 
313 # test6.mutatee_$(NATIVE_CXX): $(TEST6_AS_OBJ_GNU) 
314 # test6.mutatee_gcc: $(TEST6_AS_OBJ_GNU) 
315
316 # libInstMe.so must be built before test9.mutatee
317 # test9.mutatee_gcc: libInstMe.so
318 # test9.mutatee_$(NATIVE_CC): libInstMe.so
319
320 # ifdef M_ABI
321 # test9.mutatee_gcc: libInstMe_$(M_ABI).so
322 # test9.mutatee_$(NATIVE_CC): libInstMe_(M_ABI).so
323 # endif
324
325 # test13.mutatee_$(NATIVE_CXX): mutatee_util_mt_$(NATIVE_CXX).o
326 # test13.mutatee_$(NATIVE_CC): mutatee_util_mt_$(NATIVE_CC).o
327 # test13.mutatee_$(M_GCC): mutatee_util_mt_$(M_GCC).o
328 # test13.mutatee_$(M_GXX): mutatee_util_mt_$(M_GXX).o
329 # test14.mutatee_$(NATIVE_CXX): mutatee_util_mt_$(NATIVE_CXX).o
330 # test14.mutatee_$(NATIVE_CC): mutatee_util_mt_$(NATIVE_CC).o
331 # test14.mutatee_$(M_GCC): mutatee_util_mt_$(M_GCC).o
332 # test14.mutatee_$(M_GXX): mutatee_util_mt_$(M_GXX).o
333 # test15.mutatee_$(NATIVE_CXX): mutatee_util_mt_$(NATIVE_CXX).o
334 # test15.mutatee_$(NATIVE_CC): mutatee_util_mt_$(NATIVE_CC).o
335 # test15.mutatee_$(M_GCC): mutatee_util_mt_$(M_GCC).o
336 # test15.mutatee_$(M_GXX): mutatee_util_mt_$(M_GXX).o
337
338 # test14.mutatee_$(NATIVE_CXX): mutatee_util_mt_$(NATIVE_CXX).o
339 # test14.mutatee_$(NATIVE_CC): mutatee_util_mt_$(NATIVE_CC).o
340 # test14.mutatee_$(M_GCC): mutatee_util_mt_$(M_GCC).o
341 # test14.mutatee_$(M_GXX): mutatee_util_mt_$(M_GXX).o
342
343 # test15.mutatee_$(NATIVE_CXX): mutatee_util_mt_$(NATIVE_CXX).o
344 # test15.mutatee_$(NATIVE_CC): mutatee_util_mt_$(NATIVE_CC).o
345 # test15.mutatee_$(M_GCC): mutatee_util_mt_$(M_GCC).o
346 # test15.mutatee_$(M_GXX): mutatee_util_mt_$(M_GXX).o
347
348 # ifdef M_ABI
349 # test13.mutatee_$(NATIVE_CXX)_$(M_ABI): mutatee_util_mt_$(NATIVE_CXX)_$(M_ABI).o
350 # test13.mutatee_$(NATIVE_CC)_$(M_ABI): mutatee_util_mt_$(NATIVE_CC)_$(M_ABI).o
351 # test13.mutatee_$(M_GCC)_$(M_ABI): mutatee_util_mt_$(M_GCC)_$(M_ABI).o
352 # test13.mutatee_$(M_GXX)_$(M_ABI): mutatee_util_mt_$(M_GXX)_$(M_ABI).o
353 # test14.mutatee_$(NATIVE_CXX)_$(M_ABI): mutatee_util_mt_$(NATIVE_CXX)_$(M_ABI).o
354 # test14.mutatee_$(NATIVE_CC)_$(M_ABI): mutatee_util_mt_$(NATIVE_CC)_$(M_ABI).o
355 # test14.mutatee_$(M_GCC)_$(M_ABI): mutatee_util_mt_$(M_GCC)_$(M_ABI).o
356 # test14.mutatee_$(M_GXX)_$(M_ABI): mutatee_util_mt_$(M_GXX)_$(M_ABI).o
357 # test15.mutatee_$(NATIVE_CXX)_$(M_ABI): mutatee_util_mt_$(NATIVE_CXX)_$(M_ABI).o
358 # test15.mutatee_$(NATIVE_CC)_$(M_ABI): mutatee_util_mt_$(NATIVE_CC)_$(M_ABI).o
359 # test15.mutatee_$(M_GCC)_$(M_ABI): mutatee_util_mt_$(M_GCC)_$(M_ABI).o
360 # test15.mutatee_$(M_GXX)_$(M_ABI): mutatee_util_mt_$(M_GXX)_$(M_ABI).o
361
362 # test14.mutatee_$(NATIVE_CXX)_$(M_ABI): mutatee_util_mt_$(NATIVE_CXX)_$(M_ABI).o
363 # test14.mutatee_$(NATIVE_CC)_$(M_ABI): mutatee_util_mt_$(NATIVE_CC)_$(M_ABI).o
364 # test14.mutatee_$(M_GCC)_$(M_ABI): mutatee_util_mt_$(M_GCC)_$(M_ABI).o
365 # test14.mutatee_$(M_GXX)_$(M_ABI): mutatee_util_mt_$(M_GXX)_$(M_ABI).o
366
367 # test15.mutatee_$(NATIVE_CXX)_$(M_ABI): mutatee_util_mt_$(NATIVE_CXX)_$(M_ABI).o
368 # test15.mutatee_$(NATIVE_CC)_$(M_ABI): mutatee_util_mt_$(NATIVE_CC)_$(M_ABI).o
369 # test15.mutatee_$(M_GCC)_$(M_ABI): mutatee_util_mt_$(M_GCC)_$(M_ABI).o
370 # test15.mutatee_$(M_GXX)_$(M_ABI): mutatee_util_mt_$(M_GXX)_$(M_ABI).o
371
372 # endif
373
374 # MUTATEE_SPECIFIC_LIBS is analyzed by gmake when constructing the link line
375 # If you want to specify that a specific library should be used to link a specific
376 # mutatee, add an entry to this variable in the format <testno>.-libwhatever
377
378 # The <testno>. will be stripped off, leaving -libwhatever on the link line
379
380 # MUTATEE_SPECIFIC_LIBS_GNU     += $(MUTATEE_TEST9_EXTRA_LIB)
381 # MUTATEE_SPECIFIC_LIBS_GNU     += 12.-lpthread
382 # MUTATEE_SPECIFIC_LIBS_NATIVE  += $(MUTATEE_TEST9_EXTRA_LIB)
383 # MUTATEE_SPECIFIC_LIBS_NATIVE  += 12.-lpthread
384 # MUTATEE_SPECIFIC_LIBS_GNU     += 13.-lpthread
385 # MUTATEE_SPECIFIC_LIBS_GNU     += 14.-lpthread
386 # MUTATEE_SPECIFIC_LIBS_GNU     += 15.-lpthread
387 # MUTATEE_SPECIFIC_LIBS_NATIVE  += 13.-lpthread
388 # MUTATEE_SPECIFIC_LIBS_NATIVE  += 14.-lpthread
389 # MUTATEE_SPECIFIC_LIBS_NATIVE  += 15.-lpthread
390
391 # ifdef MUTATEE_USE_LIBDL_SELECTIVELY
392 # MUTATEE_SPECIFIC_LIBS_GNU     += 1.-ldl
393 # MUTATEE_SPECIFIC_LIBS_NATIVE  += 1.-ldl
394 # MUTATEE_SPECIFIC_LIBS_GNU     += 2.-ldl
395 # MUTATEE_SPECIFIC_LIBS_NATIVE  += 2.-ldl
396 # MUTATEE_SPECIFIC_LIBS_GNU     += 12.-ldl
397 # MUTATEE_SPECIFIC_LIBS_NATIVE  += 12.-ldl
398
399 # ifdef M_ABI
400 # MUTATEE_SPECIFIC_LIBS_GNU_ABI         += 1.-ldl
401 # MUTATEE_SPECIFIC_LIBS_GNU_ABI         += 2.-ldl
402 # MUTATEE_SPECIFIC_LIBS_GNU_ABI         += 12.-ldl
403 # endif
404 # endif
405
406 # ifdef M_ABI
407 # MUTATEE_SPECIFIC_LIBS_GNU_ABI         += $(MUTATEE_TEST9_EXTRA_LIB_ABI)
408 # MUTATEE_SPECIFIC_LIBS_GNU_ABI += 12.-lpthread
409 # MUTATEE_SPECIFIC_LIBS_GNU_ABI         += 13.-lpthread
410 # MUTATEE_SPECIFIC_LIBS_GNU_ABI         += 14.-lpthread
411 # MUTATEE_SPECIFIC_LIBS_GNU_ABI         += 15.-lpthread
412 # endif
413
414 #######################################################################
415 ###  Generic mutatee build rules (GNU and NATIVE):
416 #######################################################################
417
418 # GNU Mutatees
419
420 #$(MUTATEES_GCC): test%.mutatee_gcc : test%.mutatee_gcc.o $(DEPENDDIR)/test%.mutatee_gcc.dep mutatee_util_gcc.o
421 #       $(M_GCC) -o $@ $(filter %.o,$^) $(MUTATEE_LDFLAGS_GNU) $(MUTATEE_LIBS) \
422 #            $(subst $*.,,$(filter $*.%, $(MUTATEE_SPECIFIC_LIBS_GNU)))
423
424 #$(MUTATEES_GXX): test%.mutatee_g++ : test%.mutatee_g++.o $(DEPENDDIR)/test%.mutatee_g++.dep mutatee_util_g++.o
425 #       $(M_GXX) -o $@ $(filter %.o,$^) $(MUTATEE_LDFLAGS_GNU) $(MUTATEE_LIBS) \
426 #            $(subst $*.,,$(filter $*.%, $(MUTATEE_SPECIFIC_LIBS_GNU)))
427
428 # GNU Secondary ABI Mutatees
429 # ifdef M_ABI
430 # $(MUTATEES_GCC_ABI): test%.mutatee_gcc_$(M_ABI) : test%.mutatee_gcc_$(M_ABI).o $(DEPENDDIR)/test%.mutatee_gcc.dep mutatee_util_gcc_$(M_ABI).o
431 #       $(M_GCC) $(M_ABI_FLAG) -o $@ $(filter %.o,$^) $(MUTATEE_LDFLAGS_GNU) $(MUTATEE_LIBS) \
432 #             $(subst $*.,,$(filter $*.%, $(MUTATEE_SPECIFIC_LIBS_GNU_ABI)))
433
434 # $(MUTATEES_GXX_ABI): test%.mutatee_g++_$(M_ABI) : test%.mutatee_g++_$(M_ABI).o $(DEPENDDIR)/test%.mutatee_g++.dep mutatee_util_g++_$(M_ABI).o
435 #       $(M_GXX) $(M_ABI_FLAG) -o $@ $(filter %.o,$^) $(MUTATEE_LDFLAGS_GNU) $(MUTATEE_LIBS) \
436 #             $(subst $*.,,$(filter $*.%, $(MUTATEE_SPECIFIC_LIBS_GNU_ABI)))
437 # endif
438
439
440 # GNU Fortran (g77) mutatees
441
442 # There is no real advantage to generality here since there is only one fortran mutatee
443 # (ie for test1), thus all constituent files are built explicitly
444
445 # ifdef M_G77
446 # test1.mutatee_g77.o: ../src/test1.mutateeFort.F
447 #       $(M_G77) -g  $(MUTATEE_G77_FFLAGS) -c -o $@ $^ 
448 # test1.mutateeFortC_g77.o: $(TEST1_FORTRAN_CSOURCE)
449 #       $(M_GCC) $(MUTATEE_G77_CFLAGS) $(filter %.c,$^) -o $@
450
451 # $(MUTATEES_G77): test%.mutatee_g77 : test%.mutatee_g77.o test1.mutateeFortC_g77.o test1.mutateeCommon_gcc.o mutatee_util_gcc.o $(DEPENDDIR)/test%.mutatee_g77.dep
452 #       $(M_G77) -o $@ $(filter %.o,$^) $(MUTATEE_G77_LDFLAGS) $(MUTATEE_LIBS) 
453 # endif
454
455 # Native Mutatees
456
457 #ifdef NATIVE_CC
458 #$(MUTATEES_NATIVE_CC): test%.mutatee_$(NATIVE_CC) : test%.mutatee.c mutatee_util_$(NATIVE_CC).o
459 #       $(NATIVE_CC) $(MUTATEE_CFLAGS_NATIVE) $(MUTATEE_LDFLAGS_NATIVE) -o $@ $(MUTATEE_LIBS) $(filter %.c  %.s %.S %.o, $^) \
460 #            $(subst $*.,,$(filter $*.%, $(MUTATEE_SPECIFIC_LIBS_NATIVE))) 
461
462 #endif
463
464 #ifdef NATIVE_CXX
465 #$(MUTATEES_NATIVE_CXX): test%.mutatee_$(NATIVE_CXX) : test%.mutatee.c mutatee_util_$(NATIVE_CXX).o
466 #       $(NATIVE_CXX) $(MUTATEE_CXXFLAGS_NATIVE) -o $@ $(filter %.c %.s %.S %.o,$^) $(MUTATEE_LDFLAGS_NATIVE) $(MUTATEE_LIBS) \
467 #            $(subst $*.,,$(filter $*.%, $(MUTATEE_SPECIFIC_LIBS_NATIVE)))
468
469 #$(MUTATEES_NATIVE_CXX_ONLY): test%.mutatee_$(NATIVE_CXX) : test%.mutatee.C mutatee_util_$(NATIVE_CXX).o
470 #       $(NATIVE_CXX) $(MUTATEE_CXXFLAGS_NATIVE) -o $@ $(filter %.C %.s %.S %.o,$^) $(MUTATEE_LDFLAGS_NATIVE) $(MUTATEE_LIBS) \
471 #            $(subst $*.,,$(filter $*.%, $(MUTATEE_SPECIFIC_LIBS_NATIVE)))
472 #endif
473
474
475 # Native Fortran mutatees
476
477 # There is no real advantage to generality here since there is only one fortran mutatee
478 # (ie for test1), thus all constituent files are built explicitly
479
480 ifdef NATIVE_FC 
481 test1.mutatee_$(NATIVE_FC).o: ../src/test1.mutateeFort.F
482         $(NATIVE_FC) -g  $(MUTATEE_NATIVE_FFLAGS) -c -o $@ $^ 
483 test1.mutateeFortC_$(NATIVE_FC).o: ../src/test1.mutateeFortC.c
484         $(NATIVE_FORTRAN_CC) $(MUTATEE_NATIVE_FC_CFLAGS) -c $(filter %.c,$^) -o $@
485
486 $(MUTATEES_NATIVE_FC): test%.mutatee_$(NATIVE_FC) : test%.mutatee_$(NATIVE_FC).o test1.mutateeFortC_$(NATIVE_FC).o test1.mutateeCommon_$(NATIVE_FORTRAN_CC).o mutatee_util_$(NATIVE_FORTRAN_CC).o $(DEPENDDIR)/test%.mutatee_$(NATIVE_FC).dep
487         $(NATIVE_FC) -o $@ $(filter %.o,$^) $(MUTATEE_NATIVE_FC_LDFLAGS) $(MUTATEE_LIBS) 
488 endif
489
490 # Native OpenMP mutatees
491 # There is no real advantage to generality here since there is only one OpenMP mutatee
492 # (ie for test16), thus all constituent files are built explicitly
493 ifdef NATIVE_CXX_OMP 
494 test16.mutatee_$(NATIVE_CXX_OMP).o: ../src/test16.mutatee.c
495         $(NATIVE_CXX_OMP) -g  $(MUTATEE_NATIVE_CXX_CFLAGS) -o $@ $^ 
496
497 $(MUTATEES_NATIVE_CXX_OMP): test%.mutatee_$(NATIVE_CXX_OMP) : test%.mutatee_$(NATIVE_CXX_OMP).o $(DEPENDDIR)/test%.mutatee_$(NATIVE_CXX_OMP).dep
498         $(NATIVE_CXX_OMP) $(MUTATEE_NATIVE_CXX_OMP_LDFLAGS) -o $@ $(filter %.o,$^) $(MUTATEE_LIBS) 
499
500 #$(MUTATEES_NATIVE_CXX_OMP): ../src/test16.mutatee.c
501 #       $(NATIVE_CXX_OMP) -g  $(MUTATEE_NATIVE_CXX_CFLAGS) -o $@ $^ 
502
503 endif
504
505
506 # Install directory
507 $(TEST_DEST): 
508         mkdir $(TEST_DEST)
509
510 #######################################################################
511 ###  Generic Mutator build rule:
512 ###
513 ###  resorts to pattern matching test% (matches test1, test2, ... etc)
514 ###  to generate correct, minimal set of prerequisites for each test.
515 ###  It would be nicer to just match something simpler that wasn't 
516 ###  name-dependant, but gnu make is not making this easy.
517 ###
518 #######################################################################
519
520 $(OBJS_ALL_MUTATORS): %.o : %.C $(DEPENDDIR)/%.dep
521         echo "***OBJS_ALL_MUTATOR***"
522         $(CXX) -c -o $@ -fPIC $(CXXFLAGS) -I../src/ ../src/$*.C
523
524 # Generic build rule for generated files.  I'm not real happy with this, but
525 # I certainly don't want to put them in the main source directory, and we need
526 # to find them somehow.
527 %.gen.o: %.gen.C
528         echo "***%.gen.o***"
529         $(CXX) -c -o $@ -fPIC $(CXXFLAGS) -I../src/ $*.gen.C
530
531 MUTATEE_DEFS := -Dgnu_cc=_gcc -Dgnu_cxx=_g++
532
533 ifdef M_ABI
534 MUTATEE_DEFS += -Dgnu_abi_cc=_gcc_$(M_ABI) -Dgnu_abi_cxx=_g++_$(M_ABI) -Dm_abi
535 endif
536
537 ifdef M_G77
538 MUTATEE_DEFS += -Dgnu_fc=_g77
539 endif
540
541 ifdef NATIVE_CC
542 MUTATEE_DEFS += -Dnative_cc=_$(NATIVE_CC)
543 endif
544
545 ifdef NATIVE_CXX
546 MUTATEE_DEFS += -Dnative_cxx=_$(NATIVE_CXX)
547 endif
548
549 ifdef NATIVE_FC
550 MUTATEE_DEFS += -Dnative_fc=_$(NATIVE_FC)
551 endif
552
553 runTests.o: ../src/runTests.C $(DEPENDDIR)/runTests.dep
554         $(CXX) -c -o $@ $(CXXFLAGS) $(MUTATEE_DEFS) ../src/runTests.C
555 runTests_static.o: ../src/runTests.C $(DEPENDDIR)/runTests.dep
556         $(CXX) -c -o $@ $(CXXFLAGS) $(MUTATEE_DEFS) -DSTATIC_TEST_DRIVER ../src/runTests.C
557
558 runTests-utils.o: ../src/runTests-utils.C $(DEPENDDIR)/runTests-utils.dep
559         $(CXX) -c -o $@ $(CXXFLAGS) $(MUTATEE_DEFS) ../src/runTests-utils.C
560
561 runTests: runTests.o runTests-utils.o test_driver_templates.o 
562         $(CXX) $(CXXFLAGS) -o $@ runTests.o runTests-utils.o test_driver_templates.o 
563 runTests_static: runTests_static.o runTests-utils.o test_driver_templates.o 
564         $(CXX) $(CXXFLAGS) -o runTests runTests_static.o runTests-utils.o test_driver_templates.o 
565
566 test_driver.o: ../src/test_driver.C $(DEPENDDIR)/test_driver.dep
567         $(CXX) -c -o $@ $(CXXFLAGS) $(MUTATEE_DEFS) ../src/test_driver.C
568
569 test_driver_static.o: ../src/test_driver.C $(DEPENDDIR)/test_driver_static.dep
570         $(CXX) -c -o $@ -DSTATIC_TEST_DRIVER $(CXXFLAGS) $(MUTATEE_DEFS) ../src/test_driver.C
571
572 test_driver: test_driver.o test_driver_templates.o test_info_new.gen.o $(LIBTESTSUITE_DEST) $(DEPENDDIR)/test_driver.dep $(LIBTESTSUITE)
573         $(CXX) -o $@ test_driver.o test_driver_templates.o test_info_new.gen.o $(MUTATOR_LDFLAGS) $(LIBS) 
574
575 #$(MUTATORS_SO): test%.so : test%.o $(OBJS_FORALL_MUTATORS) $(DEPENDDIR)/test%.dep $(LIBTESTSUITE)
576 #       echo "*** Building mutator $<"
577 #       $(CXX) -o $@ -shared $(filter %.o,$^) $(MUTATOR_SO_LDFLAGS) $(LIBDIR) $(LIBS) $(LDFLAGS) 
578 #ifndef NO_OPT_FLAG
579 #ifdef STRIP_SO
580 #       $(STRIP_SO) $@
581 #endif
582 #endif
583
584 #######################################################################
585 ###  Depends
586 #######################################################################
587
588 DEPS_MUTATORS           += $(addprefix $(DEPENDDIR)/,$(addsuffix .dep,$(MUTATORS)))
589 DEPS_MUTATORS           += $(addprefix $(DEPENDDIR)/,$(addsuffix .dep,$(FORALL_MUTATORS)))
590 DEPS_MUTATORS           += $(DEPENDDIR)/test_driver.dep
591 DEPS_MUTATORS           += $(DEPENDDIR)/runTests.dep $(DEPENDDIR)/runTests-utils.dep
592
593 DEPS_MUTATEES_GCC       += $(addprefix $(DEPENDDIR)/,$(addsuffix _gcc.dep, $(MUTATEES_C)))
594 DEPS_MUTATEES_GXX       += $(addprefix $(DEPENDDIR)/,$(addsuffix _g++.dep, $(MUTATEES_CXX)))
595 DEPS_MUTATEES_GXX       += $(addprefix $(DEPENDDIR)/,$(addsuffix _g++.dep, $(MUTATEES_CXX_ONLY)))
596 DEPS_TESTLIBS           += $(addprefix $(DEPENDDIR)/,$(addsuffix .dep,$(TESTLIB_STEMS)))
597 DEPS_TESTLIBS           += $(DEPENDDIR)/libTest12.dep
598 DEPS_LIBTESTSUITE        = $(addprefix $(DEPENDDIR)/,$(SRCS_LIBTESTSUITE:%.C=%.dep))
599
600 ifdef M_G77
601 DEPS_MUTATEES_G77       += $(addprefix $(DEPENDDIR)/,$(addsuffix _g77.dep, $(MUTATEES_FORTRAN)))
602 endif
603
604 ifdef NATIVE_FC
605 DEPS_MUTATEES_NATIVE_FC += $(addprefix $(DEPENDDIR)/,$(addsuffix _$(NATIVE_FC).dep, $(MUTATEES_FORTRAN)))
606 endif
607
608 ifdef NATIVE_CXX_OMP
609 DEPS_MUTATEES_NATIVE_CXX_OMP += $(addprefix $(DEPENDDIR)/,$(addsuffix _$(NATIVE_CXX_OMP).dep, $(MUTATEES_OPENMP)))
610 endif
611
612 ifdef NATIVE_CC
613 DEPS_MUTATEES_NATIVE_CC += $(addprefix $(DEPENDDIR)/,$(addsuffix _$(NATIVE_CC).dep, $(MUTATEES_C)))
614 endif
615
616 ifdef NATIVE_CXX
617 DEPS_MUTATEES_NATIVE_CXX += $(addprefix $(DEPENDDIR)/,$(addsuffix _$(NATIVE_CXX).dep, $(MUTATEES_CXX)))
618 DEPS_MUTATEES_NATIVE_CXX += $(addprefix $(DEPENDDIR)/,$(addsuffix _$(NATIVE_CXX).dep, $(MUTATEES_CXX_ONLY)))
619 endif
620
621
622 depend: $(DEPS_MUTATORS)
623
624 depend_dir:
625         @echo "mut deps: $(DEPS_MUTATORS)"
626         @if [ -d $(DEPENDDIR) ]; then \
627           echo "Directory \"$(DEPENDDIR)\" already exists..."; \
628          else \
629           mkdir -p $(DEPENDIR); \
630           echo "Made \"$(DEPENDDIR)\" directory..."; \
631          fi
632
633 $(DEPENDDIR)/test_driver_static.dep: test_driver.C
634         @mkdir -p $(DEPENDDIR)
635         $(DEPCC) $(CXXFLAGS) $< $(MUTATOR_CXXFLAGS) -DSTATIC_TEST_DRIVER $(DEPENDFLAGS) $*.o > $@
636
637 $(DEPS_MUTATORS): $(DEPENDDIR)/%.dep : %.C 
638         @mkdir -p $(DEPENDDIR)
639         $(DEPCC) $(CXXFLAGS) $< $(MUTATOR_CXXFLAGS) $(DEPENDFLAGS) $*.o > $@
640
641 $(DEPS_MUTATEES_GCC): $(DEPENDDIR)/test%.mutatee_gcc.dep : test%.mutatee.c $(SRCS_FORALL_MUTATEES)
642         @mkdir -p $(DEPENDDIR)
643         $(M_GCC) $(CFLAGS) $< $(MUTATEE_CFLAGS) $(DEPENDFLAGS) test$*.mutatee_gcc.o > $@
644
645 $(DEPS_MUTATEES_GXX): $(DEPENDDIR)/test%.mutatee_g++.dep : $(wildcard test%.mutatee.*) $(SRCS_FORALL_MUTATEES)
646         @mkdir -p $(DEPENDDIR)
647         $(M_GXX) $(CXXFLAGS) $< $(MUTATEE_CXXFLAGS) $(DEPENDFLAGS) test$*.mutatee_gxx.o > $@
648
649 $(DEPS_MUTATEES_G77): $(DEPENDDIR)/test%.mutatee_g77.dep : test%.mutateeFort.F $(SRCS_FORALL_MUTATEES)
650         @mkdir -p $(DEPENDDIR)
651         $(M_G77) $(CFLAGS) $< $(MUTATEE_CFLAGS) $(DEPENDFLAGS) test$*.mutateeFort_g77.o > $@
652
653
654 # Use gcc to generate deps for native compilers
655
656 ifdef NATIVE_CC
657 $(DEPS_MUTATEES_NATIVE_CC): $(DEPENDDIR)/test%.mutatee_$(NATIVE_CC).dep : test%.mutatee.c $(SRCS_FORALL_MUTATEES)
658         @mkdir -p $(DEPENDDIR)
659         $(M_GCC) $(CFLAGS) $< $(MUTATEE_CFLAGS) $(DEPENDFLAGS) test$*.mutatee_$(NATIVE_CC).o > $@
660 endif
661
662 ifdef NATIVE_CXX
663 $(DEPS_MUTATEES_NATIVE_CXX): $(DEPENDDIR)/test%.mutatee_$(NATIVE_CXX).dep : $(wildcard test%.mutatee.*) $(SRCS_FORALL_MUTATEES)
664         @mkdir -p $(DEPENDDIR)
665         $(M_GXX) $(CXXFLAGS) $< $(MUTATEE_CXXFLAGS) $(DEPENDFLAGS) test$*.mutatee_$(NATIVE_CXX).o > $@
666 endif
667
668 ifdef NATIVE_FC
669 $(DEPS_MUTATEES_NATIVE_FC): $(DEPENDDIR)/test%.mutatee_$(NATIVE_FC).dep : test%.mutateeFort.F $(SRCS_FORALL_MUTATEES)
670         @mkdir -p $(DEPENDDIR)
671         $(M_G77) $(CFLAGS) $< $(MUTATEE_CFLAGS) $(DEPENDFLAGS) test$*.mutateeFort_$(NATIVE_FC).o > $@
672 endif
673
674 ifdef NATIVE_CXX_OMP
675 $(DEPS_MUTATEES_NATIVE_CXX_OMP): $(DEPENDDIR)/test%.mutatee_$(NATIVE_CXX_OMP).dep : test%.mutatee.c $(SRCS_FORALL_MUTATEES)
676         @mkdir -p $(DEPENDDIR)
677         $(M_GXX) $(CFLAGS) $< $(MUTATEE_CFLAGS) $(DEPENDFLAGS) test$*.mutatee_$(NATIVE_CXX_OMP).o > $@
678 endif
679
680
681 $(DEPS_TESTLIBS): $(DEPENDDIR)/lib%.dep : lib%.c 
682         @mkdir -p $(DEPENDDIR)
683         $(DEPCC) $(CXXFLAGS) -I$(TO_CORE)/dyninstAPI_RT/h $< $(MUTATOR_CXXFLAGS) $(DEPENDFLAGS) lib$*.so > $@
684
685 $(DEPS_LIBTESTSUITE): $(DEPENDDIR)/%.dep : %.C
686         @mkdir -p $(DEPENDDIR)
687         $(DEPCC) $(CXXFLAGS) -I$(TO_CORE)/dyninstAPI_RT/h $< $(MUTATOR_CXXFLAGS) $(DEPENDFLAGS) $*.o > $@
688
689
690 # do not include dep files for "clean" targets
691 ifneq ($(MAKECMDGOALS),clean)
692 ifneq ($(MAKECMDGOALS),distclean)
693 ifneq ($(MAKECMDGOALS),echo)
694
695 -include $(DEPS_MUTATORS)
696 # -include $(DEPS_MUTATEES_GCC)
697 # -include $(DEPS_MUTATEES_GXX)
698 # -include $(DEPS_TESTLIBS)
699
700 ifdef M_G77
701 # -include $(DEPS_MUTATEES_G77)
702 endif
703
704 ifdef NATIVE_CC
705 # -include $(DEPS_MUTATEES_NATIVE_CC)
706 endif
707
708 ifdef NATIVE_CXX
709 -include $(DEPS_MUTATEES_NATIVE_CXX)
710 endif
711
712 ifdef NATIVE_FC
713 -include $(DEPS_MUTATEES_NATIVE_FC)
714 endif
715
716 ifdef NATIVE_CXX_OMP
717 -include $(DEPS_MUTATEES_NATIVE_CXX_OMP)
718 endif
719
720 endif
721 endif
722 endif
723
724
725 ######################################################################
726 # Generate and include automatically generated sub-makefiles
727 ######################################################################
728
729 # These rules should build the specification-generated files if necessary
730 TO_SPEC = ../src/specification
731 TO_SRC ?= ../src
732
733 PROLOG_STRING := $(shell which gprolog)
734 PROLOG_FOUND := $(findstring /gprolog,$(PROLOG_STRING))
735
736 ifeq ($(PROLOG_FOUND),/gprolog)
737 # We found prolog, so we'll deal with it
738 PROLOG_FILES = spec.pl test.pl util.pl
739
740 $(PROLOG_FILES): %: $(TO_SPEC)/%
741         cp -f $(TO_SPEC)/$* .
742
743 tuples: $(PROLOG_FILES)
744         gprolog --entry-goal "['spec.pl']" \
745                 --entry-goal "test_init('$(PLATFORM)')" \
746                 --entry-goal "write_tuples('tuples', '$(PLATFORM)')" \
747                 --entry-goal "halt"
748 else
749 PROLOG_FILES =
750 endif
751
752 PYTHON_FILES = $(TO_SPEC)/makemake.py $(TO_SPEC)/tuples.py
753
754 PYTHONPATH += $(TO_SPEC)
755
756 .PHONY: gen
757 gen: make.mutators.gen make.solo_mutatee.gen test_info_new.gen.C
758
759 make.mutators.gen: $(PYTHON_FILES) tuples
760         env PYTHONPATH=$(PYTHONPATH) python -c "import makemake; makemake.write_make_mutators_gen('make.mutators.gen', 'tuples')"
761
762 make.solo_mutatee.gen: $(PYTHON_FILES) tuples
763         env PYTHONPATH=$(PYTHONPATH) python -c "import makemake; makemake.write_make_solo_mutatee_gen('make.solo_mutatee.gen', 'tuples')"
764
765 include make.solo_mutatee.gen
766
767 # FIXME The following rule is temporary
768 all: solo_mutatees
769
770 # Generate the lists of tests to run in src/test_info_new.gen.C
771 test_info_new.gen.C: $(PYTHON_FILES) tuples
772         env PYTHONPATH=$(PYTHONPATH) python -c "import makemake; makemake.write_test_info_new_gen('test_info_new.gen.C', 'tuples')"
773
774 #$(TO_SRC)/solo_mutatee_init.gen.c: $(PYTHON_FILES) tuples
775 #       env PYTHONPATH=$(PYTHONPATH) python -c "import makemake; makemake.write_solo_mutatee_init_gen('$(TO_SRC)/solo_mutatee_init.gen.c', 'tuples')"