aboutsummaryrefslogtreecommitdiff
path: root/course/common.mk
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2024-02-12 15:45:23 +0100
committerFlorian Fischer <florian.fischer@muhq.space>2024-02-12 17:07:12 +0100
commit638706371ba3e4091fafb9da7509b51b523cc36d (patch)
treebb1e347679d54bf239e40cd38431dd992fa3e55b /course/common.mk
parent9ff80cb28ac76cbccc5fd927b3fa14c999d5599c (diff)
downloadSOS-638706371ba3e4091fafb9da7509b51b523cc36d.tar.gz
SOS-638706371ba3e4091fafb9da7509b51b523cc36d.zip
add course material build tooling
Diffstat (limited to 'course/common.mk')
-rw-r--r--course/common.mk51
1 files changed, 51 insertions, 0 deletions
diff --git a/course/common.mk b/course/common.mk
new file mode 100644
index 0000000..b55ecdf
--- /dev/null
+++ b/course/common.mk
@@ -0,0 +1,51 @@
+# The full path to the Makefile
+MAKEFILE_PATH ?= $(abspath $(lastword $(MAKEFILE_LIST)))
+# The path to the directory of the Makefile
+MAKEFILE_DIR ?= $(dir $(MAKEFILE_PATH))
+
+BUILDDIR := $(MAKEFILE_DIR)build
+
+IMGS := $(wildcard img/*)
+COMMON_IMAGES := $(MAKEFILE_DIR)/images
+
+PANDOC_DIR := $(MAKEFILE_DIR)pandoc
+PANDOC_FILTER_DIR := $(PANDOC_DIR)/filters
+PANDOC_TEMPLATE_DIR := $(PANDOC_DIR)/templates
+
+PANDOC_FILTER_OPTIONS := --lua-filter "$(PANDOC_FILTER_DIR)/center-img.lua"
+PANDOC_FILTER_OPTIONS += --lua-filter "$(PANDOC_FILTER_DIR)/include-files.lua"
+PANDOC_FILTER_OPTIONS += --lua-filter "$(PANDOC_FILTER_DIR)/meta-vars.lua"
+PANDOC_FILTER_OPTIONS += --filter pandoc-plot
+COMMON_PANDOC_OPTIONS := --resource-path="$(COMMON_IMAGES):." $(PANDOC_FILTER_OPTIONS)
+PANDOC := pandoc $(COMMON_PANDOC_OPTIONS)
+
+SLIDES_OPTIONS := --slide-level 2 -t beamer
+SLIDES_OPTIONS += --pdf-engine-opt=--shell-escape
+SLIDES_OPTIONS += --metadata-file=$(PANDOC_DIR)/defaults/slides-metadata.yml
+SLIDES_OPTIONS += --template=$(PANDOC_TEMPLATE_DIR)/beamer.tex
+
+VERBOSE ?= @
+ifeq ($(VERBOSE), @)
+ RUBBER_OPTS += --quiet
+ SILENCE := > /dev/null
+endif
+
+slides.pdf: slides.md $(wildcard img/*) $(MAKEFILE_LIST)
+ @echo "building $@"
+ $(VERBOSE)[ ! -d "$(BUILDDIR)/$(subst $(MAKEFILE_DIR),,$(CURDIR))" ] && \
+ mkdir -p $(BUILDDIR)/$(subst $(MAKEFILE_DIR),,$(CURDIR)) || true
+ $(VERBOSE)$(PANDOC) $(SLIDES_OPTIONS) $< -o $(BUILDDIR)/$(subst $(MAKEFILE_DIR),,$(CURDIR))/$@
+
+slides_handout.pdf: slides_handout.md $(wildcard img/*) $(MAKEFILE_LIST)
+ @echo "building $@"
+ $(VERBOSE)$(PANDOC) $(SLIDES_OPTIONS) $< -M handout -o $@
+
+slides%.pdf: slides%.md $(wildcard slides.md) $(wildcard img/*) $(MAKEFILE_LIST)
+ @echo "building $@"
+ @[ ! -d $(BUILDDIR)$(subst $(MAKEFILE_DIR),,$(PWD)) ] && \
+ mkdir -p $(BUILDDIR)$(subst $(MAKEFILE_DIR),,$(PWD))
+ $(VERBOSE)$(PANDOC) $(SLIDES_OPTIONS) $< -o $(subst $(MAKEFILE_DIR),$(BUILDDIR),$(@))
+
+%.pdf: %.md $(wildcard img/*) $(MAKEFILE_LIST)
+ @echo "building $@"
+ $(VERBOSE)$(PANDOC) -f markdown $< -o $@