################################################################################ # # 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