134 lines
4.6 KiB
Makefile
134 lines
4.6 KiB
Makefile
.PHONY: help install install-rust install-python lint lint-rust lint-python test test-rust test-python docs clean \
|
|
docker-wheel docker-lint docker-test docker-docs docker-all
|
|
|
|
# Default target
|
|
help:
|
|
@echo "┌─────────────────────────────────────────────────────────┐"
|
|
@echo "│ NavalToolbox-lib Build System │"
|
|
@echo "└─────────────────────────────────────────────────────────┘"
|
|
@echo ""
|
|
@echo "Local targets:"
|
|
@echo " help - Show this help message"
|
|
@echo " install - Install everything (Rust + Python)"
|
|
@echo " install-rust - Build Rust library"
|
|
@echo " install-python - Build and install Python wheel"
|
|
@echo " lint - Lint all code (Rust + Python)"
|
|
@echo " lint-rust - Lint Rust code (cargo clippy)"
|
|
@echo " lint-python - Lint Python code (flake8)"
|
|
@echo " test - Run all tests (Rust + Python)"
|
|
@echo " test-rust - Run Rust tests only"
|
|
@echo " test-python - Run Python tests only"
|
|
@echo " docs - Build Sphinx documentation"
|
|
@echo " docs-open - Build and open documentation"
|
|
@echo " clean - Remove build artifacts"
|
|
@echo ""
|
|
@echo "Docker targets:"
|
|
@echo " docker-wheel - Build Python wheel using Docker"
|
|
@echo " docker-test - Run all tests in Docker"
|
|
@echo " docker-docs - Build documentation in Docker"
|
|
@echo " docker-all - Build everything in Docker"
|
|
|
|
# ============================================================================
|
|
# Local targets
|
|
# ============================================================================
|
|
|
|
# Install everything
|
|
install: install-rust install-python
|
|
@echo "✅ NavalToolbox installed successfully!"
|
|
|
|
# Build Rust library
|
|
install-rust:
|
|
@echo "🦀 Building Rust library..."
|
|
cd rust && cargo build --release
|
|
@echo "✅ Rust library built!"
|
|
|
|
# Build and install Python wheel
|
|
install-python:
|
|
@echo "🐍 Building Python wheel..."
|
|
cd python && maturin develop --release
|
|
@echo "✅ Python package installed!"
|
|
|
|
# Lint everything
|
|
lint: lint-rust lint-python
|
|
@echo "✅ All linting complete!"
|
|
|
|
# Lint Rust code
|
|
lint-rust:
|
|
@echo "🔍 Linting Rust code..."
|
|
cd rust && cargo clippy -- -D warnings
|
|
cd rust && cargo fmt --all -- --check
|
|
@echo "✅ Rust linting complete!"
|
|
|
|
# Lint Python code
|
|
lint-python:
|
|
@echo "🔍 Linting Python code..."
|
|
cd python && python3 -m flake8 . --count --statistics
|
|
@echo "✅ Python linting complete!"
|
|
|
|
# Run all tests
|
|
test: test-rust test-python
|
|
@echo "✅ All tests passed!"
|
|
|
|
# Run Rust tests only
|
|
test-rust:
|
|
@echo "🦀 Running Rust tests..."
|
|
cd rust && cargo test
|
|
@echo "✅ Rust tests passed!"
|
|
|
|
# Run Python tests only
|
|
test-python:
|
|
@echo "🐍 Running Python tests..."
|
|
cd python && python -m pytest tests/ -v
|
|
@echo "✅ Python tests passed!"
|
|
|
|
# Build documentation
|
|
docs:
|
|
@echo "📚 Building Sphinx documentation..."
|
|
cd docs && make html
|
|
@echo "✅ Documentation built: docs/build/html/index.html"
|
|
|
|
# Build and open documentation
|
|
docs-open: docs
|
|
@echo "🌐 Opening documentation..."
|
|
open docs/build/html/index.html
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
@echo "🧹 Cleaning build artifacts..."
|
|
rm -rf rust/target/
|
|
rm -rf python/.venv/
|
|
rm -rf docs/build/
|
|
rm -rf dist/
|
|
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
|
|
find . -type d -name .pytest_cache -exec rm -rf {} + 2>/dev/null || true
|
|
find . -type f -name "*.pyc" -delete 2>/dev/null || true
|
|
@echo "✅ Clean complete!"
|
|
|
|
# ============================================================================
|
|
# Docker targets
|
|
# ============================================================================
|
|
|
|
# Build Python wheel using Docker
|
|
docker-wheel:
|
|
@echo "🐳 Building Python wheel in Docker..."
|
|
docker build -t navaltoolbox-builder --target builder -f Dockerfile .
|
|
docker run --rm -v $(PWD)/dist:/output navaltoolbox-builder
|
|
@echo "✅ Wheel built in dist/ directory"
|
|
|
|
# Run tests in Docker
|
|
docker-test:
|
|
@echo "🐳 Running tests in Docker..."
|
|
docker build -t navaltoolbox-test --target test -f Dockerfile .
|
|
docker run --rm navaltoolbox-test
|
|
|
|
# Build documentation in Docker
|
|
docker-docs:
|
|
@echo "🐳 Building documentation in Docker..."
|
|
docker build -t navaltoolbox-docs --target docs -f Dockerfile .
|
|
docker run --rm -v $(PWD)/docs/build:/app/docs/build navaltoolbox-docs
|
|
@echo "✅ Documentation built: docs/build/html/index.html"
|
|
|
|
# Build everything in Docker
|
|
docker-all: docker-wheel docker-test docker-docs
|
|
@echo "✅ Docker build complete!"
|