Newer
Older
Handbook / makefile-templates / Makefile.section
################################################################################
#
# Template makefile for building a complete section of the handbook (e.g.,
# Tutorials). Place a copy of this file in the directory for each section,
# and modify as appropriate. The default makefile rebuilds all the
# documents within that section, using recursive make calls to each
# document. Most of the work is done by the include files, and should
# cater for almost all cases. However, if custom rules are needed for a
# section, they can be appended to the end of the section's makefile.
#
################################################################################


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))
#
# ALL_PAPERS_ROOT
#	This variable specifies the path to the top level directory for all
#	papers taught, i.e., the directory that contains the individual paper
#	directory hierarchies. For example, /path/to/Teaching/2005.
#
ALL_PAPERS_ROOT?=$(error The required environment variable ALL_PAPERS_ROOT has not been defined. It should point to the root level of the current teaching directory hierarchy (e.g., /path/to/Teaching/2005))
#
# 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.
#
# LOCAL_HANDBOOK_INCLUDE is the local include directory for this
# particular paper, and is defined relative to the current execution
# directory. We are assuming a fixed directory structure here! We can't
# really do this as an environment variable because the full path will be
# different for each paper, and we can't use the variables from
# paper_variables.make to set the path, because that file is in the
# include directory! <head spins> We will, however, allow for the
# possibility of someone wanting to define this as an environment variable
# by making it a conditional assignment.
#
GLOBAL_HANDBOOK_INCLUDE?=$(TEACHING_SHARED)/Authoring/Handbook/make-includes

export LOCAL_HANDBOOK_INCLUDE?=$(shell cd ../..; pwd)/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


################################################################################
#
# Include standard variables and rules for building a section.
#
include $(GLOBAL_HANDBOOK_INCLUDE)/build_section_rules.make


################################################################################
#
# Add custom rules below here, as necessary. Add files to be deleted to the
# variables below, as appropriate.
#
# WEB_CLEAN_FILES+=
# PRINT_CLEAN_FILES+=
# ALL_CLEAN_FILES+=


endif