CARGO ?= cargo
CARGO_NIGHTLY ?= cargo +nightly
RUSTC_FLAGS := --features=capi -- -C panic=abort
CARGO_FLAGS ?=
SRC_FILES = $(shell find . -name '*.rs')
.DEFAULT: debug
.PHONY: debug
debug: target/debug
target/debug: $(SRC_FILES)
$(CARGO) $(CARGO_FLAGS) rustc --crate-type=cdylib $(RUSTC_FLAGS)
$(CARGO) $(CARGO_FLAGS) rustc --crate-type=staticlib $(RUSTC_FLAGS)
.PHONY: release
release: target/release
target/release: $(SRC_FILES)
$(CARGO) $(CARGO_FLAGS) rustc --release --crate-type=cdylib $(RUSTC_FLAGS)
$(CARGO) $(CARGO_FLAGS) rustc --release --crate-type=staticlib $(RUSTC_FLAGS)
.PHONY: smoke-test
smoke-test:
make -C examples smoke-test
.PHONY: clean
clean:
-rm -rf target/
.PHONY: lint
lint: lint-rust
.PHONY: lint-rust
lint-rust:
$(CARGO_NIGHTLY) fmt --all -- --check
$(CARGO) clippy --all-features --all-targets
$(CARGO) check --all-features --all-targets
.PHONY: test-rust-doctest
test-rust-doctest:
$(CARGO_NIGHTLY) llvm-cov --no-report --branch --all-features --doc
.PHONY: test-rust-unpriv
test-rust-unpriv:
$(CARGO_NIGHTLY) llvm-cov --no-report --branch --features capi nextest --no-fail-fast
.PHONY: test-rust-root
test-rust-root:
CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER='sudo -E' \
$(CARGO_NIGHTLY) llvm-cov --no-report --branch --features capi,_test_as_root nextest --no-fail-fast
.PHONY: test-rust
test-rust:
-rm -rf target/llvm-cov*
make test-rust-{doctest,unpriv,root}
.PHONY: test
test: test-rust
$(CARGO_NIGHTLY) llvm-cov report
$(CARGO_NIGHTLY) llvm-cov report --open
.PHONY: docs
docs:
$(CARGO) doc --all-features --document-private-items --open
.PHONY: install
install: release
@echo "If you want to configure the install paths, use ./install.sh directly."
@echo "[Sleeping for 3 seconds.]"
@sleep 3s
./install.sh