Files
rust-based-os-comp2022/ci-user/Makefile
2022-07-07 12:47:55 +08:00

49 lines
1.3 KiB
Makefile

RAND := $(shell awk 'BEGIN{srand();printf("%d", 65536*rand())}')
CHAPTER ?=
ifeq ($(CHAPTER), 3)
LAB := 1
else ifeq ($(CHAPTER), 4)
LAB := 2
else ifeq ($(CHAPTER), 5)
INITPROC := 1
LAB := 3
else ifeq ($(CHAPTER), 6)
INITPROC := 1
LAB := 4
else ifeq ($(CHAPTER), 7)
INITPROC := 1
LAB := 4
else ifeq ($(CHAPTER), 8)
INITPROC := 1
LAB := 5
endif
randomize:
find user/src/bin -name "*.rs" | xargs perl -pi -e s,OK,OK$(RAND),g
find user/src/bin -name "*.rs" | xargs perl -pi -e s,passed,passed$(RAND),g
find check -name "*.py" | xargs perl -pi -e s,OK,OK$(RAND),g
find check -name "*.py" | xargs perl -pi -e s,passed,passed$(RAND),g
test: randomize
python3 overwrite.py $(CHAPTER)
make -C user build BASE=2 TEST=$(CHAPTER) CHAPTER=$(CHAPTER)
ifdef INITPROC
cp -f user/build/elf/ch$(CHAPTER)_usertest.elf user/build/elf/ch$(CHAPTER)b_initproc.elf
endif
make -C ../os run | tee stdout-ch$(CHAPTER)
python3 check/ch$(CHAPTER).py < stdout-ch$(CHAPTER)
ifdef LAB
@for i in $(shell seq $(LAB)); do \
if ! [ -f ../reports/lab$$i.pdf -o -f ../reports/lab$$i.md ]; then \
echo "Report for lab$$i needed. Add your report to reports/lab$$i.pdf or reports/lab$$i.md" ; \
exit 1 ; \
else \
echo "Report for lab$$i found." ; \
fi; \
done
endif
.PHONY: test randomize