#### standard stuff Here= $(PWD) Filters= $(Here)/graph.awk $(Here)/num.awk #Tmp:= $(shell mktemp -d) Tmp:= $(HOME)/tmp Testdir= $(Here)/eg Tests:= $(shell cd $(Testdir); ls | egrep '^[0-9]+$$' | sort -n ) Group= 11112222 Proj= 0 X= 1 SubmitRoot=/home/timm/cs310 #only works at csee Submit=$(SubmitRoot)/$(Proj)/$(USER)/$(Group) Src= -f $(subst awk ,awk | gawk -f ,$(Filters)) Run= gawk $(Src) # gawk secrets: ask the lecturer if you are interested #Run1= gawk $(Src) --source #Debug= pgawk --dump-variables=$(Tmp)/vars.out $(Src) #Profile= pgawk --profile=$(Tmp)/profile.out $(Src) main : all ready: $(Filters) $(Testdir) $(Tmp) $(Tmp) : @ - [ ! -d $(Tmp) ] && mkdir $(Tmp) submit : $(Submit)0 ; mkdir -p $@<; cp -vr * $< submitLate1 : $(Submit)1 ; mkdir -p $@<; cp -vr * $<2 submitLate2 : $(Submit)2 ; mkdir -p $@<; cp -vr * $< submitLate3 : $(Submit)3 ; mkdir -p $@<; cp -vr * $< submitLate4 : $(Submit)4 ; mkdir -p $@<; cp -vr * $< submitLate5 : $(Submit)5 ; mkdir -p $@<; cp -vr * $< #### run all tests tests:; @$(foreach x, $(Tests), $(MAKE) X=$x test;) score : @$(MAKE) tests | cut -d\ -f 1 | egrep '(PASSED|FAILED)' | sort | uniq -c #### unit tests test : ready $(Testdir)/$(X).want @$(MAKE) run > $(Tmp)/$X.got @if diff -s $(Tmp)/$X.got $(Testdir)/$X.want > /dev/null; \ then echo PASSED $X ; \ else echo FAILED $X, got $(Tmp)/$X.got; \ fi run : ready $(Testdir)/$(X) @$(Hi) @cat $(Testdir)/$(X) | $(Run) cache : ready @$(MAKE) run | tee $(Testdir)/$X.want @echo new test result cached to $(Testdir)/$X.want # change run so it moves the file to the start