-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathMakefile
More file actions
172 lines (138 loc) · 4.97 KB
/
Makefile
File metadata and controls
172 lines (138 loc) · 4.97 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
PRIMARY_TARGET := $(firstword $(MAKECMDGOALS))
ARGS := $(filter-out $(PRIMARY_TARGET), $(MAKECMDGOALS))
RUN_TEST_CASE = _run_test_case() { \
case="$(filter-out $ARGS,$(MAKECMDGOALS))"; \
if [ -n "$${WORKFLOW}" ]; then \
export TEST_FLAG=" -- -q --test-threads=1"; \
else \
export TEST_FLAG=" -- --nocapture --test-threads=1"; \
export LOG_FILE="/tmp/test_crossfire.log"; \
fi; \
RUST_BACKTRACE=full cargo ${NIGHTLY} test -p crossfire-test ${ARGS} $${FEATURE_FLAG} $${TEST_FLAG}; \
}
RUN_RELEASE_CASE = _run_test_release_case() { \
case="$(filter-out $@,$(MAKECMDGOALS))"; \
if [ -n "$${WORKFLOW}" ]; then \
export TEST_FLAG=" --release -- -q --test-threads=1"; \
else \
export LOG_FILE="/tmp/test_crossfire.log"; \
export TEST_FLAG=" --release -- --nocapture --test-threads=1"; \
fi; \
RUST_BACKTRACE=full cargo ${NIGHTLY} test -p crossfire-test ${ARGS} $${FEATURE_FLAG} $${TEST_FLAG}; \
}
RUN_BENCH = _run_bench() { \
cd test-suite; \
cargo bench --bench ${ARGS}; \
}
INSTALL_GITHOOKS = _install_githooks() { \
git config core.hooksPath ./git-hooks; \
}
.PHONY: git-hooks
git-hooks:
@$(INSTALL_GITHOOKS); _install_githooks
.PHONY: init
init: git-hooks
.PHONY: fmt
fmt: init
cargo fmt
.PHONY: doc
doc:
RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --all-features
# usage:
# make test
# make test test_async
.PHONY: test
test: init
@echo "Run test"
@${RUN_TEST_CASE}; FEATURE_FLAG="-F tokio,time"; _run_test_case
@echo "Done"
# test with ringfile for deadlog
.PHONY: test_log
test_log: init
@echo "Run test"
@${RUN_TEST_CASE}; FEATURE_FLAG="-F tokio,time,trace_log"; _run_test_case
@echo "Done"
.PHONY: test_async_std
test_async_std: init
@echo "Run test"
@${RUN_TEST_CASE}; FEATURE_FLAG="-F async_std,time,"; _run_test_case
@echo "Done"
.PHONY: test_log_async_std
test_log_async_std: init
@echo "Run test"
@${RUN_TEST_CASE}; FEATURE_FLAG="-F async_std,time,trace_log"; _run_test_case
@echo "Done"
.PHONY: test_release
test_release:
@${RUN_RELEASE_CASE}; FEATURE_FLAG="-F tokio,time"; _run_test_release_case
# test with ringfile for deadlog
.PHONY: test_log_release
test_log_release:
@${RUN_RELEASE_CASE}; FEATURE_FLAG="-F tokio,time,trace_log"; _run_test_release_case
.PHONY: test_async_std_release
test_async_std_release:
@${RUN_RELEASE_CASE}; FEATURE_FLAG="-F async_std,time"; _run_test_release_case
# test with ringfile for deadlog
.PHONY: test_log_async_std_release
test_log_async_std_release:
@${RUN_RELEASE_CASE}; FEATURE_FLAG="-F async_std,time,trace_log"; _run_test_release_case
.PHONY: test_smol
test_smol:
@${RUN_TEST_CASE}; FEATURE_FLAG="-F smol,time"; _run_test_case
# test with ringfile for deadlog
.PHONY: test_log_smol
test_log_smol:
@${RUN_TEST_CASE}; FEATURE_FLAG="-F smol,time,trace_log"; _run_test_case
.PHONY: test_smol_release
test_smol_release:
@${RUN_RELEASE_CASE}; FEATURE_FLAG="-F smol,time"; _run_test_release_case
# test with ringfile for deadlog
.PHONY: test_log_smol_release
test_log_smol_release:
@${RUN_RELEASE_CASE}; FEATURE_FLAG="-F smol,trace_log,time"; _run_test_release_case
.PHONY: test_compio
test_compio:
@${RUN_TEST_CASE}; FEATURE_FLAG="-F compio"; _run_test_case
# test with ringfile for deadlog
.PHONY: test_log_compio
test_log_compio:
@${RUN_TEST_CASE}; FEATURE_FLAG="-F compio,trace_log"; _run_test_case
.PHONY: test_compio_release
test_compio_release:
@${RUN_RELEASE_CASE}; FEATURE_FLAG="-F compio"; _run_test_release_case
# test with ringfile for deadlog
.PHONY: test_log_compio_release
test_log_compio_release:
@${RUN_RELEASE_CASE}; FEATURE_FLAG="-F compio,trace_log"; _run_test_release_case
.PHONY: test_compio_dispatcher
test_compio_dispatcher:
@${RUN_TEST_CASE}; FEATURE_FLAG="-F compio_dispatcher"; _run_test_case
# test with ringfile for deadlog
.PHONY: test_log_compio_dispatcher
test_log_compio_dispatcher:
@${RUN_TEST_CASE}; FEATURE_FLAG="-F compio_dispatcher,trace_log"; _run_test_case
.PHONY: test_compio_dispatcher_release
test_compio_dispatcher_release:
@${RUN_RELEASE_CASE}; FEATURE_FLAG="-F compio_dispatcher"; _run_test_release_case
# test with ringfile for deadlog
.PHONY: test_log_compio_dispatcher_release
test_log_compio_dispatcher_release:
@${RUN_RELEASE_CASE}; FEATURE_FLAG="-F compio_dispatcher,trace_log"; _run_test_release_case
# Usage: make bench crossfire bounded_100_async_1_1
.PHONY: bench
bench:
@${RUN_BENCH}; _run_bench
.PHONY: test_leak
test_leak: test_internal
@${RUN_TEST_CASE}; NIGHTLY="+nightly" RUSTFLAGS="-Zsanitizer=leak"; _run_test_case
.PHONY: test_internal
test_internal:
RUSTFLAGS="-Zsanitizer=leak" cargo +nightly test -F trace_log --lib -- --nocapture ${ARGS}
.PHONY: build
build: init
cargo build
.DEFAULT_GOAL = build
# Target name % means that it is a rule that matches anything, @: is a recipe;
# the : means do nothing
%:
@: