# ==============================================================================
# Makefile for LittleDef / FEPro Documentation and Presentations
# ==============================================================================

LATEX ?= pdflatex
PYTHON ?= python3
TCLSH ?= tclsh

# TeX documents to build (using standard article/landscape layouts)
TEX_SRCS = \
	concrete_design_presentation.tex \
	ec_design_formulas_presentation.tex \
	nonlinear_analysis_presentation.tex \
	soil_modelling_presentation.tex

# Optional beamer presentation (built if pgf package is installed)
BEAMER_SRCS = presentation.tex

TEX_PDFS = $(TEX_SRCS:.tex=.pdf)
BEAMER_PDFS = $(BEAMER_SRCS:.tex=.pdf)

# Python diagram generation scripts
PY_SCRIPTS = \
	generate_schemes.py \
	generate_detail_schemes.py \
	generate_results_plots.py \
	generate_advanced_plots.py \
	generate_ec_plots.py \
	generate_sensitivity_plots.py \
	generate_structure_renderings.py \
	generate_creep_plot.py \
	generate_fire_image.py \
	generate_frame_stability_image.py

# Tcl rendering scripts
TCL_SCRIPTS = \
	render_all_models.tcl \
	render_soil_model.tcl

.PHONY: all pdf beamer plots renders clean

all: pdf

pdf: $(TEX_PDFS)

beamer: $(BEAMER_PDFS)

plots:
	@echo "Generating Python diagram and scheme images..."
	@for script in $(PY_SCRIPTS); do \
		echo "Running $$script..."; \
		$(PYTHON) $$script || exit 1; \
	done

renders:
	@echo "Running Tcl model rendering scripts..."
	@for script in $(TCL_SCRIPTS); do \
		echo "Running $$script..."; \
		$(TCLSH) $$script || exit 1; \
	done

%.pdf: %.tex
	-$(LATEX) -interaction=nonstopmode $<
	-$(LATEX) -interaction=nonstopmode $<

clean:
	rm -f *.aux *.log *.nav *.out *.snm *.toc *.vrb *.dvi *.bbl *.blg
	rm -f $(TEX_PDFS) $(BEAMER_PDFS)
