##===- TEST.dbgopt.Makefile --------------------------------*- Makefile -*-===##
#
# This test checks whether presense of debugging information influences
# the optimizer or not. 
#
# $ clang -fno-verbose-asm -g -mllvm --disable-debug-info-print -Os \
#      -S foo.c -o foo.first.s
# $ clang -fno-verbose-asm -Os -S foo.c -o foo.second.s
# $ diff foo.first.s foo.second.s
#
##===----------------------------------------------------------------------===##

TESTNAME = $*
.PRECIOUS: Output/%.first.s Output/%.second.s 

$(PROGRAMS_TO_TEST:%=test.$(TEST).%): \
test.$(TEST).%: Output/%.diff

Output/%.s: %.c Output/.dir $(INCLUDES)
	-$(LLVMCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(X_TARGET_FLAGS) -g -Os \
	  -fno-verbose-asm -mllvm --disable-debug-info-print \
	  -S ${PROJ_SRC_DIR}/$*.c -o Output/$*.first.s
	-$(LLVMCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(X_TARGET_FLAGS) -Os \
	  -fno-verbose-asm -S ${PROJ_SRC_DIR}/$*.c -o Output/$*.second.s
	@-if diff Output/$*.first.s Output/$*.second.s > $@; then \
	 echo "--------- TEST-PASS: $*" > Output/$*.dbgopt.report.txt; \
	else \
	 echo "--------- TEST-FAIL: $*" > Output/$*.dbgopt.report.txt; \
	fi

Output/%.s: %.cpp Output/.dir $(INCLUDES)
	-$(LLVMCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(X_TARGET_FLAGS) -g -Os \
	  -fno-verbose-asm -mllvm --disable-debug-info-print \
	  -S ${PROJ_SRC_DIR}/$*.cpp -o Output/$*.first.s
	-$(LLVMCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(X_TARGET_FLAGS) -Os -S \
	  -fno-verbose-asm ${PROJ_SRC_DIR}/$*.cpp -o Output/$*.second.s
	@-if diff Output/$*.first.s Output/$*.second.s > $@; then \
	 echo "--------- TEST-PASS: $*" > Output/$*.dbgopt.report.txt; \
	else \
	 echo "--------- TEST-FAIL: $*" > Output/$*.dbgopt.report.txt; \
	fi

Output/%.s: %.cc Output/.dir $(INCLUDES)
	-$(LLVMCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(X_TARGET_FLAGS) -g -Os \
	  -fno-verbose-asm -mllvm -disable-debug-info-print \
	  -S ${PROJ_SRC_DIR}/$*.cc -o Output/$*.first.s
	-$(LLVMCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(X_TARGET_FLAGS) -Os -S \
	  -fno-verbose-asm ${PROJ_SRC_DIR}/$*.cc -o Output/$*.second.s
	@-if diff Output/$*.first.s Output/$*.second.s > $@; then \
	 echo "--------- TEST-PASS: $*" > Output/$*.dbgopt.report.txt; \
	else \
	 echo "--------- TEST-FAIL: $*" > Output/$*.dbgopt.report.txt; \
	fi

Output/%.s: %.m Output/.dir $(INCLUDES)
	-$(LLVMCC) $(CFLAGS) $(LOPTFLAGS) $(X_TARGET_FLAGS) -g -Os \
	  -fno-verbose-asm -mllvm --disable-debug-info-print \
	  -S ${PROJ_SRC_DIR}/$*.m -o Output/$*.first.s
	-$(LLVMCC) $(CFLAGS) $(LOPTFLAGS) $(X_TARGET_FLAGS) -Os -S \
	  -fno-verbose-asm ${PROJ_SRC_DIR}/$*.m -o Output/$*.second.s
	@-if diff Output/$*.first.s Output/$*.second.s > $@; then \
	 echo "--------- TEST-PASS: $*" > Output/$*.dbgopt.report.txt; \
	else \
	 echo "--------- TEST-FAIL: $*" > Output/$*.dbgopt.report.txt; \
	fi

Output/%.s: %.mm Output/.dir $(INCLUDES)
	-$(LLVMCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(X_TARGET_FLAGS) -g -Os \
	  -fno-verbose-asm -mllvm --disable-debug-info-print \
	  -S ${PROJ_SRC_DIR}/$*.mm -o Output/$*.first.s
	-$(LLVMCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(X_TARGET_FLAGS) -Os -S \
	  -fno-verbose-asm ${PROJ_SRC_DIR}/$*.mm -o Output/$*.second.s
	@-if diff Output/$*.first.s Output/$*.second.s > $@; then \
	 echo "--------- TEST-PASS: $*" > Output/$*.dbgopt.report.txt; \
	else \
	 echo "--------- TEST-FAIL: $*" > Output/$*.dbgopt.report.txt; \
	fi

Asms    := $(sort $(addsuffix .s, $(notdir $(basename $(Source)))))
AllAsms := $(addprefix Output/,$(Asms))

Output/%.diff: $(AllAsms)
	

