2021-08-08 01:54:37 +03:00
|
|
|
#----------------------------------------------------------------------
|
2021-11-15 18:27:46 +03:00
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# Main targets:
|
2021-11-28 00:29:09 +03:00
|
|
|
# doc - build class documentation
|
|
|
|
|
# dist - build a distributable zip
|
|
|
|
|
# install - install to user home latex path
|
|
|
|
|
# uninstall - uninstall/remove from user home latex path
|
|
|
|
|
# install-local - install to local latex path
|
|
|
|
|
# (may require elevated privileges)
|
|
|
|
|
# uninstall-local - uninstall/remove from local latex path
|
|
|
|
|
# (may require elevated privileges)
|
2021-11-15 18:27:46 +03:00
|
|
|
#
|
|
|
|
|
# Other targets:
|
2021-11-28 00:29:09 +03:00
|
|
|
# sweep - cleanup auxiliary generated files
|
|
|
|
|
# clean - cleanup repo
|
|
|
|
|
#
|
|
|
|
|
# Variables:
|
|
|
|
|
# STRIP_CODE - if "yes" strip docs from installed code
|
|
|
|
|
# (only for install and install-local targets)
|
|
|
|
|
# INSTALL_PATH - install path
|
|
|
|
|
# (only for install target)
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
# Examples:
|
|
|
|
|
#
|
|
|
|
|
# $ INSTALL_PATH=./test STRIP_CODE=no make install
|
|
|
|
|
# install to "./test" and do not strip docs.
|
2021-11-15 18:27:46 +03:00
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
#----------------------------------------------------------------------
|
2021-11-27 13:18:11 +03:00
|
|
|
# Config...
|
2021-08-08 01:54:37 +03:00
|
|
|
|
2021-11-14 13:42:06 +03:00
|
|
|
# NOTE: this makes things run consistently on different systems including
|
|
|
|
|
# things like Android...
|
|
|
|
|
SHELL := bash
|
2021-08-08 01:54:37 +03:00
|
|
|
|
2021-11-27 13:18:11 +03:00
|
|
|
MODULE := photobook
|
2021-11-14 13:42:06 +03:00
|
|
|
|
2021-11-28 00:29:09 +03:00
|
|
|
#STRIP_CODE ?= no
|
|
|
|
|
STRIP_CODE ?= yes
|
|
|
|
|
|
|
|
|
|
ifeq ($(STRIP_CODE),yes)
|
|
|
|
|
MODULE_CODE := $(MODULE)-stripped
|
|
|
|
|
else
|
|
|
|
|
MODULE_CODE := $(MODULE)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
2021-11-27 13:18:11 +03:00
|
|
|
# get version...
|
|
|
|
|
# NOTE: the code version is in the code...
|
|
|
|
|
VERSION := $(shell \
|
|
|
|
|
cat $(MODULE).cls \
|
|
|
|
|
| grep 'VERSION{' \
|
|
|
|
|
| sed 's/.*{\(.*\)}.*/\1/')
|
|
|
|
|
|
2021-11-28 00:29:09 +03:00
|
|
|
|
2021-11-27 13:18:11 +03:00
|
|
|
# LaTeX paths...
|
2021-11-26 18:02:11 +03:00
|
|
|
TEX_LOCAL = $(shell kpsewhich --var-value TEXMFLOCAL)
|
|
|
|
|
TEX_HOME = $(shell kpsewhich --var-value TEXMFHOME)
|
|
|
|
|
|
2021-11-28 00:29:09 +03:00
|
|
|
# default install target...
|
|
|
|
|
INSTALL_PATH ?= $(TEX_HOME)
|
|
|
|
|
|
|
|
|
|
|
2021-11-27 13:18:11 +03:00
|
|
|
# distribution...
|
|
|
|
|
DIST_DIR := dist
|
|
|
|
|
DIST_FILES := \
|
|
|
|
|
$(wildcard scripts/*) \
|
|
|
|
|
$(wildcard examples/*) \
|
|
|
|
|
$(wildcard workflow/*) \
|
|
|
|
|
$(wildcard manual/*) \
|
|
|
|
|
$(MODULE).cls \
|
|
|
|
|
$(MODULE).pdf
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
|
# Software...
|
2021-08-12 11:24:18 +03:00
|
|
|
|
2021-11-16 00:58:45 +03:00
|
|
|
# NOTE: need to run latex two+ times to build index, the simpler way to
|
2021-09-03 05:18:18 +03:00
|
|
|
# go is to use latexmk...
|
2021-11-27 13:18:11 +03:00
|
|
|
#TEX := lualatex
|
|
|
|
|
TEX := latexmk -lualatex
|
2021-08-08 01:54:37 +03:00
|
|
|
|
2021-11-14 13:42:06 +03:00
|
|
|
# Doc generator...
|
|
|
|
|
DOC := ./scripts/cls2tex.sh
|
2021-08-11 20:37:16 +03:00
|
|
|
|
2021-11-26 18:02:11 +03:00
|
|
|
CP := cp
|
|
|
|
|
MD := mkdir -p
|
|
|
|
|
|
|
|
|
|
|
2021-08-11 20:37:16 +03:00
|
|
|
|
2021-08-22 14:52:34 +03:00
|
|
|
#----------------------------------------------------------------------
|
2021-11-27 13:18:11 +03:00
|
|
|
# Rules...
|
2021-08-11 20:37:16 +03:00
|
|
|
|
|
|
|
|
%.pdf: %.tex
|
|
|
|
|
$(TEX) $< > /dev/null
|
|
|
|
|
|
|
|
|
|
|
2021-11-28 00:29:09 +03:00
|
|
|
# docs...
|
|
|
|
|
#
|
2021-08-12 11:24:18 +03:00
|
|
|
# NOTE: .sty and .cls are essentially the same in terms of documentation
|
|
|
|
|
# generation...
|
2021-09-03 03:28:04 +03:00
|
|
|
%.tex: %.sty %-meta.tex
|
2021-11-22 22:14:52 +03:00
|
|
|
$(DOC) $< > $@
|
2021-08-11 20:37:16 +03:00
|
|
|
|
2021-09-03 03:28:04 +03:00
|
|
|
%.tex: %.cls %-meta.tex
|
2021-11-22 22:14:52 +03:00
|
|
|
$(DOC) $< > $@
|
2021-09-03 03:28:04 +03:00
|
|
|
|
|
|
|
|
|
2021-11-28 00:29:09 +03:00
|
|
|
# meta docs...
|
|
|
|
|
#
|
2021-09-03 03:28:04 +03:00
|
|
|
# NOTE: this is a bit ugly, but allot less so than trying to push \verb
|
|
|
|
|
# into a LaTeX macro/env and then getting it out again in one pice...
|
|
|
|
|
%-meta.tex: %.sty
|
2021-11-28 00:29:09 +03:00
|
|
|
$(DOC) --prefix M $< > $@
|
2021-09-03 03:28:04 +03:00
|
|
|
|
|
|
|
|
%-meta.tex: %.cls
|
2021-11-28 00:29:09 +03:00
|
|
|
$(DOC) --prefix M $< > $@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# strip docs out...
|
|
|
|
|
#
|
|
|
|
|
# XXX can we unify these???
|
|
|
|
|
%-stripped.tex: %.tex
|
|
|
|
|
$(DOC) --strip $< \
|
|
|
|
|
$(DOC) --prefix M --strip \
|
|
|
|
|
> $@
|
|
|
|
|
|
|
|
|
|
%-stripped.sty: %.sty
|
|
|
|
|
$(DOC) --strip $< \
|
|
|
|
|
| $(DOC) --prefix M --strip \
|
|
|
|
|
> $@
|
|
|
|
|
|
|
|
|
|
%-stripped.cls: %.cls
|
|
|
|
|
$(DOC) --strip $< \
|
|
|
|
|
| $(DOC) --prefix M --strip \
|
|
|
|
|
> $@
|
2021-08-11 20:37:16 +03:00
|
|
|
|
|
|
|
|
|
2021-08-08 01:54:37 +03:00
|
|
|
|
2021-08-08 14:07:52 +03:00
|
|
|
#----------------------------------------------------------------------
|
2021-11-27 13:18:11 +03:00
|
|
|
# Info targets...
|
|
|
|
|
|
|
|
|
|
.PHONY: version
|
|
|
|
|
version:
|
|
|
|
|
@echo $(VERSION)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
# Main targets...
|
2021-08-22 14:52:34 +03:00
|
|
|
|
|
|
|
|
.PHONY: doc
|
2021-11-27 13:18:11 +03:00
|
|
|
doc: $(MODULE).pdf
|
2021-08-22 14:52:34 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
.PHONY: dist
|
2021-11-28 00:29:09 +03:00
|
|
|
dist: $(DIST_FILES) sweep
|
2021-11-27 13:18:11 +03:00
|
|
|
$(MD) $(DIST_DIR)
|
|
|
|
|
zip -Drq $(DIST_DIR)/$(MODULE)-$(VERSION).zip $(DIST_FILES)
|
2021-11-26 18:02:11 +03:00
|
|
|
|
2021-08-22 14:52:34 +03:00
|
|
|
|
2021-11-28 00:29:09 +03:00
|
|
|
.PHONY: all
|
|
|
|
|
all: doc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
|
# Install/uninstall targets...
|
|
|
|
|
|
|
|
|
|
# NOTE: keep the dir clean unless this is explicitly built...
|
|
|
|
|
.INTERMEDIATE: \
|
|
|
|
|
$(MODULE)-stripped.cls \
|
|
|
|
|
$(MODULE)-stripped.sty \
|
|
|
|
|
$(MODULE)-stripped.tex
|
|
|
|
|
|
|
|
|
|
# user install...
|
2021-08-22 14:52:34 +03:00
|
|
|
.PHONY: install
|
2021-11-28 00:29:09 +03:00
|
|
|
install: doc $(MODULE_CODE).cls
|
|
|
|
|
$(MD) $(INSTALL_PATH)/{tex,source,doc}/latex/$(MODULE)
|
|
|
|
|
$(CP) $(MODULE).cls $(INSTALL_PATH)/source/latex/$(MODULE)
|
|
|
|
|
$(CP) $(MODULE).pdf $(INSTALL_PATH)/doc/latex/$(MODULE)
|
|
|
|
|
$(CP) $(MODULE_CODE).cls $(INSTALL_PATH)/tex/latex/$(MODULE)/$(MODULE).cls
|
2021-11-26 18:02:11 +03:00
|
|
|
|
2021-11-28 00:29:09 +03:00
|
|
|
.PHONY: uninstall
|
|
|
|
|
uninstall:
|
|
|
|
|
rm -rf $(INSTALL_PATH)/{tex,source,doc}/latex/$(MODULE)
|
|
|
|
|
@echo "###"
|
|
|
|
|
@echo "### NOTE: this can leave the following dirs empty:"
|
|
|
|
|
@echo "### $(INSTALL_PATH)/{tex,source,doc}/latex/"
|
|
|
|
|
@echo "###"
|
2021-08-22 14:52:34 +03:00
|
|
|
|
2021-08-08 14:07:52 +03:00
|
|
|
|
2021-11-28 00:29:09 +03:00
|
|
|
# local/system install...
|
|
|
|
|
# NOTE: this should be run with sudo, i.e.:
|
|
|
|
|
# $ sudo make install-local
|
|
|
|
|
.PHONY: install-local
|
|
|
|
|
install-local: INSTALL_PATH := $(TEX_LOCAL)
|
|
|
|
|
install-local: install
|
2021-11-15 18:27:46 +03:00
|
|
|
|
2021-11-28 00:29:09 +03:00
|
|
|
.PHONY: uninstall-local
|
|
|
|
|
uninstall-local: INSTALL_PATH := $(TEX_LOCAL)
|
|
|
|
|
uninstall-local: uninstall
|
2021-11-15 18:27:46 +03:00
|
|
|
|
2021-08-08 14:07:52 +03:00
|
|
|
|
2021-11-28 00:29:09 +03:00
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
2021-11-27 13:18:11 +03:00
|
|
|
# Cleanup targets...
|
2021-08-08 01:54:37 +03:00
|
|
|
|
|
|
|
|
.PHONY: sweep
|
|
|
|
|
sweep:
|
2021-11-28 00:29:09 +03:00
|
|
|
rm -f \
|
|
|
|
|
*.{aux,fls,glo,gls,hd,idx,ilg,ind,ins,log,out,toc,fdb_latexmk} \
|
|
|
|
|
*-stripped.{tex,sty,cls} \
|
|
|
|
|
*-meta.{tex,sty,cls} \
|
|
|
|
|
${MODULE}.tex
|
2021-08-08 01:54:37 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
.PHONY: clean
|
|
|
|
|
clean: sweep
|
2021-11-27 13:18:11 +03:00
|
|
|
rm -rf $(DIST_DIR) *.pdf
|
2021-08-08 01:54:37 +03:00
|
|
|
|
|
|
|
|
|
2021-08-22 14:52:34 +03:00
|
|
|
|
2021-08-08 01:54:37 +03:00
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
# vim:set ts=4 sw=4 :
|