summaryrefslogtreecommitdiffstats
path: root/Makefile
blob: 68d58243e8955dd63cabc01988358ebdad7920d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
docker_image = docker_developer_environment

help:
	$(info -Targets -----------------------------------------------------------------------------)
	$(info -Development Targets -----------------------------------------------------------------)
	$(info lint                         | run lints with clippy)
	$(info benchmark                    | just for fun, really)
	$(info profile                      | only on linux - run callgrind and annotate it)
	$(info tests                        | run all tests)
	$(info unit-tests                   | run all unit tests)
	$(info continuous-unit-tests        | run all unit tests whenever something changes)
	$(info journey-tests                | run all stateless journey test)
	$(info continuous-journey-tests     | run all stateless journey test whenever something changes)
	$(info -- Use docker for all dependencies - run make interactively from there ----------------)
	$(info interactive-developer-environment-in-docker | gives you everything you need to run all targets)

always:

interactive-developer-environment-in-docker:
	docker build -t $(docker_image) - < etc/developer.Dockerfile
	docker run -v $$PWD:/volume -w /volume -it $(docker_image)

target/debug/dua: always
	cargo build

target/release/dua: always
	cargo build --release

lint:
	cargo clippy

profile: target/release/dua
	valgrind --callgrind-out-file=callgrind.profile --tool=callgrind  $< >/dev/null
	callgrind_annotate --auto=yes callgrind.profile

benchmark: target/release/dua
	hyperfine '$<'

tests: unit-tests journey-tests

unit-tests:
	cargo test --bin dua

continuous-unit-tests:
	watchexec $(MAKE) unit-tests

journey-tests: target/debug/dua
	./tests/stateless-journey.sh $<

continuous-journey-tests:
	watchexec $(MAKE) journey-tests