Newer
Older
Handbook / makefile-templates / Makefile.lecture
################################################################################
#
# Template makefile for building a set of lecture files.
#
################################################################################


SHELL=/bin/sh


################################################################################
#
# Get path to current Makefile so we can set up self-deleting temporary
# directory. Note that this MUST happen before the first include!
#
MAKEFILE:=$(CURDIR)/$(lastword $(MAKEFILE_LIST))


################################################################################
#
# Required Environment Variables
#
# TEACHING_SHARED
#	This variable specifies the path to the top level of the teaching
#	shared directory hierarchy (e.g., /path/to/Teaching/Shared).
#
TEACHING_SHARED?=$(error The required environment variable TEACHING_SHARED has not been defined. It should point to the root level of the shared teaching directory (e.g., /path/to/Teaching/Shared))
#
# HANDBOOK_INSTALL_ROOT
#	This variable specifies the path to the top level directory on the web
#	server, under which the files for this paper will be installed (that is,
#	the directory that contains the individual paper directory hierarchies).
#	For example, \\INFO-NTS-12\DBCourses$ (this may require munging).
#
HANDBOOK_INSTALL_ROOT?=$(error The required environment variable HANDBOOK_INSTALL_ROOT has not been defined. It should point to the root level of the directory hierarchy on the web server (e.g., \\INFO-NTS-12\DBCourses$))


################################################################################
#
# Set up paths to makefile include directories.
#
# GLOBAL_HANDBOOK_INCLUDE is the global include directory in the "Shared"
# hierarchy, and is defined relative to the root of that hierarchy.
#
GLOBAL_HANDBOOK_INCLUDE?=$(TEACHING_SHARED)/Authoring/Handbook/make-includes


################################################################################
#
# Include local system-specific configuration.
#
include $(GLOBAL_HANDBOOK_INCLUDE)/local_configuration.make


################################################################################
#
# Set up global, self-deleting temporary directory. The first time through,
# TEMPDIR will be undefined, so the first part of the if will create the
# variable, then recursively call the makefile again with the appropriate
# targets, passing the temporary directory as an argument.
#
ifndef TEMPDIR

.PHONY: all

all:
	@TEMPDIR=$(shell $(MKTEMP) -d); \
	trap 'rm -rf "$$TEMPDIR"' EXIT; \
	$(MAKE) -f $(MAKEFILE) --no-print-directory TEMPDIR=$$TEMPDIR all

%:
	@TEMPDIR=$(shell $(MKTEMP) -d); \
	trap 'rm -rf "$$TEMPDIR"' EXIT; \
	$(MAKE) -f $(MAKEFILE) --no-print-directory TEMPDIR=$$TEMPDIR $@


################################################################################
#
# Normal makefile follows.
#
else


################################################################################
#
# Clear out the suffixes list. DO NOT ALTER THIS LINE!
#
.SUFFIXES:
#
# Add any custom suffixes here (uncomment the line below).
# The "standard" suffixes list currently includes:
# .svg .pdf .tex .dvi .png .tif .plo .jpg .pict .eps .ps .R .xml .pu .ipu
#
# .SUFFIXES: 


################################################################################
#
# Define paths for various items here. The "standard" paths currently include:
#
# vpath %.pdf $(IMGDIR)
# vpath %.png $(IMGDIR)
# vpath %.tif $(IMGDIR)
# vpath %.jpg $(IMGDIR)
# vpath %.plo $(IMGDIR)
# vpath %.ps $(IMGDIR)
# vpath %.eps $(IMGDIR)
# vpath %.svg $(IMGDIR)
# vpath %.pict $(IMGDIR)
#
# There's nothing to stop you adding new paths for these file types.
#
# vpath foo bar


################################################################################
#
# Specify the current lecture or chapter number. THIS MUST BE DEFINED!
# Set it to whatever you like if you don't use it (see below).
#
DOC_NUM?=$(error The required variable DOC_NUM has not been defined. Please set it to the correct chapter or lecture number as appropriate)

#
# The document type is prepended onto the output filenames (e.g., "lecture_12_slides.pdf").
#
DOC_TYPE=lecture


################################################################################
#
# Specify the subject code and paper number. THESE MUST BE DEFINED!
#
SUBJECT_CODE?=$(error The required variable SUBJECT_CODE has not been defined. Please set it to the correct subject code for this set of lectures)
PAPER_NUMBER?=$(error The required variable PAPER_NUMBER has not been defined. Please set it to the correct paper number for this set of lectures)


################################################################################
#
# Directory to install files into on web server. This is .../Lectures/name of
# build directory, to avoid similarly-named files overwriting each other.
#
BUILD_DIR:=$(lastword $(subst /, ,$(CURDIR)))
INSTALL_DIRECTORY:=$(HANDBOOK_INSTALL_ROOT)/$(SUBJECT_CODE)$(PAPER_NUMBER)/Lectures/$(BUILD_DIR)


################################################################################
#
# Uncomment any of the following to prevent a particular document from
# being built. This is necessary if, for example, the current set of
# lectures has no figures and examples.
#
# Alternatively, you can use this to set the base name of the output
# files if this is a one-off lecture that doesn't fall into the standard
# lecture or chapter conventions, or you don't want to include the document
# number in the filenames. (Set DOC_NUM above to whatever you like if you don't
# use it.)
#
# You can also alter the base name of the input file for each document by
# setting SLIDES_IN, etc. (These default to $(DOC_TYPE)_slides, etc.)
#
# SLIDES=
# FIGURES=
# COMBINED=
# NOTES=


################################################################################
#
# Standard file list variables.
#
# List of images used in the presentation as actual content.
#
SLIDE_IMAGES=

#
# List of other files used in the presentation as actual content.
# We assume that shared infrastructure files are in the parent directory;
# modify as necessary.
#
SLIDE_FILES=../../paper_init.tex ../lecturedates.tex doc_init.tex

#
# List of images used in the presentation as backgrounds or watermarks.
#
SLIDE_BACKGROUNDS=

#
# List of images used in the figures and examples document.
#
FIG_IMAGES=

#
# List of other files used in the figures and examples document.
#
FIG_FILES=../../paper_init.tex ../lecturedates.tex doc_init.tex

#
# List of images used in the combined lecture material document.
#
COMBI_IMAGES=

#
# List of other files used in the combined lecture material document.
#
COMBI_FILES=../../paper_init.tex ../lecturedates.tex doc_init.tex

#
# List of files other than the standard ones (slides, figures, combined)
# to be installed on the web server. By default, install the following
# files: $(SLIDES).pdf, $(COMBINED).pdf, $(FIGURES).pdf, 
# $(FIGURES)-reduced.pdf. This can include files in subdirectories
# (e.g., foo/bar.pdf), but the subdirectories themselves will not be
# created at the other end (i.e., the directory structure will be
# flattened).
#
INSTALL_FILES=

#
# Files to be cleaned by the various "clean" targets. The "standard" values
# are currently:
# TIDY_FILES+=*.tmp *.out *.log *.nav *.toc *.snm *.head *.dvi *.vrb _minted* \
# 	slides-combined.pdf slides-notes.pdf
# CLEAN_FILES=*.aux *.pdf
#
# $(TIDY_FILES) is a list of generated intermediate files to clean up.
#
TIDY_FILES=
#
# $(CLEAN_FILES) is everything else that might need to be cleaned up.
#
CLEAN_FILES=


################################################################################
#
# Specify LaTeX document options. Uncomment DRAFT to set draft mode in LaTeX.
# Set the values of FONT_SIZE and PAPER_SIZE to appropriate LaTeX values if
# you want something other than the defaults (12pt, a4paper). Use LATEX_OPTS
# (comma-separated list) for any document class options that you want to set
# /other than/ draft, font size and paper size.
#
# DRAFT=draft
# FONT_SIZE=
# PAPER_SIZE=
LATEX_OPTS=

#
# Additional command line flags for the LaTeX command.
# The "standard" list is currently:
# -shell-escape -interaction=nonstopmode -halt-on-error -file-line-error
#
LATEX_FLAGS=

#
# List of "phony" build targets (remember to define rules for
# them!). The "standard" list is currently:
# all slides notes slides-combined slides-notes figures combined
# debug test clean tidy targets
#
TARGETS=

#
# Uncomment the following to enable Unicode mode. This forces use of XHTML,
# Xe(La)TeX, etc. The value of the variable is irrelevant, it just need to be
# defined.
#
# UNICODE=on


################################################################################
#
# Add custom variables below here as necessary.
#


################################################################################
#
# Include standard variables and rules for building lectures.
#
include $(GLOBAL_HANDBOOK_INCLUDE)/build_lecture_rules.make


################################################################################
#
# Add custom rules below here as necessary, BEFORE the endif.
#


endif