BINARY_NAME := ekphos
VERSION := 0.7.0
BUILD_DIR := target
RELEASE_DIR := $(BUILD_DIR)/release
DEBUG_DIR := $(BUILD_DIR)/debug
PREFIX ?= /usr/local
BINDIR := $(PREFIX)/bin
MANDIR := $(PREFIX)/share/man/man1
COMPLETIONS_DIR := $(PREFIX)/share/bash-completion/completions
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
PLATFORM := macos
endif
ifeq ($(UNAME_S),Linux)
PLATFORM := linux
endif
.PHONY: all build release debug clean install uninstall help test check fmt lint run
all: release
release:
@echo "Building release version..."
cargo build --release
@echo "Binary available at $(RELEASE_DIR)/$(BINARY_NAME)"
debug:
@echo "Building debug version..."
cargo build
@echo "Binary available at $(DEBUG_DIR)/$(BINARY_NAME)"
build: release
run:
cargo run
run-release:
cargo run --release
test:
cargo test
check:
cargo check
fmt:
cargo fmt
fmt-check:
cargo fmt -- --check
lint:
cargo clippy -- -D warnings
clean:
cargo clean
@echo "Cleaned build artifacts"
install: release
@echo "Installing $(BINARY_NAME) to $(BINDIR)..."
@mkdir -p $(BINDIR)
@cp $(RELEASE_DIR)/$(BINARY_NAME) $(BINDIR)/$(BINARY_NAME)
@chmod 755 $(BINDIR)/$(BINARY_NAME)
@echo "Installation complete!"
@echo "Run '$(BINARY_NAME)' to start"
uninstall:
@echo "Uninstalling $(BINARY_NAME)..."
@rm -f $(BINDIR)/$(BINARY_NAME)
@echo "Uninstallation complete!"
install-user: release
@echo "Installing $(BINARY_NAME) to ~/.local/bin..."
@mkdir -p ~/.local/bin
@cp $(RELEASE_DIR)/$(BINARY_NAME) ~/.local/bin/$(BINARY_NAME)
@chmod 755 ~/.local/bin/$(BINARY_NAME)
@echo "Installation complete!"
@echo "Make sure ~/.local/bin is in your PATH"
uninstall-user:
@rm -f ~/.local/bin/$(BINARY_NAME)
@echo "Uninstalled from ~/.local/bin"
dist: release
@echo "Creating distribution tarball..."
@mkdir -p dist
@tar -czvf dist/$(BINARY_NAME)-$(VERSION)-$(PLATFORM)-$(shell uname -m).tar.gz \
-C $(RELEASE_DIR) $(BINARY_NAME)
@echo "Distribution tarball created at dist/"
deb: release
@echo "Creating .deb package..."
@mkdir -p pkg/deb/$(BINARY_NAME)_$(VERSION)_amd64/DEBIAN
@mkdir -p pkg/deb/$(BINARY_NAME)_$(VERSION)_amd64/usr/bin
@cp $(RELEASE_DIR)/$(BINARY_NAME) pkg/deb/$(BINARY_NAME)_$(VERSION)_amd64/usr/bin/
@echo "Package: $(BINARY_NAME)" > pkg/deb/$(BINARY_NAME)_$(VERSION)_amd64/DEBIAN/control
@echo "Version: $(VERSION)" >> pkg/deb/$(BINARY_NAME)_$(VERSION)_amd64/DEBIAN/control
@echo "Section: utils" >> pkg/deb/$(BINARY_NAME)_$(VERSION)_amd64/DEBIAN/control
@echo "Priority: optional" >> pkg/deb/$(BINARY_NAME)_$(VERSION)_amd64/DEBIAN/control
@echo "Architecture: amd64" >> pkg/deb/$(BINARY_NAME)_$(VERSION)_amd64/DEBIAN/control
@echo "Maintainer: Ekphos Contributors" >> pkg/deb/$(BINARY_NAME)_$(VERSION)_amd64/DEBIAN/control
@echo "Description: Ekphos - A lightweight terminal-based markdown research tool" >> pkg/deb/$(BINARY_NAME)_$(VERSION)_amd64/DEBIAN/control
@dpkg-deb --build pkg/deb/$(BINARY_NAME)_$(VERSION)_amd64
@mv pkg/deb/$(BINARY_NAME)_$(VERSION)_amd64.deb dist/ 2>/dev/null || true
@echo "Package created at dist/$(BINARY_NAME)_$(VERSION)_amd64.deb"
rpm: release
@echo "Creating .rpm package requires rpmbuild..."
@echo "Use 'cargo install cargo-rpm' and 'cargo rpm build' instead"
help:
@echo "Ekphos - A lightweight terminal-based markdown research tool"
@echo ""
@echo "Usage: make [target]"
@echo ""
@echo "Targets:"
@echo " all Build release version (default)"
@echo " release Build optimized release binary"
@echo " debug Build debug binary"
@echo " build Alias for release"
@echo " run Run in debug mode"
@echo " run-release Run in release mode"
@echo " test Run tests"
@echo " check Check code without building"
@echo " fmt Format code with rustfmt"
@echo " lint Lint code with clippy"
@echo " clean Remove build artifacts"
@echo " install Install to $(BINDIR) (requires sudo)"
@echo " uninstall Remove from $(BINDIR) (requires sudo)"
@echo " install-user Install to ~/.local/bin"
@echo " uninstall-user Remove from ~/.local/bin"
@echo " dist Create distribution tarball"
@echo " deb Create .deb package"
@echo " help Show this help message"
@echo ""
@echo "Variables:"
@echo " PREFIX Installation prefix (default: /usr/local)"
@echo ""
@echo "Examples:"
@echo " make @echo " make install @echo " sudo make install @echo " make PREFIX=~/.local install