-
-
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: