LEVEL = ../../.. include $(LEVEL)/Makefile.common # Test in all immediate subdirectories if unset. TESTDIRS ?= $(shell echo $(PROJ_SRC_DIR)/*/) # Only run rewriter tests on darwin. ifeq ($(OS),Darwin) TESTDIRS += endif ifdef VERBOSE ifeq ($(VERBOSE),0) PROGRESS = : REPORTFAIL = echo 'FAIL: clang' $(TARGET_TRIPLE) $(subst $(LLVM_SRC_ROOT)/tools/clang/,,$<) DONE = $(LLVMToolDir)/clang -v else PROGRESS = echo $< REPORTFAIL = cat $@ DONE = true endif else PROGRESS = printf '.' REPORTFAIL = (echo; echo '----' $< 'failed ----') DONE = echo endif TESTS := $(addprefix Output/, $(addsuffix .testresults, $(shell find $(TESTDIRS) \( -name '*.c' -or -name '*.cpp' -or -name '*.m' -or -name '*.mm' -or -name '*.S' \) | grep -v "Output/"))) Output/%.testresults: % @ $(PROGRESS) @ PATH=$(ToolDir):$(LLVM_SRC_ROOT)/test/Scripts:$$PATH VG=$(VG) $(PROJ_SRC_DIR)/TestRunner.sh $< > $@ || $(REPORTFAIL) all:: @ mkdir -p $(addprefix Output/, $(TESTDIRS)) @ rm -f $(TESTS) @ echo '--- Running clang tests for $(TARGET_TRIPLE) ---' @ $(MAKE) $(TESTS) @ $(DONE) @ !(cat $(TESTS) | grep -q " FAILED! ") report: $(TESTS) @ cat $^ clean:: @ rm -rf Output/ .PHONY: all report clean