DAYS = $(shell seq 1 25 | xargs printf "%02i\n") all:: build run define make-day run:: $1/run build:: $1/main clean:: $1/clean .PHONY: $1/run $1/clean $1/target/debug/day$1: $1/src/main.rs @cd $1 && cargo build $1/target/release/day$1: $1/src/main.rs @cd $1 && cargo build -r $1/main: $1/target/release/day$1 @cp $1/target/release/day$1 $1/main $1/debug1: $1/target/debug/day$1 @cd $1 && time ./target/debug/day$1 1 $1/debug2: $1/target/debug/day$1 @cd $1 && time ./target/debug/day$1 2 $1/run1: $1/main @cd $1 && time ./main 1 $1/run2: $1/main @cd $1 && time ./main 2 $1/run: $1/main @echo "== day $1 ==" @echo -en "\npart 1: " && cd $1 && time ./main 1 @echo -en "\npart 2: " && cd $1 && time ./main 2 @echo "" $1/clean: rm $1/main endef $(foreach day,$(DAYS),$(eval $(call make-day,$(day)))) .PHONY: all build run clean