CFLAGS = -g -Wall -Wextra -O2
check: check-vec check-spvec check-sptree check-map check-sp

# see scripts/coverage for coverage testing
TESTITER  = 1000
BENCHITER = 10000000

check-vec:
	mkdir -p build
	$(CC) $(CFLAGS) $(COVERAGEFLAGS) -DITER=$(TESTITER) \
		-Iinclude -Ideps/covsrv/include \
		deps/covsrv/src/client.c tests/vec.c -o build/vec
	./scripts/run-test ./build/vec

check-spvec:
	mkdir -p build
	$(CC) $(CFLAGS) $(COVERAGEFLAGS) -DITER=$(TESTITER) \
		-Iinclude -Ideps/covsrv/include \
		deps/covsrv/src/client.c tests/spvec.c -o build/spvec
	./scripts/run-test ./build/spvec

check-sptree:
	mkdir -p build
	$(CC) $(CFLAGS) $(COVERAGEFLAGS) -DITER=$(TESTITER) \
		-Iinclude -Ideps/covsrv/include \
		deps/covsrv/src/client.c tests/sptree.c -o build/sptree
	./scripts/run-test ./build/sptree

check-map:
	mkdir -p build
	$(CC) $(CFLAGS) $(COVERAGEFLAGS) -DITER=$(TESTITER) \
		-Iinclude -Ideps/covsrv/include \
		deps/covsrv/src/client.c tests/map.c -o build/map
	./scripts/run-test ./build/map

check-sp:
	mkdir -p build
	$(CC) $(CFLAGS) $(COVERAGEFLAGS) -DITER=$(TESTITER) \
		-Iinclude -Ideps/covsrv/include \
		deps/covsrv/src/client.c tests/sp.c -o build/sp
	./scripts/run-test ./build/sp

bench: bench-vec bench-spvec bench-sptree bench-map bench-sp

bench-vec:
	mkdir -p reports/vec
	$(CC) $(CFLAGS) -DITER=$(BENCHITER) \
		-Iinclude -Ideps/covsrv/include \
		tests/vec.c -o build/vec_opt
	time ./build/vec_opt 2> reports/vec/vec_bench.txt

bench-spvec:
	mkdir -p reports/spvec
	$(CC) $(CFLAGS) -DITER=$(BENCHITER)\
		-Iinclude -Ideps/covsrv/include \
		tests/spvec.c -o build/spvec_opt
	time ./build/spvec_opt 2> reports/spvec/spvec_bench.txt

bench-sptree:
	mkdir -p reports/sptree
	$(CC) $(CFLAGS) -DITER=$(BENCHITER) \
		-Iinclude -Ideps/covsrv/include \
		tests/sptree.c -o build/sptree_opt
	time ./build/sptree_opt 2> reports/sptree/sptree_bench.txt

bench-map:
	mkdir -p reports/map
	$(CC) $(CFLAGS) -DITER=$(BENCHITER) \
		-Iinclude -Ideps/covsrv/include \
		tests/map.c -o build/map_opt
	time ./build/map_opt 2> reports/map/map_bench.txt

bench-sp:
	mkdir -p reports/sp
	$(CC) $(CFLAGS) -DITER=$(BENCHITER) \
		-Iinclude -Ideps/covsrv/include \
		tests/sp.c -o build/sp_opt
	time ./build/sp_opt 2> reports/sp/sp_bench.txt

clean:
	rm -rf build
