# MetaUML diagrams: MetaPost -> EPS (fig*.N) -> PDF (fig*-N.pdf)
#
# Usage:
#   make            # mpost then epspdf (default)
#   make mpost      # MetaPost only
#   make pdf        # epspdf only (expects fig*.N)
#   make clean      # remove mpost artifacts + generated fig*.pdf
#   make distclean  # same as clean (kept for habit / scripts)
#   make help

SHELL := /bin/bash
.PHONY: all mpost pdf png eps clean distclean help

PDF_OUTDIR := ../pdf
PNG_OUTDIR := ../png
PNG_DPI ?= 200

all:
	@$(MAKE) mpost
	@$(MAKE) pdf

mpost:
	@set -euo pipefail; shopt -s nullglob; \
	for f in fig*.mp; do \
	  echo "mpost: $$f"; \
	  mpost -interaction=nonstopmode "$$f"; \
	done; shopt -u nullglob

pdf: mpost
	@set -euo pipefail; shopt -s nullglob; \
	mkdir -p "$(PDF_OUTDIR)"; \
	for eps in fig*.[0-9] fig*.[0-9][0-9]; do \
	  [[ -f "$$eps" ]] || continue; \
	  base=$${eps%.*}; num=$${eps##*.}; out="$(PDF_OUTDIR)/$$base-$$num.pdf"; \
	  echo "epspdf: $$eps -> $$out"; \
	  epspdf "$$eps" "$$out"; \
	done; shopt -u nullglob

png: pdf
	@set -euo pipefail; shopt -s nullglob; \
	mkdir -p "$(PNG_OUTDIR)"; \
	for eps in fig*.[0-9] fig*.[0-9][0-9]; do \
	  [[ -f "$$eps" ]] || continue; \
	  base=$${eps%.*}; num=$${eps##*.}; \
	  pdf="$(PDF_OUTDIR)/$$base-$$num.pdf"; \
	  if [[ ! -f "$$pdf" ]]; then \
	    echo "warning: missing pdf $$pdf; skipping"; \
	    continue; \
	  fi; \
	  prefix="$(PNG_OUTDIR)/$$base-$$num"; \
	  echo "pdftoppm: $$pdf -> $${prefix}-1.png"; \
	  pdftoppm -png -r "$(PNG_DPI)" -f 1 -l 1 "$$pdf" "$$prefix"; \
	  mv -f "$${prefix}-1.png" "$$prefix.png"; \
	done; shopt -u nullglob

eps: mpost

clean:
	@shopt -s nullglob; rm -f -- *.log *.mps fig*.[0-9] fig*.[0-9][0-9] fig*.[0-9] fig*.[0-9][0-9] fig*.pdf; \
	  rm -f -- "$(PDF_OUTDIR)"/fig*.pdf; \
	  rm -f -- "$(PNG_OUTDIR)"/fig*.png; \
	  shopt -u nullglob

distclean: clean

help:
	@echo 'Usage: make [TARGET]'
	@echo ''
	@echo '  all        mpost on fig*.mp, then epspdf each fig*.N -> ../pdf/fig*-N.pdf (default)'
	@echo '  mpost      MetaPost only (EPS fig*.1, fig*.2, ...)'
	@echo '  pdf        epspdf only -> ../pdf/fig*-N.pdf'
	@echo '  png        pdftoppm PNG previews -> ../png/fig*-N.png'
	@echo '  clean      Remove *.log, *.mps, fig*.N, fig*.pdf and generated ../pdf/../png artifacts'
	@echo '  distclean  same as clean'
	@echo ''
	@echo 'Requires: mpost (MetaPost), epspdf (TeX Live or standalone).'
