VENV     := .venv
PYTHON   := $(VENV)/bin/python
PIP      := $(VENV)/bin/pip
MKDOCS   := $(VENV)/bin/mkdocs

CARGO_DIR := src

DOC_DIR  := docmd
DOC_FILE := mkdocs.yml
DOC_SITE := doc
DOC_PORT := 8001

# ── virtualenv ────────────────────────────────────────────────────────────────

$(VENV)/bin/activate:
	python3 -m venv $(VENV)

$(MKDOCS): $(VENV)/bin/activate
	$(PIP) install --quiet --upgrade pip
	$(PIP) install --quiet \
		livereload watchdog \
		mkdocs mkdocs-material \
		mkdocs-mermaid2-plugin \
		mkdocs-bibtex

# ── obikmer binary ───────────────────────────────────────────────────────────

PROFILE_FILE := profile.pb
PPROF_PORT   := 8081

.PHONY: obikmer
obikmer:
	cargo build --release --manifest-path $(CARGO_DIR)/Cargo.toml --bin obikmer

.PHONY: debug
debug:
	cargo build --manifest-path $(CARGO_DIR)/Cargo.toml --bin obikmer

.PHONY: profile-build
profile-build:
	cargo build --release --manifest-path $(CARGO_DIR)/Cargo.toml \
	            --bin obikmer --features obikmer/profiling

.PHONY: profile-view
profile-view:
	go tool pprof -http=127.0.0.1:$(PPROF_PORT) $(PROFILE_FILE)
# ── documentation ─────────────────────────────────────────────────────────────

.PHONY: doc
doc: $(MKDOCS)
	$(MKDOCS) build -f $(DOC_FILE)

.PHONY: doc-serve
doc-serve: $(MKDOCS)
	$(MKDOCS) serve -f $(DOC_FILE) \
	                --dev-addr=127.0.0.1:$(DOC_PORT) \
	                --livereload
.PHONY: clean-doc
clean-doc:
	rm -rf $(DOC_SITE)/

.PHONY: clean
clean: clean-doc
	rm -rf $(VENV)
