Operational-Premise-Taxonomy/paper/Makefile

65 lines
2.0 KiB
Makefile

# ============================================================
# Makefile for Operational-Premise Taxonomy (OPT)
# Builds: arXiv (article), IEEE, ACM, Kaobook
# Author: Wesley R. Elsberry
# ============================================================
LATEXMK := $(shell command -v latexmk 2>/dev/null)
PDFLATEX := pdflatex
BIBTEX := bibtex
ARXIV = main
IEEE = main_ieee
ACM = main_acm
KAO = main_kaobook
ALLPDF = $(ARXIV).pdf $(IEEE).pdf $(ACM).pdf $(KAO).pdf
.PHONY: all arxiv ieee acm kaobook clean distclean help
# ------------------------------------------------------------
# Top-level build targets
# ------------------------------------------------------------
all: $(ALLPDF)
arxiv: $(ARXIV).pdf
ieee: $(IEEE).pdf
acm: $(ACM).pdf
kaobook: $(KAO).pdf
# ------------------------------------------------------------
# Pattern rule for building PDFs
# ------------------------------------------------------------
ifeq ($(LATEXMK),)
# --- Fallback to manual build sequence
%.pdf: %.tex references.bib
$(PDFLATEX) -interaction=nonstopmode $*
$(BIBTEX) $* || true
$(PDFLATEX) -interaction=nonstopmode $*
$(PDFLATEX) -interaction=nonstopmode $*
else
# --- Preferred build with latexmk
%.pdf: %.tex references.bib
latexmk -pdf -interaction=nonstopmode -halt-on-error $<
endif
# ------------------------------------------------------------
# Cleanup targets
# ------------------------------------------------------------
clean:
@rm -f *.aux *.bbl *.blg *.log *.out *.toc *.lof *.lot *.nav *.snm *.fls \
*.fdb_latexmk *.run.xml *.bcf *.synctex.gz *.tdo *.dvi *.ps
distclean: clean
@rm -f $(ALLPDF)
help:
@echo "Usage:"
@echo " make all # build all versions (default)"
@echo " make arxiv # build main.pdf (arXiv/preprint)"
@echo " make ieee # build main_ieee.pdf"
@echo " make acm # build main_acm.pdf"
@echo " make kaobook # build main_kaobook.pdf"
@echo " make clean # remove aux files"
@echo " make distclean # remove aux + PDFs"