.PHONY: all build test clean help generate-lexer
all: build test
build:
@echo "Building klex..."
cargo build
test: generate-lexer
@echo "Running tests..."
cargo test
@$(MAKE) clean-generated
generate-lexer:
@echo "Generating lexer from example.klex..."
cargo run example.klex
@echo "Copying generated lexer to tests directory..."
cp lexer.rs tests/example_lexer.rs
clean:
@echo "Cleaning build artifacts..."
cargo clean
clean-generated:
@echo "Cleaning generated files..."
@rm -f lexer.rs tests/example_lexer.rs
clean-all: clean clean-generated
check:
@echo "Checking code format..."
cargo fmt --check
@echo "Running clippy..."
cargo clippy -- -D warnings
fmt:
@echo "Formatting code..."
@ @if [ ! -f tests/example_lexer.rs ]; then touch tests/example_lexer.rs; fi
cargo fmt
@ @if [ ! -s tests/example_lexer.rs ]; then rm -f tests/example_lexer.rs; fi
demo: generate-lexer
@echo "Running demo..."
@echo "Generated lexer files:"
@ls -la lexer.rs tests/example_lexer.rs
@echo "\nFirst 50 lines of generated lexer:"
@head -50 lexer.rs
@$(MAKE) clean-generated
deps:
@echo "Installing dependencies..."
cargo fetch
release:
@echo "Building release version..."
cargo build --release
bench: generate-lexer
@echo "Running simple benchmark..."
@echo "Testing generated lexer performance (this may take a moment)..."
@echo 'fn main() { println!("Benchmark completed. See demo for actual performance test."); }' > bench_test.rs
@rustc bench_test.rs
@./bench_test
@rm -f bench_test bench_test.rs
@$(MAKE) clean-generated
dev: fmt build test
help:
@echo "Available targets:"
@echo " all - Build and test (default)"
@echo " build - Build the project"
@echo " test - Generate lexer and run tests"
@echo " clean - Clean build artifacts"
@echo " clean-all - Clean everything (build + generated files)"
@echo " check - Check formatting and run clippy"
@echo " fmt - Format code"
@echo " demo - Run demonstration"
@echo " bench - Run performance benchmark"
@echo " deps - Install dependencies"
@echo " release - Build release version"
@echo " dev - Development workflow (fmt + build + test)"
@echo " help - Show this help message"