# Minimal makefile for Sphinx documentation
#

# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS    ?=
SPHINXBUILD   ?= sphinx-build
SPHINXMULTIVERSION ?= python3 build_multiversion.py
SOURCEDIR     = .
BUILDDIR      = _build

# Put it first so that "make" without argument is like "make help".
help:
	@echo "Usage:"
	@echo "  make html          - Build single-version HTML (fast, for development)"
	@echo "  make multiversion  - Build all versions with sphinx-multiversion"
	@echo "  make clean         - Remove build directory"
	@echo ""
	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

.PHONY: help Makefile generate-versions multiversion clean

# Generate versions.js from git tags before building
generate-versions:
	@python3 generate_versions.py

# Build all documentation versions using sphinx-multiversion
# NOTE: This target should only be run from the main branch to ensure
# the root docs correctly represent "main (dev)". For local development
# on feature branches, use "make html" instead.
# GitHub Actions workflow runs this on main branch only.
multiversion: generate-versions
	@cd .. && python3 -m setuptools_scm --force-write-version-files
	@export LC_ALL=C.UTF-8; $(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
	@echo "Building versioned docs from tags..."
	@export LC_ALL=C.UTF-8; $(SPHINXMULTIVERSION) "$(SOURCEDIR)" "$(BUILDDIR)/html" $(SPHINXOPTS) $(O)
	@mkdir -p $(BUILDDIR)/html/_static
	@cp -f _static/versions.js $(BUILDDIR)/html/_static/ 2>/dev/null || true
	@cp -f _static/version-selector.js $(BUILDDIR)/html/_static/ 2>/dev/null || true

# Clean build directory
clean:
	@rm -rf $(BUILDDIR)

# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
# This builds single-version only (fast for development).
%: Makefile generate-versions
	@cd .. && python3 -m setuptools_scm --force-write-version-files
	@export LC_ALL=C.UTF-8; $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
