1 TESTS = threads p1-1 p1-2 list stdlib stdio userprog p2 vm filesys
3 PATH := $(shell pwd)/../src/utils:$(PATH)
6 @echo "This Makefile has only \`check' targets."
9 $(MAKE) -C .. distclean
10 for d in $(TESTS); do $(MAKE) $$d || exit 1; done
11 @echo All tests passed.
18 define prep-threads-grading
21 define prep-userprog-grading
22 $(MAKE) -C ../src/userprog $(SUBMAKEFLAGS)
23 $(MAKE) -C ../grading/userprog $(SUBMAKEFLAGS)
26 define prep-vm-grading
27 $(MAKE) -C ../src/userprog $(SUBMAKEFLAGS)
28 $(MAKE) -C ../grading/vm $(SUBMAKEFLAGS)
31 define prep-filesys-grading
32 $(MAKE) -C ../grading/filesys $(SUBMAKEFLAGS)
36 $(prep-$(PROJECT)-grading)
40 rm -rf $@ && mkdir -p $@/pintos && cp -R ../src $@/pintos
41 cd $@/pintos/src && $(MAKE) clean $(SUBMAKEFLAGS)
45 cd $@ && ../../grading/$(PROJECT)/run-tests
53 (cd $@/pintos && patch -p0)
56 threads: PROJECT = threads
59 $(run-tests) -d alarm-single
62 p1-1: PROJECT = threads
65 $(apply-patch) < ../solutions/p1-1.patch
66 $(run-tests) -d alarm.*
69 p1-2: PROJECT = threads
72 $(apply-patch) < ../solutions/p1-2.patch
73 $(run-tests) -d priority.*
76 list: PROJECT = threads
79 cp ../src/tests/threads/$@.c $@/pintos/src/threads/test.c
80 $(MAKE) -C $@/pintos/src/threads $(SUBMAKEFLAGS)
81 -(cd $@/pintos/src/threads/build && pintos -v run -q) | tee $@/output
82 grep -q '$@: PASS' $@/output
85 userprog: PROJECT = userprog
87 $(prep-grading) null.dsk
89 $(apply-patch) < ../solutions/p2-null.patch
93 p2: PROJECT = userprog
97 $(apply-patch) < ../solutions/p2.patch
105 $(MAKE) -C $@/pintos/src/vm $(SUBMAKEFLAGS)
108 filesys: PROJECT = filesys
112 $(MAKE) -C $@/pintos/src/filesys $(SUBMAKEFLAGS)