.PHONY: all clean .PRECIOUS: $(EXAMPLES_PPM) RAYTRACER_FLAGS := DOCKER := docker ZIP := zip PANDOC := pandoc CONVERT := convert HANDIN := ./hw1c.michael.zhang.zip BINARY := ./raytracer1c SOURCES := Cargo.toml $(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) mkdir -p target/docker $(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 \ -e CARGO_TARGET_DIR=/usr/src/myapp/target/docker \ rust \ cargo build --profile release-handin mv target/docker/release-handin/raytracer1c $@ $(HANDIN): $(BINARY) Makefile Cargo.toml Cargo.lock README.md $(EXAMPLES_PNG) $(EXAMPLES_PPM) $(ZIP) -r $@ src examples $^ examples/%.ppm: examples/%.txt $(SOURCES) cargo run --release -- -o $@ $(RAYTRACER_FLAGS) $< examples/%.png: examples/%.ppm convert $< $@ clean: rm -rf target/docker \ $(HANDIN) $(BINARY) \ $(EXAMPLES_PPM) $(EXAMPLES_PNG)