-
-
Save mzabaluev/502307bb41ba6268594f to your computer and use it in GitHub Desktop.
CARGO = cargo | |
CARGO_OPTS = | |
all: | |
$(MAKE) build | |
$(MAKE) doc | |
build: | |
$(CARGO) $(CARGO_OPTS) build | |
clean: | |
$(CARGO) $(CARGO_OPTS) clean | |
check: | |
$(MAKE) build | |
$(MAKE) test | |
test: | |
$(CARGO) $(CARGO_OPTS) test | |
bench: | |
$(CARGO) $(CARGO_OPTS) bench | |
doc: | |
$(CARGO) $(CARGO_OPTS) doc | |
.PHONY: all build clean check test bench doc |
Hi Mikhail!
First off: Thanks for the cargo Makefile! Very helpful!
Mind having a look at my modified version?
I'm wondering whether it is safe to turn the calls to $(MAKE) into dependences considering a potential make -j
call. I suspect it is a good choice for make all
, where one does not care about the order the two calls are executed. Could it be a problem for make check
? I.e., could the test be run while the build is in progress?
Also is there a reason to have CARGO_OPTS
?
I believe @NichtJens is correct, cargo
obtains a lock to build a project, and so the parallelization will be lost. No harm done though, since they'll still execute, just out of order - and cargo
has proper dependency resolution so they'll end up actually building in the correct order on that end.
Cargo is, by itself, a good build system for Rust-only projects.
However, integration with make is sometimes needed. Possible reasons include: