2 # make.module.tmpl for 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
11 DEPENDFLAGS ?= -MM -MT
13 VPATH = ../src $(DEPENDDIR) ../src/dyninst
15 IFLAGS = -I../../dyninstAPI/h -I../../symtabAPI/h -I../../dynutil/h -I../../instructionAPI/h -I../../proccontrol/h -I../../external
16 LFLAGS = -L../../common/$(PLATFORM) -L../../symtabAPI/$(PLATFORM) -L../../instructionAPI/$(PLATFORM) -L../../proccontrol/$(PLATFORM) -L../../dyninstAPI/$(PLATFORM)
18 #######################################################################
19 ### We don't want all of the CFLAGS stuff that came from make.config.
20 ### Strip away most of it.
21 #######################################################################
23 CFLAGS = $(UNIFIED_TEST_DEF:%=%_test) $(ARCH_FLAGS) $(AC_DEF) $(FIRST_INCLUDE) $(IFLAGS) -I../src -g $(BOOST_INCDIR)
25 CXXFLAGS += $(PLATFORM_CXXFLAGS)
26 CFLAGS_NATIVE = $(CFLAGS)
27 CXXFLAGS_NATIVE = $(CXXFLAGS)
28 MUTATEE_CFLAGS_NATIVE ?= $(CFLAGS)
29 MUTATEE_CXXFLAGS_NATIVE ?= $(CXXFLAGS)
32 #######################################################################
33 ### Generate compiler id strings
35 ### COMPILERT_NATIVE_CC, COMPILERT_NATIVE_CXX must be defined prior to
36 ### inclusion of this file. gcc/g++ are handled here as platform-indep
38 #######################################################################
41 BLANK:=$(EMPTY) $(EMPTY)
48 COMPILERT_GCC = $(shell $(M_GCC) -v 2>&1 | grep version | head -1)
49 COMPILER1_GCC = $(subst $(BLANK),_,$(COMPILERT_GCC))
50 COMPILER2_GCC = $(subst $(LPAREN),_,$(COMPILER1_GCC))
51 COMPILER3_GCC = $(subst $(RSQBRACK),_,$(COMPILER2_GCC))
52 COMPILER4_GCC = $(subst $(LSQBRACK),_,$(COMPILER3_GCC))
53 COMPILER_GCC = $(subst $(RPAREN),_,$(COMPILER4_GCC))
54 MUTATEE_CFLAGS_GNU += -DCOMPILER='"$(COMPILER_GCC)"'
55 MUTATEE_LDFLAGS_GNU += $(LDFLAGS) -L.
57 COMPILERT_GXX = $(shell $(M_GCC) -v 2>&1 | grep version | head -1)
58 COMPILER1_GXX = $(subst $(BLANK),_,$(COMPILERT_GXX))
59 COMPILER2_GXX = $(subst $(LPAREN),_,$(COMPILER1_GXX))
60 COMPILER3_GXX = $(subst $(RSQBRACK),_,$(COMPILER2_GXX))
61 COMPILER4_GXX = $(subst $(LSQBRACK),_,$(COMPILER3_GXX))
62 COMPILER_GXX = $(subst $(RPAREN),_,$(COMPILER4_GXX))
63 MUTATEE_CXXFLAGS_GNU += -DCOMPILER='"$(COMPILER_GXX)"'
65 COMPILER1_NATIVE_CC = $(subst $(BLANK),_,$(COMPILERT_NATIVE_CC))
66 COMPILER2_NATIVE_CC = $(subst $(LPAREN),_,$(COMPILER1_NATIVE_CC))
67 COMPILER_NATIVE_CC = $(subst $(RPAREN),_,$(COMPILER2_NATIVE_CC))
68 MUTATEE_CFLAGS_NATIVE += -DCOMPILER='"$(COMPILER_NATIVE_CC)"'
69 MUTATEE_LDFLAGS_NATIVE += $(LDFLAGS) -L.
71 COMPILER1_NATIVE_CXX = $(subst $(BLANK),_,$(COMPILERT_NATIVE_CXX))
72 COMPILER2_NATIVE_CXX = $(subst $(LPAREN),_,$(COMPILER1_NATIVE_CXX))
73 COMPILER_NATIVE_CXX = $(subst $(RPAREN),_,$(COMPILER2_NATIVE_CXX))
74 MUTATEE_CXXFLAGS_NATIVE += -DCOMPILER='"$(COMPILER_NATIVE_CXX)"'
78 #######################################################################
79 ### Basic definitions (filename prefixes)
80 #######################################################################
84 FORALL_MUTATEES = mutatee_util
86 SRCS_LIBTESTSUITE = test_lib.C \
87 test_lib_soExecution.C \
96 SRCS_LIBTESTLAUNCH = CmdLine.C \
101 # test_info_new.gen.C is also part of LIBTESTLAUNCH, but has special build rules
103 OBJS_LIBTESTLAUNCH = $(SRCS_LIBTESTLAUNCH:%.C=%.o)
105 SRCS_TEMPLATES = test_driver_templates.C
107 OBJS_LIBTESTSUITE = $(SRCS_LIBTESTSUITE:%.C=%.o)
108 OBJS_TEMPLATES = $(SRCS_TEMPLATES:%.C=%.o)
110 ifdef USE_LIBTESTSUITE_EXT_A
111 LIBTESTSUITE = libtestSuite.a
112 LIBTESTLAUNCH = libtestlaunch.a
114 LIBTESTSUITE = libtestSuite.so
115 LIBTESTLAUNCH = libtestlaunch.so
118 TESTDRIVER_LDFLAGS += $(DEMANGLER_EXEC_LINK)
120 ALL_COMP_DIRS = $(TO_CORE)/common/$(PLATFORM)
121 ALL_COMP_DIRS += $(TO_CORE)/testsuite/$(PLATFORM)
122 ALL_COMP_DIRS += $(TO_CORE)/parseAPI/$(PLATFORM)
123 ALL_COMP_DIRS += $(TO_CORE)/stackwalk/$(PLATFORM)
124 ALL_COMP_DIRS += $(TO_CORE)/proccontrol/$(PLATFORM)
125 ALL_COMP_DIRS += $(TO_CORE)/dyninstAPI/$(PLATFORM)
126 ALL_COMP_DIRS += $(TO_CORE)/symtabAPI/$(PLATFORM)
127 ALL_COMP_DIRS += $(TO_CORE)/instructionAPI/$(PLATFORM)
129 #######################################################
130 # Dyninst infrastructure components
131 #######################################################
132 SRCS_DYNINSTCOMP_LIB = dyninst/dyninst_comp.C \
133 dyninst/test_lib_mutateeStart.C \
134 dyninst/Callbacks.C \
135 dyninst/Process_data.C \
136 dyninst/ParseThat.C \
137 dyninst/test_lib_test7.C \
138 dyninst/test_lib_test9.C
139 OBJS_DYNINSTCOMP_LIB = $(notdir $(SRCS_DYNINSTCOMP_LIB:%.C=%.o))
140 SRCS_DYNINSTTESTLIB = libtestA.c \
144 # dyninst/libInstMe.c \
145 # dyninst/libLoadMe.c \
147 dyninst_MUTATOR_FLAGS = -L. -ltestdyninst -ldyninstAPI
149 DYNINST_TESTLIBS = $(notdir $(SRCS_DYNINSTTESTLIB:%.c=%.so))
150 DYNINST_STATIC_TESTLIBS = $(notdir $(SRCS_DYNINSTTESTLIB:%.c=%.a))
152 DYNINST_TESTLIBS_ABI = $(addsuffix _$(M_ABI).so, $(notdir $(SRCS_DYNINSTTESTLIB:%.c=%)))
153 DYNINST_STATIC_TESTLIBS_ABI = $(addsuffix _$(M_ABI).a, $(notdir $(SRCS_DYNINSTTESTLIB:%.c=%)))
155 DYNINST_TESTLIBS_ABI =
156 DYNINST_STATIC_TESTLIBS_ABI =
159 ifdef USE_LIBTESTSUITE_EXT_A
160 LIBDYNINSTCOMP = libtestdyninst.a
162 LIBDYNINSTCOMP = libtestdyninst.so
165 dyninst_MUTATOR_LIB = $(LIBDYNINSTCOMP)
166 dyninst_COMPONENT_LIB = $(LIBDYNINSTCOMP)
168 #######################################################
169 # Symtab infrastructure components
170 #######################################################
171 SRCS_SYMTABCOMP_LIB = symtab/symtab_comp.C
172 OBJS_SYMTABCOMP_LIB = $(notdir $(SRCS_SYMTABCOMP_LIB:%.C=%.o))
173 symtab_MUTATOR_FLAGS = -L. -ltestsymtab -lcommon
175 ifdef USE_LIBTESTSUITE_EXT_A
176 LIBSYMTABCOMP = libtestsymtab.a
178 LIBSYMTABCOMP = libtestsymtab.so
181 symtab_MUTATOR_LIB = $(LIBSYMTABCOMP)
182 symtab_COMPONENT_LIB = $(LIBSYMTABCOMP)
184 #######################################################
185 # Instruction infrastructure components
186 #######################################################
187 SRCS_INSTRUCTIONCOMP_LIB = instruction/instruction_comp.C
188 OBJS_INSTRUCTIONCOMP_LIB = $(notdir $(SRCS_INSTRUCTIONCOMP_LIB:%.C=%.o))
189 instruction_MUTATOR_FLAGS = -L. -ltestinstruction -linstructionAPI -lcommon
191 ifdef USE_LIBTESTSUITE_EXT_A
192 LIBINSTRUCTIONCOMP = libtestinstruction.a
194 LIBINSTRUCTIONCOMP = libtestinstruction.so
197 instruction_MUTATOR_LIB = $(LIBINSTRUCTIONCOMP)
198 instruction_COMPONENT_LIB = $(LIBINSTRUCTIONCOMP)
200 #######################################################
201 # ProcControlAPI infrastructure components
202 #######################################################
203 SRCS_PROCCONTROLCOMP_LIB = proccontrol/proccontrol_comp.C
204 OBJS_PROCCONTROLCOMP_LIB = $(notdir $(SRCS_PROCCONTROLCOMP_LIB:%.C=%.o))
205 proccontrol_MUTATOR_FLAGS += -L. -ltestproccontrol
207 ifdef USE_LIBTESTSUITE_EXT_A
208 LIBPROCCONTROLCOMP = libtestproccontrol.a
210 LIBPROCCONTROLCOMP = libtestproccontrol.so
213 proccontrol_MUTATOR_LIB = $(LIBPROCCONTROLCOMP)
214 proccontrol_COMPONENT_LIB = $(LIBPROCCONTROLCOMP)
216 ######################################################################
218 ######################################################################
222 #COMPONENT_LDFLAGS += $(subst $(SPACE),,-Wl,--enable-new-dtags$(ALL_COMP_DIRS:%=,-rpath,%))
223 COMPONENT_LDFLAGS += $(subst $(SPACE),,-Wl$(ALL_COMP_DIRS:%=,-rpath,%))
225 default: testlibs mutators mutatees_minimum drivers output_drivers components
226 @echo "**********************************************************"
227 @echo "* Build complete."
229 @echo "* High optimization mutatees were not built, use 'make all'"
230 @echo "* to build them."
231 @echo "**********************************************************"
233 all: testlibs mutators mutatees drivers output_drivers components
235 #######################################################################
236 ### A list of all the targets we're building, for install purposes
237 #######################################################################
239 ALL_TARGETS_DEST = $(addprefix $(TEST_DEST)/,$(ALL_TARGETS))
240 LIBTESTSUITE_DEST = $(addprefix $(TEST_DEST)/,$(LIBTESTSUITE))
242 #######################################################################
243 ### Some pattern rules
244 #######################################################################
246 CXXTFLAGS := $(filter-out -fno-implicit-templates, $(CXXFLAGS))
248 #######################################################################
249 ### High level targets
250 #######################################################################
252 MUTATOR_LDFLAGS := $(LDFLAGS) $(LIBDIR) $(MUTATOR_LIBS) $(MUTATOR_LDFLAGS) -lpthread
253 MUTATOR_SO_LDFLAGS = $(filter-out -liberty, $(MUTATOR_LDFLAGS))
254 MUTATEE_NATIVE_FC_LDFLAGS += $(LDFLAGS)
255 MUTATEE_NATIVE_CXX_OMP_LDFLAGS += $(LDFLAGS)
256 TESTDRIVER_LDFLAGS += $(LDFLAGS)
258 # all: testlibs mutators mutatees drivers
259 # See also an addition to the 'all' rule at the end of the file
261 ### Automatically generated variables; generated by makemake.py
263 include make.mutators.gen
265 include make.solo_mutatee.gen
275 #######################################################################
276 ### Filter results, if needed
277 #######################################################################
279 MINIMUM_BUILD_FILTER = %_max %_high %_low
281 ifdef SKIP_BUILD_RTLIB_32
282 BUILD_FILTER += %_32_none_max %_32_none_high %_32_none_low %_32_none_none %_32_pic_max %_32_pic_high %_32_pic_low %_32_pic_none
285 include $(TO_CORE)/make.components
287 ifneq ($(wildcard ../src/dyninst), )
288 ifneq ($(findstring dyninstAPI,$(fullSystem)),)
289 mutatees: $(filter-out $(BUILD_FILTER), $(dyninst_SOLO_MUTATEES))
290 mutatees_minimum: $(filter-out $(BUILD_FILTER), $(filter-out $(MINIMUM_BUILD_FILTER), $(dyninst_SOLO_MUTATEES)))
291 mutators: $(dyninst_MUTATORS_SO)
292 components: $(LIBDYNINSTCOMP)
293 testlibs: $(DYNINST_TESTLIBS) $(DYNINST_STATIC_TESTLIBS)
294 ifndef SKIP_BUILD_RTLIB_32
295 testlibs: $(DYNINST_TESTLIBS_ABI) $(DYNINST_STATIC_TESTLIBS_ABI)
296 dyninst_targs = $(DYNINST_TESTLIBS_ABI) $(DYNINST_STATIC_TESTLIBS_ABI)
298 dyninst_targs += $(filter-out $(BUILD_FILTER), $(filter-out $(MINIMUM_BUILD_FILTER), $(dyninst_SOLO_MUTATEES)))
299 dyninst_targs += $(dyninst_MUTATORS_SO) $(LIBDYNINSTCOMP) $(DYNINST_TESTLIBS) $(DYNINST_STATIC_TESTLIBS)
303 ifneq ($(wildcard ../src/symtab), )
304 ifneq ($(findstring symtabAPI,$(fullSystem)),)
305 mutatees: $(filter-out $(BUILD_FILTER), $(symtab_SOLO_MUTATEES))
306 mutatees_minimum: $(filter-out $(BUILD_FILTER), $(filter-out $(MINIMUM_BUILD_FILTER), $(symtab_SOLO_MUTATEES)))
307 mutators: $(symtab_MUTATORS_SO)
308 components: $(LIBSYMTABCOMP)
310 symtab_targs = $(filter-out $(BUILD_FILTER), $(filter-out $(MINIMUM_BUILD_FILTER), $(symtab_SOLO_MUTATEES)))
311 symtab_targs = $(symtab_MUTATORS_SO) $(LIBSYMTABCOMP)
315 ifneq ($(wildcard ../src/instruction), )
316 ifneq ($(findstring instructionAPI,$(fullSystem)),)
317 mutatees: $(filter-out $(BUILD_FILTER), $(instruction_SOLO_MUTATEES))
318 mutatees_minimum: $(filter-out $(BUILD_FILTER), $(filter-out $(MINIMUM_BUILD_FILTER), $(instruction_SOLO_MUTATEES)))
319 mutators: $(instruction_MUTATORS_SO)
320 ifneq ($(instruction_MUTATORS_SO), )
321 components: $(LIBINSTRUCTIONCOMP)
323 instruction_targs = $(LIBINSTRUCTIONCOMP)
325 instruction_targs += $(filter-out $(BUILD_FILTER), $(filter-out $(MINIMUM_BUILD_FILTER), $(instruction_SOLO_MUTATEES)))
326 instruction_targs += $(instruction_MUTATORS_SO) $(LIBINSTRUCTIONCOMP)
330 ifneq ($(wildcard ../src/proccontrol), )
331 ifneq ($(findstring proccontrol,$(fullSystem)),)
332 mutatees: $(filter-out $(BUILD_FILTER), $(proccontrol_SOLO_MUTATEES))
333 mutatees_minimum: $(filter-out $(BUILD_FILTER), $(filter-out $(MINIMUM_BUILD_FILTER), $(proccontrol_SOLO_MUTATEES)))
334 mutators: $(proccontrol_MUTATORS_SO)
335 ifneq ($(proccontrol_MUTATORS_SO), )
336 components: $(LIBPROCCONTROLCOMP)
337 testlibs: $(PROCCONTROL_TESTLIBS) $(PROCCONTROL_TESTLIBS_ABI) $(DYNINST_TESTLIBS) $(DYNINST_TESTLIBS_ABI)
338 proccontrol_targs = $(LIBPROCCONTROLCOMP) $(PROCCONTROL_TESTLIBS) $(PROCCONTROL_TESTLIBS_ABI) $(DYNINST_TESTLIBS) $(DYNINST_TESTLIBS_ABI)
340 proccontrol_targs += $(filter-out $(BUILD_FILTER), $(filter-out $(MINIMUM_BUILD_FILTER), $(proccontrol_SOLO_MUTATEES)))
341 proccontrol_targs += $(proccontrol_MUTATORS_SO)
345 common_infra: drivers output_drivers
347 dyninstAPI: common_infra $(dyninst_targs) $(symtab_targs) $(instruction_targs) $(proccontrol_targs)
349 symtabAPI: common_infra $(symtab_targs)
351 instructionAPI: common_infra $(instruction_targs)
353 proccontrol: common_infra $(proccontrol_targs)
359 clean: clean_solo_mutatees dyninst_clean_solo_mutatees
360 @$(RM) *.da *.bb. *.bbg
361 @$(RM) $(TESTLIBS) $(TESTLIBS_ABI) $(LIBTESTSUITE) test_driver runTests libTest12.so testdriver_wrapper
362 @$(RM) $(dyninst_MUTATORS_SO)
363 @$(RM) $(symtab_MUTATORS_SO)
364 @$(RM) $(symtab_SOLO_MUTATEES)
365 @$(RM) $(instruction_MUTATORS_SO)
366 @$(RM) $(instruction_SOLO_MUTATEES)
367 @$(RM) $(proccontrol_MUTATORS_SO)
368 @$(RM) $(proccontrol_SOLO_MUTATEES)
369 @$(RM) $(OUTPUT_DRIVERS)
370 @$(RM) $(LIBDYNINSTCOMP)
371 @$(RM) $(LIBSYMTABCOMP)
372 @$(RM) $(LIBINSTRUCTIONCOMP)
373 @$(RM) $(LIBPROCCONTROLCOMP)
374 @$(RM) $(DYNINST_TESTLIBS) $(DYNINST_STATIC_TESTLIBS) $(DYNINST_TESTLIBS_ABI) $(DYNINST_STATIC_TESTLIBS_ABI)
379 @$(RM) -r _dyninstsaved*
385 @if [ -d $(DEPENDDIR) ]; then \
386 $(RM) $(DEPENDDIR)/*.dep; \
387 rmdir $(DEPENDDIR); \
391 $(RM) *.gen *.pl tuples test_info_new.gen.C
394 $(CALL35_1_OBJ_ABI): $(CALL35_1_SRC_ABI)
395 $(M_GCC) $(M_ABI_FLAG) -c $< $(CFLAGS) $(MUTATEE_CFLAGS_GNU) -o $@
398 testlibs: $(LIBTESTSUITE)
400 drivers: test_driver runTests testdriver_wrapper
402 .PHONY: clean install distclean mutators mutatees testlibs gnu_mutatees native_mutatees echo all
404 #######################################################################
405 ### Build command for test libraries
406 #######################################################################
408 $(dyninst_OBJS_ALL_MUTATORS): %.o : dyninst/%.C $(DEPENDDIR)/%.dep
410 $(HIDE_COMP)$(CXX) -c -o $@ -fPIC $(CXXFLAGS) -I../src/ -I../src/dyninst ../src/dyninst/$*.C
411 $(symtab_OBJS_ALL_MUTATORS): %.o : symtab/%.C $(DEPENDDIR)/%.dep
413 $(HIDE_COMP)$(CXX) -c -o $@ -fPIC $(CXXFLAGS) -I../src/ -I../src/symtab ../src/symtab/$*.C
414 $(instruction_OBJS_ALL_MUTATORS): %.o : instruction/%.C $(DEPENDDIR)/%.dep
416 $(HIDE_COMP)$(CXX) -c -o $@ -fPIC $(CXXFLAGS) -I../src/ -I../src/instruction ../src/instruction/$*.C
417 $(proccontrol_OBJS_ALL_MUTATORS): %.o : proccontrol/%.C $(DEPENDDIR)/%.dep
419 $(HIDE_COMP)$(CXX) -c -o $@ -fPIC $(CXXFLAGS) -I../src/ -I../src/proccontrol ../src/proccontrol/$*.C
422 $(DYNINST_TESTLIBS): %.so : %.c $(DEPENDDIR)/%.dep
423 ifdef MAKE_SHARED_LIB
425 $(HIDE_COMP)$(TESTLIB_CC) $(LDFLAGS) -c $(CFLAGS) $(CFLAGS_TESTLIBS) $(filter %.c, $^) -o $*.o
426 $(HIDE_COMP)$(MAKE_SHARED_LIB) $(TESTLIB_FLAGS) $*.o -o $@
429 $(HIDE_COMP)$(TESTLIB_CC) $(LDFLAGS) $(TESTLIB_FLAGS) -I../src/ $(filter %.c,$^) -o $@
432 $(DYNINST_STATIC_TESTLIBS): %.a : %.c $(DEPENDDIR)/%.dep
434 $(HIDE_COMP)$(TESTLIB_CC) $(LDFLAGS) -c $(CFLAGS) $(CFLAGS_TESTLIBS) $(filter %.c, $^) -o $*.o
435 $(HIDE_COMP)$(AR) rcs $@ $*.o
438 $(DYNINST_TESTLIBS_ABI): %_$(M_ABI).so : %.c $(DEPENDDIR)/%.dep
439 ifdef MAKE_SHARED_LIB
441 $(HIDE_COMP)$(TESTLIB_CC) $(LDFLAGS) -c $(CFLAGS) $(CFLAGS_TESTLIBS) $(filter %.c, $^) -o $*.o
442 $(HIDE_COMP)$(MAKE_SHARED_LIB) $(LDFLAGS) $(TESTLIB_FLAGS) $*.o -o $@
445 $(HIDE_COMP)$(TESTLIB_CC) $(M_ABI_FLAG) $(LDFLAGS) $(TESTLIB_FLAGS) -I../src/ $(filter %.c,$^) -o $@
448 ifdef cap_instruction_api
449 INSNAPI_LINK = -linstructionAPI
452 $(DYNINST_STATIC_TESTLIBS_ABI): %_$(M_ABI).a : %.c $(DEPENDDIR)/%.dep
454 $(HIDE_COMP)$(TESTLIB_CC) -c $(CFLAGS) $(LDFLAGS) $(CFLAGS_TESTLIBS) $(filter %.c, $^) -o $*.o
455 $(HIDE_COMP)$(AR) rcs $@ $*.o
458 $(OBJS_TEMPLATES): %.o : ../src/%.C
460 $(HIDE_COMP)$(M_GXX) -c -o $@ $(CXXTFLAGS) -I../src/ ../src/$*.C
462 test_lib_templates.o : ../src/test_lib_templates.C
464 $(HIDE_COMP)$(M_GXX) -c -o $@ -fPIC $(CXXTFLAGS) -I../src/ ../src/$*.C
466 $(OBJS_DYNINSTCOMP_LIB): %.o : ../src/dyninst/%.C $(DEPENDDIR)/%.dep
468 $(HIDE_COMP)$(M_GXX) -c -o $@ -fPIC $(CXXFLAGS) -I../src/ ../src/dyninst/$*.C
470 $(OBJS_SYMTABCOMP_LIB): %.o : ../src/symtab/%.C $(DEPENDDIR)/%.dep
472 $(HIDE_COMP)$(M_GXX) -c -o $@ -fPIC $(CXXFLAGS) -I../src/ ../src/symtab/$*.C
474 $(OBJS_INSTRUCTIONCOMP_LIB): %.o : ../src/instruction/%.C $(DEPENDDIR)/%.dep
476 $(HIDE_COMP)$(M_GXX) -c -o $@ -fPIC $(CXXFLAGS) -I../src/ ../src/instruction/$*.C
478 $(OBJS_PROCCONTROLCOMP_LIB): %.o : ../src/proccontrol/%.C $(DEPENDDIR)/%.dep
480 $(HIDE_COMP)$(M_GXX) -c -o $@ -fPIC $(CXXFLAGS) -I../src/ ../src/proccontrol/$*.C
482 $(OBJS_LIBTESTSUITE): %.o : ../src/%.C $(DEPENDDIR)/%.dep
484 $(HIDE_COMP)$(M_GXX) -c -o $@ -fPIC $(CXXFLAGS) -I../src/ ../src/$*.C
486 # test_info_new.gen.o is special-cased because it makes use of the
487 # COMPILER_CONTROL_DEFS to determine which mutatees to enable for compilers
488 # that are not present at all sites.
489 test_info_new.gen.o: test_info_new.gen.C
491 $(HIDE_COMP)$(CXX) -c -fPIC -o $@ $(CXXFLAGS) $(COMPILER_CONTROL_DEFS) -I../src/ test_info_new.gen.C
493 $(OBJS_LIBTESTLAUNCH): %.o : ../src/%.C ../src/%.h $(DEPENDDIR)/%.dep
495 $(HIDE_COMP)$(M_GXX) -c -fPIC -o $@ $(CXXFLAGS) -I../src/ ../src/$*.C
497 $(LIBDYNINSTCOMP) : $(OBJS_DYNINSTCOMP_LIB) $(LIBTESTSUITE)
499 $(HIDE_COMP)$(CXX) -shared $(TESTSUITE_FLAGS) $(LIBDIR) $(OBJS_DYNINSTCOMP_LIB) -o $@ -L. -ltestSuite -ldyninstAPI -lsymtabAPI -lcommon -linstructionAPI $(COMPONENT_LDFLAGS)
501 $(LIBSYMTABCOMP) : $(OBJS_SYMTABCOMP_LIB) $(LIBTESTSUITE)
503 $(HIDE_COMP)$(CXX) -shared $(TESTSUITE_FLAGS) $(LIBDIR) $(OBJS_SYMTABCOMP_LIB) -o $@ -L. -ltestSuite -lsymtabAPI -lcommon $(COMPONENT_LDFLAGS)
505 $(LIBINSTRUCTIONCOMP) : $(OBJS_INSTRUCTIONCOMP_LIB) $(LIBTESTSUITE)
507 $(HIDE_COMP)$(CXX) -shared $(TESTSUITE_FLAGS) $(LIBDIR) $(OBJS_INSTRUCTIONCOMP_LIB) -o $@ -L. -ltestSuite -linstructionAPI -lcommon $(COMPONENT_LDFLAGS)
509 $(LIBPROCCONTROLCOMP) : $(OBJS_PROCCONTROLCOMP_LIB) $(LIBTESTSUITE)
511 $(HIDE_COMP)$(CXX) -shared $(TESTSUITE_FLAGS) $(LIBDIR) $(OBJS_PROCCONTROLCOMP_LIB) -o $@ -L. -ltestSuite -lpcontrol -lcommon $(COMPONENT_LDFLAGS)
513 $(LIBTESTSUITE) : $(OBJS_LIBTESTSUITE) test_lib_templates.o test_lib.h
515 $(HIDE_COMP)$(CXX) -shared $(TESTSUITE_FLAGS) $(LIBDIR) $(LIBS_LIBTESTSUITE) $(OBJS_LIBTESTSUITE) test_lib_templates.o -o $@ $(COMPONENT_LDFLAGS)
517 $(LIBTESTLAUNCH) : $(OBJS_LIBTESTLAUNCH) test_info_new.gen.o
519 $(HIDE_COMP)$(CXX) -shared $(TESTUITE_FLAGS) $(LIBDIR) -o $@ $^
521 # Native Fortran mutatees
523 # There is no real advantage to generality here since there is only one fortran mutatee
524 # (ie for test1), thus all constituent files are built explicitly
527 test1.mutatee_$(NATIVE_FC).o: ../src/test1.mutateeFort.F
528 $(NATIVE_FC) $(MUTATEE_NATIVE_FFLAGS) -c -o $@ $^
529 test1.mutateeFortC_$(NATIVE_FC).o: ../src/test1.mutateeFortC.c
530 $(NATIVE_FORTRAN_CC) $(MUTATEE_NATIVE_FC_CFLAGS) -c $(filter %.c,$^) -o $@
532 $(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
533 $(NATIVE_FC) -o $@ $(filter %.o,$^) $(MUTATEE_NATIVE_FC_LDFLAGS) $(MUTATEE_LIBS)
536 # Native OpenMP mutatees
537 # There is no real advantage to generality here since there is only one OpenMP mutatee
538 # (ie for test16), thus all constituent files are built explicitly
540 test16.mutatee_$(NATIVE_CXX_OMP).o: ../src/test16.mutatee.c
541 $(NATIVE_CXX_OMP) $(MUTATEE_NATIVE_CXX_CFLAGS) -o $@ $^
543 $(MUTATEES_NATIVE_CXX_OMP): test%.mutatee_$(NATIVE_CXX_OMP) : test%.mutatee_$(NATIVE_CXX_OMP).o $(DEPENDDIR)/test%.mutatee_$(NATIVE_CXX_OMP).dep
544 $(NATIVE_CXX_OMP) $(MUTATEE_NATIVE_CXX_OMP_LDFLAGS) -o $@ $(filter %.o,$^) $(MUTATEE_LIBS)
546 #$(MUTATEES_NATIVE_CXX_OMP): ../src/test16.mutatee.c
547 # $(NATIVE_CXX_OMP) $(MUTATEE_NATIVE_CXX_CFLAGS) -o $@ $^
556 #######################################################################
557 ### Generic Mutator build rule:
559 ### resorts to pattern matching test% (matches test1, test2, ... etc)
560 ### to generate correct, minimal set of prerequisites for each test.
561 ### It would be nicer to just match something simpler that wasn't
562 ### name-dependant, but gnu make is not making this easy.
564 #######################################################################
566 MUTATEE_DEFS := -Dgnu_cc=_gcc -Dgnu_cxx=_g++
569 MUTATEE_DEFS += -Dgnu_abi_cc=_gcc_$(M_ABI) -Dgnu_abi_cxx=_g++_$(M_ABI) -Dm_abi
573 MUTATEE_DEFS += -Dgnu_fc=_g77
577 MUTATEE_DEFS += -Dnative_cc=_$(NATIVE_CC)
581 MUTATEE_DEFS += -Dnative_cxx=_$(NATIVE_CXX)
585 MUTATEE_DEFS += -Dnative_fc=_$(NATIVE_FC)
588 runTests.o: ../src/runTests.C $(DEPENDDIR)/runTests.dep
590 $(HIDE_COMP)$(CXX) -c -o $@ $(CXXFLAGS) $(MUTATEE_DEFS) ../src/runTests.C
591 runTests_static.o: ../src/runTests.C $(DEPENDDIR)/runTests.dep
593 $(HIDE_COMP)$(CXX) -c -o $@ $(CXXFLAGS) $(MUTATEE_DEFS) -DSTATIC_TEST_DRIVER ../src/runTests.C
595 runTests-utils.o: ../src/runTests-utils.C $(DEPENDDIR)/runTests-utils.dep
597 $(HIDE_COMP)$(CXX) -c -o $@ $(CXXFLAGS) $(MUTATEE_DEFS) ../src/runTests-utils.C
599 runTests: runTests.o runTests-utils.o test_driver_templates.o $(LIBTESTLAUNCH)
601 $(HIDE_COMP)$(CXX) $(CXXFLAGS) -o $@ runTests.o runTests-utils.o test_driver_templates.o -L.
602 runTests_static: runTests_static.o runTests-utils.o test_driver_templates.o
604 $(HIDE_COMP)$(CXX) $(CXXFLAGS) -o runTests runTests_static.o runTests-utils.o test_driver_templates.o
606 test_driver.o: ../src/test_driver.C $(DEPENDDIR)/test_driver.dep
608 $(HIDE_COMP)$(CXX) -c -o $@ $(CXXFLAGS) $(MUTATEE_DEFS) ../src/test_driver.C
610 testdriver_be.o: ../src/testdriver_be.C $(DEPENDDIR)/testdriver_be.dep
612 $(HIDE_COMP)$(CXX) -c -o $@ $(CXXFLAGS) $(MUTATEE_DEFS) $(LAUNCHMON_BE_CFLAGS) ../src/testdriver_be.C
614 testdriver_wrapper.o: ../src/testdriver_wrapper.C ../src/remotetest.h
616 $(HIDE_COMP)$(CXX) -g -c -o $@ $(CXXFLAGS) ../src/testdriver_wrapper.C -Wall
618 dynlmon.o: ../src/dynlmon.C $(DEPENDDIR)/dynlmon.dep
619 $(HIDE_COMP)$(CXX) -c -o $@ $(CXXFLAGS) $(MUTATEE_DEFS) $(LAUNCHMON_FE_CFLAGS) -I../../ ../src/dynlmon.C
621 test_driver_static.o: ../src/test_driver.C $(DEPENDDIR)/test_driver_static.dep
623 $(HIDE_COMP)$(CXX) -c -o $@ -DSTATIC_TEST_DRIVER $(CXXFLAGS) $(MUTATEE_DEFS) ../src/test_driver.C
625 test_driver: test_driver.o test_driver_templates.o dynlmon.o testdriver_be.o test_info_new.gen.o $(DEPENDDIR)/test_driver.dep $(LIBTESTSUITE) $(LIBTESTLAUNCH)
627 $(HIDE_COMP)$(CXX) -o $@ test_driver.o test_driver_templates.o test_info_new.gen.o testdriver_be.o dynlmon.o -L. -ltestSuite $(MUTATOR_LDFLAGS) $(LIBS) $(TESTDRIVER_LDFLAGS) -lcommon -ltestlaunch $(LAUNCHMON_LINK) $(COMPONENT_LDFLAGS) ; $(TESTDRIVER_EXTRA_LINK_STEP)
629 testdriver_wrapper: connection.o testdriver_wrapper.o
631 $(HIDE_COMP)$(CXX) -o $@ connection.o testdriver_wrapper.o $(LAUNCHMON_BE_LINK)
633 ######################################################################
635 ######################################################################
637 OUTPUT_DRIVERS = DatabaseOutputDriver.so
639 DatabaseOutputDriver.o : ../src/DatabaseOutputDriver.C # $(DEPENDDIR)/DatabaseOutputDriver.dep
641 $(HIDE_COMP)$(M_GXX) -c -o $@ -fPIC $(CXXFLAGS) -I../src/ ../src/$*.C
643 DatabaseOutputDriver.so: DatabaseOutputDriver.o $(LIBTESTSUITE) # $(DEPENDDIR)/DatabaseOutputDriver.dep
645 $(HIDE_COMP)$(CXX) -o $@ -shared $(filter %.o,$^) $(MUTATOR_SO_LDFLAGS) $(LIBDIR) $(LIBS) -L. -ltestSuite
652 .PHONY: output_drivers
653 output_drivers: $(OUTPUT_DRIVERS)
655 #######################################################################
657 #######################################################################
659 DEPS_MUTATORS += $(DEPENDDIR)/test_driver.dep
660 DEPS_MUTATORS += $(DEPENDDIR)/testdriver_be.dep
661 DEPS_MUTATORS += $(DEPENDDIR)/dynlmon.dep
662 DEPS_MUTATORS += $(DEPENDDIR)/runTests.dep $(DEPENDDIR)/runTests-utils.dep
663 DEPS_SYMTAB_MUTATORS += $(addprefix $(DEPENDDIR)/,$(symtab_OBJS_ALL_MUTATORS:%.o=%.dep))
664 DEPS_DYNINST_MUTATORS += $(addprefix $(DEPENDDIR)/,$(dyninst_OBJS_ALL_MUTATORS:%.o=%.dep))
665 DEPS_INSTRUCTION_MUTATORS += $(addprefix $(DEPENDDIR)/,$(instruction_OBJS_ALL_MUTATORS:%.o=%.dep))
666 DEPS_PROCCONTROL_MUTATORS += $(addprefix $(DEPENDDIR)/,$(proccontrol_OBJS_ALL_MUTATORS:%.o=%.dep))
668 DEPS_MUTATEES_GCC += $(addprefix $(DEPENDDIR)/,$(addsuffix _gcc.dep, $(MUTATEES_C)))
669 DEPS_MUTATEES_GXX += $(addprefix $(DEPENDDIR)/,$(addsuffix _g++.dep, $(MUTATEES_CXX)))
670 DEPS_MUTATEES_GXX += $(addprefix $(DEPENDDIR)/,$(addsuffix _g++.dep, $(MUTATEES_CXX_ONLY)))
671 DEPS_DYNINST_TESTLIBS = $(addprefix $(DEPENDDIR)/,$(DYNINST_TESTLIBS:%.so=%.dep))
672 DEPS_LIBTESTSUITE = $(addprefix $(DEPENDDIR)/,$(SRCS_LIBTESTSUITE:%.C=%.dep))
673 DEPS_LIBTESTLAUNCH = $(addprefix $(DEPENDDIR)/,$(SRCS_LIBTESTLAUNCH:%.C=%.dep))
674 DEPS_DYNINSTCOMP = $(addprefix $(DEPENDDIR)/,$(notdir $(SRCS_DYNINSTCOMP_LIB:%.C=%.dep)))
675 DEPS_SYMTABCOMP = $(addprefix $(DEPENDDIR)/,$(notdir $(SRCS_SYMTABCOMP_LIB:%.C=%.dep)))
676 DEPS_INSTRUCTIONCOMP = $(addprefix $(DEPENDDIR)/,$(notdir $(SRCS_INSTRUCTIONCOMP_LIB:%.C=%.dep)))
677 DEPS_PROCCONTROLCOMP = $(addprefix $(DEPENDDIR)/,$(notdir $(SRCS_PROCCONTROLCOMP_LIB:%.C=%.dep)))
680 DEPS_MUTATEES_G77 += $(addprefix $(DEPENDDIR)/,$(addsuffix _g77.dep, $(MUTATEES_FORTRAN)))
684 DEPS_MUTATEES_NATIVE_FC += $(addprefix $(DEPENDDIR)/,$(addsuffix _$(NATIVE_FC).dep, $(MUTATEES_FORTRAN)))
688 DEPS_MUTATEES_NATIVE_CXX_OMP += $(addprefix $(DEPENDDIR)/,$(addsuffix _$(NATIVE_CXX_OMP).dep, $(MUTATEES_OPENMP)))
692 DEPS_MUTATEES_NATIVE_CC += $(addprefix $(DEPENDDIR)/,$(addsuffix _$(NATIVE_CC).dep, $(MUTATEES_C)))
696 DEPS_MUTATEES_NATIVE_CXX += $(addprefix $(DEPENDDIR)/,$(addsuffix _$(NATIVE_CXX).dep, $(MUTATEES_CXX)))
697 DEPS_MUTATEES_NATIVE_CXX += $(addprefix $(DEPENDDIR)/,$(addsuffix _$(NATIVE_CXX).dep, $(MUTATEES_CXX_ONLY)))
700 depend: $(DEPS_MUTATORS)
703 @echo "mut deps: $(DEPS_MUTATORS)"
704 @if [ -d $(DEPENDDIR) ]; then \
705 echo "Directory \"$(DEPENDDIR)\" already exists..."; \
707 mkdir -p $(DEPENDIR); \
708 echo "Made \"$(DEPENDDIR)\" directory..."; \
711 $(DEPENDDIR)/test_driver_static.dep: test_driver.C
712 @mkdir -p $(DEPENDDIR)
713 $(HIDE_COMP)$(DEPCC) $(CXXFLAGS) $< $(MUTATOR_CXXFLAGS) -DSTATIC_TEST_DRIVER $(DEPENDFLAGS) $*.o > $@
715 $(DEPS_MUTATORS): $(DEPENDDIR)/%.dep : %.C
716 @mkdir -p $(DEPENDDIR)
717 $(HIDE_COMP)$(DEPCC) $(CXXFLAGS) $< $(MUTATOR_CXXFLAGS) $(DEPENDFLAGS) $*.o > $@
719 $(DEPS_SYMTAB_MUTATORS): $(DEPENDDIR)/%.dep : symtab/%.C
720 @mkdir -p $(DEPENDDIR)
721 $(HIDE_COMP)$(DEPCC) $(CXXFLAGS) $< $(MUTATOR_CXXFLAGS) $(DEPENDFLAGS) $*.o > $@
723 $(DEPS_INSTRUCTION_MUTATORS): $(DEPENDDIR)/%.dep : instruction/%.C
724 @mkdir -p $(DEPENDDIR)
725 $(HIDE_COMP)$(DEPCC) $(CXXFLAGS) $< $(MUTATOR_CXXFLAGS) $(DEPENDFLAGS) $*.o > $@
727 $(DEPS_PROCCONTROL_MUTATORS): $(DEPENDDIR)/%.dep : proccontrol/%.C
728 @mkdir -p $(DEPENDDIR)
729 $(HIDE_COMP)$(DEPCC) $(CXXFLAGS) $< $(MUTATOR_CXXFLAGS) $(DEPENDFLAGS) $*.o > $@
731 $(DEPS_DYNINST_MUTATORS): $(DEPENDDIR)/%.dep : dyninst/%.C
732 @mkdir -p $(DEPENDDIR)
733 $(HIDE_COMP)$(DEPCC) $(CXXFLAGS) $< $(MUTATOR_CXXFLAGS) $(DEPENDFLAGS) $*.o > $@
735 $(DEPS_MUTATEES_GCC): $(DEPENDDIR)/test%.mutatee_gcc.dep : test%.mutatee.c $(SRCS_FORALL_MUTATEES)
736 @mkdir -p $(DEPENDDIR)
737 $(M_GCC) $(CFLAGS) $< $(MUTATEE_CFLAGS) $(DEPENDFLAGS) test$*.mutatee_gcc.o > $@
739 $(DEPS_MUTATEES_GXX): $(DEPENDDIR)/test%.mutatee_g++.dep : $(wildcard test%.mutatee.*) $(SRCS_FORALL_MUTATEES)
740 @mkdir -p $(DEPENDDIR)
741 $(M_GXX) $(CXXFLAGS) $< $(MUTATEE_CXXFLAGS) $(DEPENDFLAGS) test$*.mutatee_gxx.o > $@
743 $(DEPS_MUTATEES_G77): $(DEPENDDIR)/test%.mutatee_g77.dep : test%.mutateeFort.F $(SRCS_FORALL_MUTATEES)
744 @mkdir -p $(DEPENDDIR)
745 $(M_G77) $(CFLAGS) $< $(MUTATEE_CFLAGS) $(DEPENDFLAGS) test$*.mutateeFort_g77.o > $@
748 # Use gcc to generate deps for native compilers
751 $(DEPS_MUTATEES_NATIVE_CC): $(DEPENDDIR)/test%.mutatee_$(NATIVE_CC).dep : test%.mutatee.c $(SRCS_FORALL_MUTATEES)
752 @mkdir -p $(DEPENDDIR)
753 $(M_GCC) $(CFLAGS) $< $(MUTATEE_CFLAGS) $(DEPENDFLAGS) test$*.mutatee_$(NATIVE_CC).o > $@
757 $(DEPS_MUTATEES_NATIVE_CXX): $(DEPENDDIR)/test%.mutatee_$(NATIVE_CXX).dep : $(wildcard test%.mutatee.*) $(SRCS_FORALL_MUTATEES)
758 @mkdir -p $(DEPENDDIR)
759 $(M_GXX) $(CXXFLAGS) $< $(MUTATEE_CXXFLAGS) $(DEPENDFLAGS) test$*.mutatee_$(NATIVE_CXX).o > $@
763 $(DEPS_MUTATEES_NATIVE_FC): $(DEPENDDIR)/test%.mutatee_$(NATIVE_FC).dep : test%.mutateeFort.F $(SRCS_FORALL_MUTATEES)
764 @mkdir -p $(DEPENDDIR)
765 $(M_G77) $(CFLAGS) $< $(MUTATEE_CFLAGS) $(DEPENDFLAGS) test$*.mutateeFort_$(NATIVE_FC).o > $@
769 $(DEPS_MUTATEES_NATIVE_CXX_OMP): $(DEPENDDIR)/test%.mutatee_$(NATIVE_CXX_OMP).dep : test%.mutatee.c $(SRCS_FORALL_MUTATEES)
770 @mkdir -p $(DEPENDDIR)
771 $(M_GXX) $(CFLAGS) $< $(MUTATEE_CFLAGS) $(DEPENDFLAGS) test$*.mutatee_$(NATIVE_CXX_OMP).o > $@
775 $(DEPS_DYNINST_TESTLIBS): $(DEPENDDIR)/lib%.dep : lib%.c
776 @mkdir -p $(DEPENDDIR)
777 $(HIDE_COMP)$(DEPCC) $(CXXFLAGS) $< $(MUTATOR_CXXFLAGS) $(DEPENDFLAGS) lib$*.so > $@
779 $(DEPS_LIBTESTLAUNCH) $(DEPS_LIBTESTSUITE): $(DEPENDDIR)/%.dep : %.C
780 @mkdir -p $(DEPENDDIR)
781 $(HIDE_COMP)$(DEPCC) $(CXXFLAGS) -I../src $< $(MUTATOR_CXXFLAGS) $(DEPENDFLAGS) $*.o > $@
783 $(DEPS_DYNINSTCOMP): $(DEPENDDIR)/%.dep : dyninst/%.C
784 @mkdir -p $(DEPENDDIR)
785 $(HIDE_COMP)$(DEPCC) $(CXXFLAGS) -I../src -I../src/dyninst $< $(MUTATOR_CXXFLAGS) $(DEPENDFLAGS) $*.o > $@
787 $(DEPS_SYMTABCOMP): $(DEPENDDIR)/%.dep : symtab/%.C
788 @mkdir -p $(DEPENDDIR)
789 $(HIDE_COMP)$(DEPCC) $(CXXFLAGS) -I../src -I../src/symtab $< $(MUTATOR_CXXFLAGS) $(DEPENDFLAGS) $*.o > $@
791 $(DEPS_INSTRUCTIONCOMP): $(DEPENDDIR)/%.dep : instruction/%.C
792 @mkdir -p $(DEPENDDIR)
793 $(HIDE_COMP)$(DEPCC) $(CXXFLAGS) -I../src -I../src/instruction $< $(MUTATOR_CXXFLAGS) $(DEPENDFLAGS) $*.o > $@
795 $(DEPS_PROCCONTROLCOMP): $(DEPENDDIR)/%.dep : proccontrol/%.C
796 @mkdir -p $(DEPENDDIR)
797 $(HIDE_COMP)$(DEPCC) $(CXXFLAGS) -I../src -I../src/proccontrol $< $(MUTATOR_CXXFLAGS) $(DEPENDFLAGS) $*.o > $@
799 # do not include dep files for "clean" targets
800 ifneq ($(MAKECMDGOALS),clean)
801 ifneq ($(MAKECMDGOALS),distclean)
802 ifneq ($(MAKECMDGOALS),echo)
804 -include $(DEPS_MUTATORS)
805 # -include $(DEPS_MUTATEES_GCC)
806 # -include $(DEPS_MUTATEES_GXX)
807 # -include $(DEPS_TESTLIBS)
810 # -include $(DEPS_MUTATEES_G77)
814 # -include $(DEPS_MUTATEES_NATIVE_CC)
818 -include $(DEPS_MUTATEES_NATIVE_CXX)
822 -include $(DEPS_MUTATEES_NATIVE_FC)
826 -include $(DEPS_MUTATEES_NATIVE_CXX_OMP)