# This Makefile is to be included by Makefile of each test ifndef PROJ_DIR PROJ_DIR := ../../ endif IVFLAGS += -I$(PROJ_DIR)/include/ -DSIMULATION # The macroassembly header file is somewhat different thing, but I don't know # what place would be more suitable for it than include/ dir MACROASM_FLAGS += -I$(PROJ_DIR)/include/ -E include $(PROJ_DIR)/Makefile.config include $(PROJ_DIR)/Makefile.util ifdef DEBUG IVFLAGS += -DDEBUG DBG&SAVE = tee "$(1)" else DBG&SAVE = cat > "$(1)" # putting cat through pipe - what an animal cruelty! endif vpath %.v $(PROJ_DIR):$(PROJ_DIR)/design/:$(PROJ_DIR)/models/:. vpath %.vh $(PROJ_DIR)/include:. ifdef QUICK_TEST ifdef VGA_TEST SKIPPING = 1 endif endif ifdef SKIPPING test : @echo Skipping >&2 else ifdef VGA_TEST test : VGAdump.ppm VGAdump_expected.ppm endif test : report.log ! grep error $< >&2 ifdef VGA_TEST diff VGAdump.ppm VGAdump_expected.ppm endif endif $(PROJ_DIR)/% : $(MAKE) -C $(PROJ_DIR) $* %.mem : %.memv $(IV) $(MACROASM_FLAGS) $^ -o $@ %.vvp : %.v $(DEPENDS) $(IV) $(IVFLAGS) -s $(TOP) $(filter %.v,$^) -o $@ ifdef VGA_TEST report.log VGAdump.mem : $(PROJ_DIR)/design/font.mem endif report.log VGAdump.mem : test.vvp vvp $< | $(call DBG&SAVE,report.log) VGAdump.ppm : $(PROJ_DIR)/tools/VGAdump2ppm VGAdump.mem grep -v // < VGAdump.mem | $< > $@ GENERATED_MEM_FILES := $(shell find . -name "*.s.tcl") GENERATED_MEM_FILES := $(basename $(basename $(GENERATED_MEM_FILES))) GENERATED_MEM_FILES += $(basename $(shell find . -name "*.memv")) GENERATED_MEM_FILES := $(addsuffix .mem,$(GENERATED_MEM_FILES)) clean : rm $(GENERATED_MEM_FILES) *.vvp report.log VGAdump.mem VGAdump.ppm \ 2>/dev/null || true .PHONY : test clean