Files
wifi-densepose/vendor/ruvector/examples/scipix/Makefile

193 lines
5.9 KiB
Makefile

.PHONY: build test bench lint fmt clean wasm install dev coverage audit help
# Default target
.DEFAULT_GOAL := help
# Colors for output
RED := \033[0;31m
GREEN := \033[0;32m
YELLOW := \033[0;33m
BLUE := \033[0;34m
NC := \033[0m # No Color
help: ## Show this help message
@echo "$(BLUE)RuVector Mathpix - Development Commands$(NC)"
@echo ""
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " $(GREEN)%-15s$(NC) %s\n", $$1, $$2}'
build: ## Build the project in release mode
@echo "$(BLUE)Building RuVector Mathpix...$(NC)"
cargo build --release --all-features
build-dev: ## Build the project in development mode
@echo "$(BLUE)Building RuVector Mathpix (dev)...$(NC)"
cargo build --all-features
test: ## Run all tests
@echo "$(BLUE)Running tests...$(NC)"
cargo test --all-features --verbose
test-unit: ## Run unit tests only
@echo "$(BLUE)Running unit tests...$(NC)"
cargo test --lib --all-features
test-integration: ## Run integration tests only
@echo "$(BLUE)Running integration tests...$(NC)"
cargo test --test '*' --all-features
test-doc: ## Run documentation tests
@echo "$(BLUE)Running documentation tests...$(NC)"
cargo test --doc
bench: ## Run benchmarks
@echo "$(BLUE)Running benchmarks...$(NC)"
cargo bench --all-features
bench-baseline: ## Run benchmarks and save as baseline
@echo "$(BLUE)Running benchmarks (saving baseline)...$(NC)"
cargo bench --all-features -- --save-baseline main
bench-compare: ## Compare benchmarks against baseline
@echo "$(BLUE)Comparing benchmarks against baseline...$(NC)"
cargo bench --all-features -- --baseline main
lint: ## Run linting checks
@echo "$(BLUE)Running linting...$(NC)"
cargo clippy --all-features --all-targets -- -D warnings
cargo fmt --check
fmt: ## Format code
@echo "$(BLUE)Formatting code...$(NC)"
cargo fmt
fix: ## Auto-fix linting issues
@echo "$(BLUE)Auto-fixing linting issues...$(NC)"
cargo clippy --all-features --all-targets --fix --allow-dirty --allow-staged
cargo fmt
clean: ## Clean build artifacts
@echo "$(BLUE)Cleaning build artifacts...$(NC)"
cargo clean
rm -rf target/
rm -rf pkg/
rm -rf node_modules/
wasm: ## Build WebAssembly package
@echo "$(BLUE)Building WebAssembly package...$(NC)"
wasm-pack build --target web --features wasm
wasm-test: ## Test WebAssembly package
@echo "$(BLUE)Testing WebAssembly package...$(NC)"
wasm-pack test --headless --firefox --chrome
install: ## Install development dependencies
@echo "$(BLUE)Installing development dependencies...$(NC)"
rustup update stable
rustup component add rustfmt clippy
cargo install cargo-tarpaulin cargo-audit cargo-deny cargo-license
cargo install wasm-pack
@echo "$(GREEN)Development environment ready!$(NC)"
dev: ## Setup complete development environment
@echo "$(BLUE)Setting up development environment...$(NC)"
./scripts/setup_dev.sh
@echo "$(GREEN)Development environment setup complete!$(NC)"
coverage: ## Generate code coverage report
@echo "$(BLUE)Generating coverage report...$(NC)"
cargo tarpaulin --all-features --out Html --output-dir coverage
@echo "$(GREEN)Coverage report generated at coverage/index.html$(NC)"
coverage-ci: ## Generate coverage for CI (XML format)
@echo "$(BLUE)Generating coverage for CI...$(NC)"
cargo tarpaulin --all-features --out Xml --output-dir coverage --fail-under 80
audit: ## Run security audit
@echo "$(BLUE)Running security audit...$(NC)"
cargo audit
cargo deny check
doc: ## Generate documentation
@echo "$(BLUE)Generating documentation...$(NC)"
cargo doc --all-features --no-deps --open
doc-private: ## Generate documentation including private items
@echo "$(BLUE)Generating documentation (with private items)...$(NC)"
cargo doc --all-features --no-deps --document-private-items --open
check: ## Run all checks (lint, test, audit)
@echo "$(BLUE)Running all checks...$(NC)"
@make lint
@make test
@make audit
@echo "$(GREEN)All checks passed!$(NC)"
ci: ## Run CI pipeline locally
@echo "$(BLUE)Running CI pipeline...$(NC)"
@make lint
@make test
@make bench
@make wasm
@make coverage-ci
@make audit
@echo "$(GREEN)CI pipeline completed!$(NC)"
release: ## Build optimized release binary
@echo "$(BLUE)Building optimized release...$(NC)"
RUSTFLAGS="-C target-cpu=native" cargo build --release --all-features
strip target/release/libruvector_scipix.*
@echo "$(GREEN)Release binary ready at target/release/$(NC)"
profile: ## Run performance profiling
@echo "$(BLUE)Running performance profiling...$(NC)"
cargo build --profile bench
perf record -g target/release/scipix-benchmark
perf report
flamegraph: ## Generate flamegraph
@echo "$(BLUE)Generating flamegraph...$(NC)"
cargo flamegraph --bench scipix_benchmark -- --bench
@echo "$(GREEN)Flamegraph generated at flamegraph.svg$(NC)"
models: ## Download ONNX models
@echo "$(BLUE)Downloading ONNX models...$(NC)"
./scripts/download_models.sh
@echo "$(GREEN)Models downloaded to models/$(NC)"
watch: ## Watch for changes and rebuild
@echo "$(BLUE)Watching for changes...$(NC)"
cargo watch -x build
watch-test: ## Watch for changes and run tests
@echo "$(BLUE)Watching for changes and running tests...$(NC)"
cargo watch -x test
update: ## Update dependencies
@echo "$(BLUE)Updating dependencies...$(NC)"
cargo update
@echo "$(GREEN)Dependencies updated!$(NC)"
outdated: ## Check for outdated dependencies
@echo "$(BLUE)Checking for outdated dependencies...$(NC)"
cargo outdated
tree: ## Show dependency tree
@echo "$(BLUE)Dependency tree:$(NC)"
cargo tree --all-features
bloat: ## Analyze binary size
@echo "$(BLUE)Analyzing binary size...$(NC)"
cargo bloat --release --crates
times: ## Show compilation times
@echo "$(BLUE)Compilation times:$(NC)"
cargo build --release --timings
verify: ## Verify project is ready for commit
@echo "$(BLUE)Verifying project...$(NC)"
@make fmt
@make lint
@make test
@make doc
@echo "$(GREEN)Project verified and ready for commit!$(NC)"