.PHONY: all clean DOCKER := docker ZIP := zip PANDOC := pandoc CONVERT := convert HANDIN := hw1a.michael.zhang.zip BINARY := ./assignment-1 WRITEUP := writeup.pdf SOURCES := $(shell find -name "*.rs") EXAMPLES := $(shell find examples -name "*.txt") EXAMPLES_PPM := $(patsubst %.txt,%.ppm,$(EXAMPLES)) EXAMPLES_PNG := $(patsubst %.txt,%.png,$(EXAMPLES)) all: $(HANDIN) $(BINARY): $(SOURCES) $(DOCKER) run \ --rm \ -v "$(shell pwd)":/usr/src/myapp \ -v cargo-registry:/usr/local/cargo \ --user "$(shell id -u)":"$(shell id -g)" \ -w /usr/src/myapp \ rust \ cargo build --release mv target/release/assignment-1 $@ $(HANDIN): $(BINARY) $(WRITEUP) Makefile Cargo.toml Cargo.lock README.md $(EXAMPLES_PNG) $(EXAMPLES_PPM) $(ZIP) -r $@ src examples $^ examples/%.ppm: examples/%.txt cargo run -- -o $@ $< examples/%.png: examples/%.ppm convert $< $@ writeup.pdf: writeup.md $(EXAMPLES_PNG) $(PANDOC) -o $@ $< clean: rm -f $(HANDIN) $(BINARY) $(WRITEUP) $(EXAMPLES_PPM) $(EXAMPLES_PNG)