.PHONY: clean

clean:
	rm -f results/*.json
	rm -f output/*.json
	rm -f benchmarks/*/gradual/static_samples/*
	sudo rm -f benchmarks/*/grift/static_samples/*

.PHONY: baselines gcomp grift all

CFLAGS_COMMON = -O3 -march=native
NUM_BINS = 5
NUM_SAMPLES = 5
NUM_RUNS_SHORT = 10
NUM_RUNS_LONG = 50

# Run all experiments
all: baselines gcomp grift

baselines:
	echo "Running baselines" \
	&& python3 run_experiments.py \
		--compilers gcomp grift racket \
		--typechecking static dynamic \
		--cflags '$(CFLAGS_COMMON)' \
		--num-runs $(NUM_RUNS_LONG) \
		--no-run-experiments \
		--run-baselines \
	&& echo "Done running baselines"

# gcomp experiments
gcomp:
	echo "Running gcomp" \
	&& python3 run_experiments.py \
		--compilers gcomp \
		--typechecking gradual_proxy gradual \
		--cflags '$(CFLAGS_COMMON) -lgc' \
		--num-bins $(NUM_BINS) \
		--num-samples $(NUM_SAMPLES) \
		--num-runs $(NUM_RUNS_SHORT) \
	&& echo "Done running gcomp"

# grift experiments
grift:
	echo "Running grift" \
	&& python3 run_experiments.py \
		--compilers grift \
		--typechecking gradual_mono gradual \
		--cflags '$(CFLAGS_COMMON)' \
		--num-bins $(NUM_BINS) \
		--num-samples $(NUM_SAMPLES) \
		--num-runs $(NUM_RUNS_SHORT) \
	&& echo "Done running grift"

docker-build:
	docker build --platform linux/amd64 -t grev .
docker-run:
	docker run --platform linux/amd64 -it grev
docker-clean:
	docker rmi grev
