1# -*- Makefile -*-
2# $Id: latex.mk.in.in,v 1.68 2010/03/28 05:51:58 dan Exp $
3#
4# Makefile fragment for handling LaTeX projects
5#
6# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Dan McMahill
7# All rights reserved.
8#
9# This code is derived from software written by Dan McMahill
10#
11# Redistribution and use in source and binary forms, with or without
12# modification, are permitted provided that the following conditions
13# are met:
14# 1. Redistributions of source code must retain the above copyright
15#    notice, this list of conditions and the following disclaimer.
16# 2. Redistributions in binary form must reproduce the above copyright
17#    notice, this list of conditions and the following disclaimer in the
18#    documentation and/or other materials provided with the distribution.
19# 3. All advertising materials mentioning features or use of this software
20#    must display the following acknowledgement:
21#        This product includes software developed by Dan McMahill
22#  4. The name of the author may not be used to endorse or promote products
23#     derived from this software without specific prior written permission.
24#
25#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
26#  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
27#  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
28#  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
29#  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30#  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31#  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
32#  AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
33#  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34#  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35#  SUCH DAMAGE.
36#
37
38
39#######################################
40#
41# README:
42#
43# To use this makefile fragment, set the variable:
44#	NAME	= Top level project name.  Your top level LaTeX
45#		  file should be called $(NAME).tex
46#
47#	TEXSRCS	= Additional LaTeX input files (.tex)
48#
49# and add the line:
50#	.include "latex.mk"
51# in your top level Makefile
52#
53# The following variables may be overridden in your top level Makefile
54#
55#  BIBTEX	= the BibTeX executable
56#  BIBEX_FLAGS	= flags passed to the BibTeX executable
57#  CONVERT      = the 'convert' program which is part of ImageMagick
58#  DVIPDFM      = the dvipdfm executable
59#  DVIPDFM_ENV  = environment variables set when running the dvipdfm executable
60#  DVIPDFM_FLAGS= flags passed to the dvipdfm executable
61#  DVIPS	= the dvips executable
62#  DVIPS_ENV    = environment variables set when running the dvips executable
63#  DVIPS_FLAGS	= flags passed to the dvips executable
64#  GZIP		= gzip program
65#  GV		= a postscript previewer executable
66#  GV_FLAGS	= flags passed to the postscript previewer executable
67#  JPG2EPS      = program and flags used to convert JPEG files to EPS
68#  LATEX	= the LaTeX executable
69#  LATEX_ENV	= environment variables set when running the LaTeX executable
70#  LATEX_FLAGS	= flags passed to the LaTeX executable
71#  LATEX2HTML   = LaTeX2HTML executable
72#  LATEX2HTML_ENV
73#               = environment variables set when running LATEX2HTML
74#  LATEX2HTML_FLAGS
75#               = flags passed to LATEX2HTML
76#  LATEX2RTF    = LaTeX2RTF executable
77#  LATEX2RTF_ENV
78#               = environment variables set when running LATEX2RTF
79#  LATEX2RTF_FLAGS
80#               = flags passed to LATEX2RTF
81#  LPR		= executable to print postscript files
82#  LPR_FLAGS	= flags passed to the executable to print postscript files
83#  MAKEIDX      = the makeindex executable
84#  MAKEIDX_FLAGS= flags passed to the makeindex executable
85#  MAKEGLS      = executable to create glossary
86#  MAKEGLS_FLAGS= flags passed to the executable to create glossary
87#  PDFLATEX     = pdflatex executable
88#  PDFLATEX_ENV = environment variables set when running the PDFLaTeX executable
89#  PDFLATEX_FLAGS= flags passed to the PDFLaTeX executable
90#  PNG2EPS      = program and flags used to convert PNG files to EPS
91#  PS2PDF	= ps2pdf executable
92#  PS2PDF_FLAGS	= flags passed to the ps2pdf executable
93#  TAR          = tape archiver program
94#  VIEWPDF      = PDF viewer
95#  VIEWPDF_FLAGS= PDF viewer flags
96#  XDVI		= a .dvi previewer executable
97#  XDVI_FLAGS	= flags passed to the .dvi previewer executable
98#
99#  USE_DVIPDFM  = set to use dvipdfm to create pdf files from dvi
100#                 instead of using dvips and ps2pdf
101#  USE_PDFLATEX = set to use pdflatex to create pdf files from .tex
102#                 files instead of using latex, dvips and ps2pdf
103#
104#######################################
105
106GMK:# figure out the name of the Makefile.  We'll need this to include
107GMK:# in the tar file created as part of the 'dist' target
108GMK:MAKEFILE:=	$(word 1,${MAKEFILE_LIST})
109
110BMK:MAKECONF?=	@MAKECONF@
111BMK:USER_MAKECONF?=	@USERMAKECONF@
112GMK:MAKECONF?=	@GMAKECONF@
113GMK:USER_MAKECONF?=	@USERGMAKECONF@
114
115BMK:.if exists(${MAKECONF})
116BMK:.include "${MAKECONF}"
117BMK:.endif
118BMK:
119BMK:.if exists(${USER_MAKECONF})
120BMK:.include "${USER_MAKECONF}"
121BMK:.endif
122
123GMK:_CONFS= $(wildcard ${MAKECONF})
124GMK:_CONFS+=        $(wildcard ${USER_MAKECONF})
125GMK:include ${_CONFS}
126
127# Make sure we set at least 1 way for creating html files
128BMK:.if !defined(USE_HEVEA) && !defined(USE_TEX2PAGE)
129GMK:ifndef USE_HEVEA
130GMK:ifndef USE_TEX2PAGE
131USE_LATEX2HTML=	YES
132BMK:.endif
133GMK:endif
134GMK:endif
135
136# The location of the latex-mk .mk and .gmk files
137# we do this instead of hard coding so the package
138# can be tested before installation by setting this
139# variable in a test config file
140LATEX_MK_DIR?=	@pkgdatadir@
141
142AWK?=		@AWK@
143BIBTEX?=	@BIBTEX@
144CONVERT?=	@CONVERT@
145DVIPDFM?=	@DVIPDFM@
146DVIPDFM_ENV?=
147DVIPDFM_FLAGS+=
148DVIPDFM_LANDSCAPE_FLAGS?=	-l
149DVIPS?=		@DVIPS@
150DVIPS_ENV?=
151DVIPS_FLAGS+=	-j0
152DVIPS_LANDSCAPE_FLAGS?=	-t landscape
153ECHO?=		@ECHO@
154ENV_PROG?=	@ENV_PROG@
155FALSE?=		@FALSE@
156FIND?=		@FIND@
157GREP?=		@GREP@
158GV?=		@GV@
159GV_FLAGS?=
160GV_LANDSCAPE_FLAGS?=	-landscape
161GZCAT?=		@GZCAT@
162GZIP?=		@GZIP@
163HACHA?=		@HACHA@
164HACHA_ENV?=
165HACHA_FLAGS?=
166HEVEA?=		@HEVEA@
167HEVEA_ENV?=
168HEVEA_FLAGS?=	-fix
169IMAGEN?=	@IMAGEN@
170JPG2EPS?=	${CONVERT}
171LATEX_MK?=	@latexmkbindir@/latex-mk
172LATEX_MK_FLAGS?=
173LATEX?=		@LATEX@
174LATEX_ENV?=
175LATEX2HTML?=	@LATEX2HTML@
176LATEX2HTML_ENV?=
177LATEX2HTML_FLAGS?=-image_type png -local_icons -show_section_numbers
178LATEX2RTF?=	@LATEX2RTF@
179LATEX2RTF_ENV?=
180LATEX2RTF_FLAGS?=
181LPR?=		@LPR@
182LPR_FLAGS?=
183MAKEIDX?=	@MAKEIDX@
184MAKEIDX_FLAGS?=
185MAKEGLS?=	@MAKEIDX@
186MAKEGLS_FLAGS?=
187PDFLATEX?=	@PDFLATEX@
188PDFLATEX_ENV?=
189PDFLATEX_FLAGS?=
190PNG2EPS?=	${CONVERT}
191POST_BIBTEX_HOOK?=
192RM?=		@RM@
193RMDIR?=		@RMDIR@
194PS2PDF?=	@PS2PDF@
195PS2PDF_FLAGS?=
196TAR?=		@TAR@
197TEX2PAGE?=	@TEX2PAGE@
198TEX2PAGE_ENV?=
199TEX2PAGE_FLAGS?=
200XDVI?=		@XDVI@
201XDVI_FLAGS?=
202XDVI_LANDSCAPE_FLAGS?=	-paper usr
203VIEWPDF?=	${GV}
204VIEWPDF_FLAGS?=	${GV_FLAGS}
205VIEWPDF_LANDSCAPE_FLAGS?=	${GV_LANDSCAPE_FLAGS}
206
207
208DRAFT_STAMP_PS?=	draft_stamp.ps
209DATED_DRAFT_PS?=	${LATEX_MK_DIR}/dated_draft.ps
210
211BMK:.if !target(default)
212.PHONY: default
213default: all
214BMK:.endif
215
216BMK:.if !target(all)
217.MAIN: all
218.PHONY: all
219all:: view-all
220BMK:.endif
221
222BMK:.if defined(LANDSCAPE)
223GMK:ifdef LANDSCAPE
224DVIPS_FLAGS+=	${DVIPS_LANDSCAPE_FLAGS}
225DVIPDFM_FLAGS+=	${DVIPDFM_LANDSCAPE_FLAGS}
226GV_FLAGS+=	${GV_LANDSCAPE_FLAGS}
227XDVI_FLAGS+=	${XDVI_LANDSCAPE_FLAGS}
228VIEWPDF_FLAGS+=	${VIEWPDF_LANDSCAPE_FLAGS}
229BMK:.endif
230GMK:endif
231
232BMK:REAL_LATEX_ENV+=	LATEX=${LATEX:Q}
233BMK:REAL_LATEX_ENV+=	LATEX_FLAGS=${LATEX_FLAGS}
234BMK:REAL_LATEX_ENV+=	BIBTEX=${BIBTEX:Q}
235BMK:REAL_LATEX_ENV+=	BIBTEX_FLAGS=${BIBTEX_FLAGS}
236BMK:REAL_LATEX_ENV+=	MAKEIDX=${MAKEIDX:Q}
237BMK:REAL_LATEX_ENV+=	MAKEIDX_FLAGS=${MAKEIDX_FLAGS}
238BMK:REAL_LATEX_ENV+=	MAKEGLS=${MAKEGLS:Q}
239BMK:REAL_LATEX_ENV+=	MAKEGLS_FLAGS=${MAKEGLS_FLAGS}
240BMK:REAL_LATEX_ENV+=	POST_BIBTEX_HOOK=${POST_BIBTEX_HOOK}
241BMK:REAL_LATEX_ENV+=	${LATEX_ENV}
242BMK:
243BMK:REAL_PDFLATEX_ENV+=	PDFLATEX=${PDFLATEX:Q}
244BMK:REAL_PDFLATEX_ENV+=	PDFLATEX_FLAGS=${PDFLATEX_FLAGS}
245BMK:REAL_PDFLATEX_ENV+=	BIBTEX=${BIBTEX:Q}
246BMK:REAL_PDFLATEX_ENV+=	BIBTEX_FLAGS=${BIBTEX_FLAGS}
247BMK:REAL_PDFLATEX_ENV+=	MAKEIDX=${MAKEIDX:Q}
248BMK:REAL_PDFLATEX_ENV+=	MAKEIDX_FLAGS=${MAKEIDX_FLAGS}
249BMK:REAL_PDFLATEX_ENV+=	MAKEGLS=${MAKEGLS:Q}
250BMK:REAL_PDFLATEX_ENV+=	MAKEGLS_FLAGS=${MAKEGLS_FLAGS}
251BMK:REAL_PDFLATEX_ENV+=	POST_BIBTEX_HOOK=${POST_BIBTEX_HOOK}
252BMK:REAL_PDFLATEX_ENV+=	${PDFLATEX_ENV}
253BMK:
254BMK:REAL_TEX2PAGE_ENV+=	TEX2PAGE=${TEX2PAGE:Q}
255BMK:REAL_TEX2PAGE_ENV+=	TEX2PAGE_FLAGS=${TEX2PAGE_FLAGS}
256BMK:REAL_TEX2PAGE_ENV+=	BIBTEX=${BIBTEX:Q}
257BMK:REAL_TEX2PAGE_ENV+=	BIBTEX_FLAGS=${BIBTEX_FLAGS}
258BMK:REAL_TEX2PAGE_ENV+=	MAKEIDX=${MAKEIDX:Q}
259BMK:REAL_TEX2PAGE_ENV+=	MAKEIDX_FLAGS=${MAKEIDX_FLAGS}
260BMK:REAL_TEX2PAGE_ENV+=	MAKEGLS=${MAKEGLS:Q}
261BMK:REAL_TEX2PAGE_ENV+=	MAKEGLS_FLAGS=${MAKEGLS_FLAGS}
262BMK:REAL_TEX2PAGE_ENV+=	POST_BIBTEX_HOOK=${POST_BIBTEX_HOOK}
263BMK:REAL_TEX2PAGE_ENV+=	${TEX2PAGE_ENV}
264
265GMK:REAL_LATEX_ENV+=	LATEX=${LATEX}
266GMK:REAL_LATEX_ENV+=	LATEX_FLAGS=${LATEX_FLAGS}
267GMK:REAL_LATEX_ENV+=	BIBTEX=${BIBTEX}
268GMK:REAL_LATEX_ENV+=	BIBTEX_FLAGS=${BIBTEX_FLAGS}
269GMK:REAL_LATEX_ENV+=	MAKEIDX=${MAKEIDX}
270GMK:REAL_LATEX_ENV+=	MAKEIDX_FLAGS=${MAKEIDX_FLAGS}
271GMK:REAL_LATEX_ENV+=	MAKEGLS=${MAKEGLS}
272GMK:REAL_LATEX_ENV+=	MAKEGLS_FLAGS=${MAKEGLS_FLAGS}
273GMK:REAL_LATEX_ENV+=	POST_BIBTEX_HOOK=${POST_BIBTEX_HOOK}
274GMK:REAL_LATEX_ENV+=	${LATEX_ENV}
275GMK:
276GMK:REAL_PDFLATEX_ENV+=	PDFLATEX=${PDFLATEX}
277GMK:REAL_PDFLATEX_ENV+=	PDFLATEX_FLAGS=${PDFLATEX_FLAGS}
278GMK:REAL_PDFLATEX_ENV+=	BIBTEX=${BIBTEX}
279GMK:REAL_PDFLATEX_ENV+=	BIBTEX_FLAGS=${BIBTEX_FLAGS}
280GMK:REAL_PDFLATEX_ENV+=	MAKEIDX=${MAKEIDX}
281GMK:REAL_PDFLATEX_ENV+=	MAKEIDX_FLAGS=${MAKEIDX_FLAGS}
282GMK:REAL_PDFLATEX_ENV+=	MAKEGLS=${MAKEGLS}
283GMK:REAL_PDFLATEX_ENV+=	MAKEGLS_FLAGS=${MAKEGLS_FLAGS}
284GMK:REAL_PDFLATEX_ENV+=	POST_BIBTEX_HOOK=${POST_BIBTEX_HOOK}
285GMK:REAL_PDFLATEX_ENV+=	${PDFLATEX_ENV}
286GMK:
287GMK:REAL_TEX2PAGE_ENV+=	TEX2PAGE=${TEX2PAGE}
288GMK:REAL_TEX2PAGE_ENV+=	TEX2PAGE_FLAGS=${TEX2PAGE_FLAGS}
289GMK:REAL_TEX2PAGE_ENV+=	BIBTEX=${BIBTEX}
290GMK:REAL_TEX2PAGE_ENV+=	BIBTEX_FLAGS=${BIBTEX_FLAGS}
291GMK:REAL_TEX2PAGE_ENV+=	MAKEIDX=${MAKEIDX}
292GMK:REAL_TEX2PAGE_ENV+=	MAKEIDX_FLAGS=${MAKEIDX_FLAGS}
293GMK:REAL_TEX2PAGE_ENV+=	MAKEGLS=${MAKEGLS}
294GMK:REAL_TEX2PAGE_ENV+=	MAKEGLS_FLAGS=${MAKEGLS_FLAGS}
295GMK:REAL_TEX2PAGE_ENV+=	POST_BIBTEX_HOOK=${POST_BIBTEX_HOOK}
296GMK:REAL_TEX2PAGE_ENV+=	${TEX2PAGE_ENV}
297
298# Include other .mk files often times used with LaTeX
299
300#######################################
301#
302# Check for lgrind
303#
304#######################################
305
306# Check for LGRINDSRCS and LGRINDDIRS
307
308BMK:.if defined(LGRINDSRCS) || defined(LGRINDDIRS)
309BMK:_USE_LGRIND_MK=	YES
310BMK:.endif
311
312GMK:ifdef LGRINDSRCS
313GMK:_USE_LGRIND_MK+=	YES
314GMK:endif
315GMK:ifdef LGRINDDIRS
316GMK:_USE_LGRIND_MK+=	YES
317GMK:endif
318
319# Check for proj_LGRINDSRCS and proj_LGRINDDIRS
320
321BMK:.for __tmp__ in ${NAME}
322BMK:.if defined(${__tmp__}_LGRINDSRCS) || defined(${__tmp__}_LGRINDDIRS)
323BMK:_USE_LGRIND_MK=	YES
324BMK:.endif
325BMK:.endfor
326
327GMK:
328GMK:define add_lgrind_mk_template
329GMK:ifdef $(1)_LGRINDSRCS
330GMK:_USE_LGRIND_MK=	YES
331GMK:endif
332GMK:ifdef $(1)_LGRINDDIRS
333GMK:_USE_LGRIND_MK=	YES
334GMK:endif
335GMK:endef
336GMK:$(foreach __tmp__,$(NAME),$(eval $(call add_lgrind_mk_template,$(__tmp__))))
337
338# pull in lgrind.[g]mk if needed
339
340BMK:.if defined(_USE_LGRIND_MK)
341BMK:.include "${LATEX_MK_DIR}/lgrind.mk"
342BMK:.endif
343GMK:ifdef _USE_LGRIND_MK
344GMK:include ${LATEX_MK_DIR}/lgrind.gmk
345GMK:endif
346
347#######################################
348#
349# Check for METAPOST
350#
351#######################################
352
353# Check for MPOSTSRCS and MPOSTDIRS
354
355BMK:.if defined(MPOSTSRCS) || defined(MPOSTDIRS)
356BMK:_USE_MPOST_MK=	YES
357BMK:.endif
358
359GMK:ifdef MPOSTSRCS
360GMK:_USE_MPOST_MK+=	YES
361GMK:endif
362GMK:ifdef MPOSTDIRS
363GMK:_USE_MPOST_MK+=	YES
364GMK:endif
365
366# Check for proj_MPOSTSRCS and proj_MPOSTDIRS
367
368BMK:.for __tmp__ in ${NAME}
369BMK:.if defined(${__tmp__}_MPOSTSRCS) || defined(${__tmp__}_MPOSTDIRS)
370BMK:_USE_MPOST_MK=	YES
371BMK:.endif
372BMK:.endfor
373
374GMK:
375GMK:define add_mpost_mk_template
376GMK:ifdef $(1)_MPOSTSRCS
377GMK:_USE_MPOST_MK=	YES
378GMK:endif
379GMK:ifdef $(1)_MPOSTDIRS
380GMK:_USE_MPOST_MK=	YES
381GMK:endif
382GMK:endef
383GMK:$(foreach __tmp__,$(NAME),$(eval $(call add_mpost_mk_template,$(__tmp__))))
384
385# pull in mpost.[g]mk if needed
386
387BMK:.if defined(_USE_MPOST_MK)
388BMK:.include "${LATEX_MK_DIR}/mpost.mk"
389BMK:.endif
390GMK:ifdef _USE_MPOST_MK
391GMK:include ${LATEX_MK_DIR}/mpost.gmk
392GMK:endif
393
394#######################################
395#
396# Check for tgif
397#
398#######################################
399
400# Check for TGIFSRCS and TGIFDIRS
401
402BMK:.if defined(TGIFSRCS) || defined(TGIFDIRS)
403BMK:_USE_TGIF_MK=	YES
404BMK:.endif
405
406GMK:ifdef TGIFSRCS
407GMK:_USE_TGIF_MK+=	YES
408GMK:endif
409GMK:ifdef TGIFDIRS
410GMK:_USE_TGIF_MK+=	YES
411GMK:endif
412
413# Check for proj_TGIFSRCS and proj_TGIFDIRS
414
415BMK:.for __tmp__ in ${NAME}
416BMK:.if defined(${__tmp__}_TGIFSRCS) || defined(${__tmp__}_TGIFDIRS)
417BMK:_USE_TGIF_MK=	YES
418BMK:.endif
419BMK:.endfor
420
421GMK:
422GMK:define add_tgif_mk_template
423GMK:ifdef $(1)_TGIFSRCS
424GMK:_USE_TGIF_MK=	YES
425GMK:endif
426GMK:ifdef $(1)_TGIFDIRS
427GMK:_USE_TGIF_MK=	YES
428GMK:endif
429GMK:endef
430GMK:$(foreach __tmp__,$(NAME),$(eval $(call add_tgif_mk_template,$(__tmp__))))
431
432# pull in tgif.[g]mk if needed
433
434BMK:.if defined(_USE_TGIF_MK)
435BMK:.include "${LATEX_MK_DIR}/tgif.mk"
436BMK:.endif
437GMK:ifdef _USE_TGIF_MK
438GMK:include ${LATEX_MK_DIR}/tgif.gmk
439GMK:endif
440
441#######################################
442#
443# Check for xfig
444#
445#######################################
446
447# Check for XFIGSRCS and XFIGDIRS
448
449BMK:.if defined(XFIGSRCS) || defined(XFIGDIRS)
450BMK:_USE_XFIG_MK=	YES
451BMK:.endif
452
453GMK:ifdef XFIGSRCS
454GMK:_USE_XFIG_MK+=	YES
455GMK:endif
456GMK:ifdef XFIGDIRS
457GMK:_USE_XFIG_MK+=	YES
458GMK:endif
459
460# Check for proj_XFIGSRCS and proj_XFIGDIRS
461
462BMK:.for __tmp__ in ${NAME}
463BMK:.if defined(${__tmp__}_XFIGSRCS) || defined(${__tmp__}_XFIGDIRS)
464BMK:_USE_XFIG_MK=	YES
465BMK:.endif
466BMK:.endfor
467
468GMK:
469GMK:define add_xfig_mk_template
470GMK:ifdef $(1)_XFIGSRCS
471GMK:_USE_XFIG_MK=	YES
472GMK:endif
473GMK:ifdef $(1)_XFIGDIRS
474GMK:_USE_XFIG_MK=	YES
475GMK:endif
476GMK:endef
477GMK:$(foreach __tmp__,$(NAME),$(eval $(call add_xfig_mk_template,$(__tmp__))))
478
479# pull in xfig.[g]mk if needed
480
481BMK:.if defined(_USE_XFIG_MK)
482BMK:.include "${LATEX_MK_DIR}/xfig.mk"
483BMK:.endif
484GMK:ifdef _USE_XFIG_MK
485GMK:include ${LATEX_MK_DIR}/xfig.gmk
486GMK:endif
487
488#######################################
489#
490# Targets
491#
492#######################################
493
494#######################################
495# target:  view_<proj>
496#######################################
497
498BMK:.for __tmp__ in ${NAME}
499BMK:.PHONY: view_${__tmp__}
500BMK:.if defined(USE_PDFLATEX)
501BMK:view_${__tmp__}: viewpdf_${__tmp__}
502BMK:.else
503BMK:view_${__tmp__}: ${__tmp__}.dvi
504BMK:	${XDVI:Q} ${XDVI_FLAGS} ${__tmp__}.dvi
505BMK:.endif
506BMK:DEFAULTVIEW?=	view_${__tmp__}
507BMK:ALLVIEW+=	view_${__tmp__}
508BMK:.endfor
509
510GMK:define view_template
511GMK:.PHONY: view_$(1)
512GMK:ifdef USE_PDFLATEX
513GMK:view_$(1): viewpdf_$(1)
514GMK:else
515GMK:view_$(1): $(1).dvi
516GMK:	$(XDVI) $(XDVI_FLAGS) $(1).dvi
517GMK:endif
518GMK:ALLVIEW+= view_$(1)
519GMK:DEFAULTVIEW?=	view_$(1)
520GMK:endef
521GMK:$(foreach __tmp__,$(NAME),$(eval $(call view_template,$(__tmp__))))
522
523#######################################
524# target:  viewps_<proj>
525#######################################
526
527BMK:.for __tmp__ in ${NAME}
528BMK:.PHONY: viewps_${__tmp__}
529BMK:viewps_${__tmp__}: ${__tmp__}.ps
530BMK:	${GV:Q} ${GV_FLAGS}  ${__tmp__}.ps
531BMK:DEFAULTVIEWPS?=	viewps_${__tmp__}
532BMK:ALLVIEWPS+=	viewps_${__tmp__}
533BMK:.PHONY: viewps_${__tmp__}-draft
534BMK:viewps_${__tmp__}-draft: ${__tmp__}-draft.ps
535BMK:	${GV:Q} ${GV_FLAGS}  ${__tmp__}-draft.ps
536BMK:DEFAULTVIEWPS_DRAFT?=	viewps_${__tmp__}-draft
537BMK:ALLVIEWPS_DRAFT+=	viewps_${__tmp__}-draft
538BMK:${__tmp__}-draft.ps: ${__tmp__}.dvi ${DATED_DRAFT_PS}
539BMK:	sed "s;DATE;`date`;g" ${DATED_DRAFT_PS:Q} > ${DRAFT_STAMP_PS:Q}
540BMK:	${ENV_PROG:Q} ${DVIPS_ENV} ${DVIPS:Q} -h ${DRAFT_STAMP_PS:Q} ${$*_DVIPS_FLAGS} ${DVIPS_FLAGS} -o $@ ${__tmp__}.dvi
541BMK:.endfor
542
543GMK:define viewps_template
544GMK:.PHONY: viewps_$(1)
545GMK:viewps_$(1): $(1).ps
546GMK:	$(GV) $(GV_FLAGS)  $(1).ps
547GMK:DEFAULTVIEWPS?=	viewps_$(1)
548GMK:ALLVIEWPS+=	viewps_$(1)
549GMK:.PHONY: viewps_$(1)-draft
550GMK:viewps_$(1)-draft: $(1)-draft.ps
551GMK:	$(GV) $(GV_FLAGS)  $(1)-draft.ps
552GMK:DEFAULTVIEWPS_DRAFT?=	viewps_$(1)-draft
553GMK:ALLVIEWPS_DRAFT+=	viewps_$(1)-draft
554GMK:$(1)-draft.ps: $(1).dvi ${DATED_DRAFT_PS}
555GMK:	sed "s;DATE;`date`;g" ${DATED_DRAFT_PS} > ${DRAFT_STAMP_PS}
556GMK:	${ENV_PROG} ${DVIPS_ENV} $(DVIPS) -h ${DRAFT_STAMP_PS} ${$*_DVIPS_FLAGS} $(DVIPS_FLAGS) -o $(1)-draft.ps $(1).dvi
557GMK:endef
558GMK:$(foreach __tmp__,$(NAME),$(eval $(call viewps_template,$(__tmp__))))
559
560#######################################
561# target:  viewpdf_<proj>
562#######################################
563
564BMK:.for __tmp__ in ${NAME}
565BMK:.PHONY: viewpdf_${__tmp__}
566BMK:viewpdf_${__tmp__}: ${__tmp__}.pdf
567BMK:	${VIEWPDF:Q} ${VIEWPDF_FLAGS}  ${__tmp__}.pdf
568BMK:DEFAULTVIEWPDF?=	viewpdf_${__tmp__}
569BMK:ALLVIEWPDF+=	viewpdf_${__tmp__}
570BMK:.PHONY: viewpdf_${__tmp__}-draft
571BMK:viewpdf_${__tmp__}-draft: ${__tmp__}-draft.pdf
572BMK:	${VIEWPDF:Q} ${VIEWPDF_FLAGS}  ${__tmp__}-draft.pdf
573BMK:DEFAULTVIEWPDF_DRAFT?=	viewpdf_${__tmp__}-draft
574BMK:ALLVIEWPDF_DRAFT+=	viewpdf_${__tmp__}-draft
575BMK:.endfor
576
577GMK:define viewpdf_template
578GMK:.PHONY: viewpdf_$(1)
579GMK:viewpdf_$(1): $(1).pdf
580GMK:	$(VIEWPDF) $(VIEWPDF_FLAGS)  $(1).pdf
581GMK:DEFAULTVIEWPDF?=	viewpdf_$(1)
582GMK:ALLVIEWPDF+=	viewpdf_$(1)
583GMK:.PHONY: viewpdf_$(1)-draft
584GMK:viewpdf_$(1)-draft: $(1)-draft.pdf
585GMK:	$(VIEWPDF) $(VIEWPDF_FLAGS)  $(1)-draft.pdf
586GMK:DEFAULTVIEWPDF_DRAFT?=	viewpdf_$(1)-draft
587GMK:ALLVIEWPDF_DRAFT+=	viewpdf_$(1)-draft
588GMK:endef
589GMK:$(foreach __tmp__,$(NAME),$(eval $(call viewpdf_template,$(__tmp__))))
590
591#######################################
592# target:  print_<proj>
593#######################################
594
595BMK:.for __tmp__ in ${NAME}
596BMK:.PHONY: print_${__tmp__}
597BMK:print_${__tmp__}: ${__tmp__}.ps
598BMK:	${LPR:Q} ${LPR_FLAGS} ${__tmp__}.ps
599BMK:DEFAULTPRINT?=	print_${__tmp__}
600BMK:ALLPRINT+=	print_${__tmp__}
601BMK:.PHONY: print_${__tmp__}-draft
602BMK:print_${__tmp__}-draft: ${__tmp__}-draft.ps
603BMK:	${LPR:Q} ${LPR_FLAGS} ${__tmp__}-draft.ps
604BMK:DEFAULTPRINT_DRAFT?=	print_${__tmp__}-draft
605BMK:ALLPRINT_DRAFT+=	print_${__tmp__}-draft
606BMK:.endfor
607
608
609GMK:define print_template
610GMK:.PHONY: print_$(1)
611GMK:print_$(1): $(1).ps
612GMK:	$(LPR) $(LPR_FLAGS) $(1).ps
613GMK:DEFAULTPRINT?=	print_$(1)
614GMK:ALLPRINT+=	print_$(1)
615GMK:.PHONY: print_$(1)-draft
616GMK:print_$(1)-draft: $(1)-draft.ps
617GMK:	$(LPR) $(LPR_FLAGS) $(1)-draft.ps
618GMK:DEFAULTPRINT_DRAFT?=	print_$(1)-draft
619GMK:ALLPRINT_DRAFT+=	print_$(1)-draft
620GMK:endef
621GMK:$(foreach __tmp__,$(NAME),$(eval $(call print_template,$(__tmp__))))
622
623#######################################
624
625ALLTEXSRCS=	${TEXSRCS}
626ALLBIBTEXSRCS=	${BIBTEXSRCS}
627
628#######################################
629#
630# master name for the distfile
631#
632#######################################
633
634BMK:.for __tmp__ in ${NAME}
635BMK:.if defined(ALLNAME)
636BMK:ALLNAME:=       ${ALLNAME}_${__tmp__}
637BMK:.else
638BMK:ALLNAME=        ${__tmp__}
639BMK:.endif
640BMK:.endfor
641
642GMK:define distname_template
643GMK:ifdef ALLNAME
644GMK:ALLNAME:=       ${ALLNAME}_$(1)
645GMK:else
646GMK:ALLNAME=        $(1)
647GMK:endif
648GMK:endef
649GMK:$(foreach __tmp__,$(NAME),$(eval $(call distname_template,$(__tmp__))))
650
651BMK:.if ${ALLNAME} != ${NAME}
652GMK:ifneq (${ALLNAME}, ${NAME})
653dist:	${ALLNAME}.tar.gz
654${ALLNAME}.tar.gz: ${NAME:=.tar.gz}
655GMK:	${RM} -fr ${ALLNAME}
656BMK:	${RM:Q} -fr ${ALLNAME:Q}
657GMK:	mkdir ${ALLNAME}
658BMK:	mkdir ${ALLNAME:Q}
659	for f in ${NAME:=.tar.gz} ; do \
660GMK:		${GZCAT} $$f | (cd ${ALLNAME} && ${TAR} xpf -) ; \
661BMK:		${GZCAT:Q} $$f | (cd ${ALLNAME:Q} && ${TAR:Q} xpf -) ; \
662	done
663GMK:	${TAR} cf - ${ALLNAME} | ${GZIP} > $@
664BMK:	${TAR:Q} cf - ${ALLNAME:Q} | ${GZIP:Q} > $@
665GMK:	${RM} -fr ${ALLNAME}
666BMK:	${RM:Q} -fr ${ALLNAME:Q}
667GMK:	@${ECHO} "******* Distfile left in ${ALLNAME}.tar.gz *******"
668BMK:	@${ECHO:Q} "******* Distfile left in ${ALLNAME}.tar.gz *******"
669GMK:endif
670BMK:.endif
671
672#######################################
673#
674# add the dependencies for each documents .dvi file
675#
676#######################################
677
678BMK:.for __tmp__ in ${NAME}
679BMK:${__tmp__}.dvi:	${__tmp__}.tex ${TEXSRCS} ${${__tmp__}_TEXSRCS} ${OTHER} ${${__tmp__}_OTHER}
680BMK:# some older bmake versions will fail on the empty test if these variables
681BMK:# do not already exist
682BMK:BIBTEXSRCS?=
683BMK:${__tmp__}_BIBTEXSRCS?=
684BMK:.if !empty(BIBTEXSRCS) || !empty(${__tmp__}_BIBTEXSRCS)
685BMK:${__tmp__}.dvi:		${__tmp__}.bib-stamp
686BMK:${__tmp__}.html-stamp:	${__tmp__}.bib-stamp
687BMK:.endif
688BMK:.if defined(USE_PDFLATEX)
689BMK:${__tmp__}.pdf:	${__tmp__}.tex ${TEXSRCS} ${${__tmp__}_TEXSRCS} ${OTHER} ${${__tmp__}_OTHER}
690BMK:.  if !empty(BIBTEXSRCS) || !empty(${__tmp__}_BIBTEXSRCS)
691BMK:${__tmp__}.pdf:	${__tmp__}.bib-stamp
692BMK:.  endif
693BMK:.endif
694BMK:${__tmp__}.html-stamp:	${__tmp__}.tex ${TEXSRCS} ${${__tmp__}_TEXSRCS} ${OTHER} ${${__tmp__}_OTHER}
695BMK:${__tmp__}.bib-stamp:	${BIBTEXSRCS} ${${__tmp__}_BIBTEXSRCS}
696BMK:.if defined(USE_PDFLATEX)
697BMK:	${ENV_PROG:Q} ${REAL_PDFLATEX_ENV} ${LATEX_MK:Q} ${LATEX_MK_FLAGS} --pdflatex --bibtex ${__tmp__}.tex
698BMK:.else
699BMK:	${ENV_PROG:Q} ${REAL_LATEX_ENV} ${LATEX_MK:Q} ${LATEX_MK_FLAGS} --bibtex ${__tmp__}.tex
700BMK:.endif
701BMK:	touch $@
702BMK:
703BMK:ALLTEXSRCS+=	${__tmp__}.tex ${${__tmp__}_TEXSRCS}
704BMK:ALLBIBTEXSRCS+=	${${__tmp__}_BIBTEXSRCS}
705BMK:dist:	${__tmp__}.tar.gz
706BMK:dvi:	${__tmp__}.dvi
707BMK:html:	${__tmp__}.html-stamp
708BMK:.PHONY: ${__tmp__}.html
709BMK:${__tmp__}.html:	${__tmp__}.html-stamp
710BMK:
711BMK:# latex2html needs latex to run first because it makes use of the
712BMK:# .aux file.  It seems that tex2page and hevea do not require this.
713BMK:.if defined(USE_LATEX2HTML)
714BMK:${__tmp__}.html-stamp:	${__tmp__}.dvi
715BMK:.endif
716BMK:ps:	${__tmp__}.ps
717BMK:pdf:	${__tmp__}.pdf
718BMK:ps-draft:	${__tmp__}-draft.ps
719BMK:pdf-draft:	${__tmp__}-draft.pdf
720BMK:${__tmp__}.rtf:	${__tmp__}.dvi
721BMK:rtf:	${__tmp__}.rtf
722BMK:clean::
723BMK:	if [ -f ${__tmp__}.www_files ]; then  \
724BMK:		for f in `${AWK:Q} '{print $$2}' ${__tmp__}.www_files` ; do \
725BMK:			if [ -f $$f ]; then ${RM:Q} -f $$f ; fi ;\
726BMK:		done ;\
727BMK:	fi
728BMK:	${RM:Q} -f ${__tmp__}.www_files
729BMK:.if defined(USE_LATEX2HTML)
730BMK:	${RM:Q} -f ${__tmp__}.html_dir/images.aux
731BMK:	${RM:Q} -f ${__tmp__}.html_dir/images.bbl
732BMK:	${RM:Q} -f ${__tmp__}.html_dir/images.log
733BMK:	${RM:Q} -f ${__tmp__}.html_dir/images.out
734BMK:	${RM:Q} -f ${__tmp__}.html_dir/images.tex
735BMK:.endif
736BMK:	if [ -d ${__tmp__}.html_dir ]; then ${RMDIR:Q} ${__tmp__}.html_dir ; fi
737BMK:
738BMK:# And add dependencies for a source tarball
739BMK:${__tmp__}_DIST+=	${__tmp__}.tex ${TEXSRCS} ${${__tmp__}_TEXSRCS} ${BIBTEXSRCS} ${${__tmp__}_BIBTEXSRCS} ${OTHER} ${${__tmp__}_OTHER} ${MAKEFILE} ${${__tmp__}_EXTRA_DIST} ${EXTRA_DIST}
740BMK:ALL_DIST+=	${${__tmp__}_DIST}
741BMK:
742BMK:${__tmp__}.tar.gz: ${${__tmp__}_DIST}
743BMK:	${TAR:Q} cf - ${${__tmp__}_DIST} | ${GZIP:Q} > $@
744BMK:	@${ECHO:Q} "******* Distfile left in $@ *******"
745BMK:.endfor
746
747GMK:define dvideps_template
748GMK:$(1).dvi:	$(1).tex ${TEXSRCS} ${$(1)_TEXSRCS} ${OTHER} ${$(1)_OTHER}
749GMK:ifneq ($(strip $(BIBTEXSRCS)$($(1)_BIBTEXSRCS)),)
750GMK:$(1).dvi:		$(1).bib-stamp
751GMK:$(1).html-stamp:	$(1).bib-stamp
752GMK:endif
753GMK:ifdef USE_PDFLATEX
754GMK:$(1).pdf:	$(1).tex ${TEXSRCS} ${$(1)_TEXSRCS} ${OTHER} ${$(1)_OTHER}
755GMK:ifneq ($(strip $(BIBTEXSRCS)$($(1)_BIBTEXSRCS)),)
756GMK:$(1).pdf:		$(1).bib-stamp
757GMK:endif
758GMK:endif
759GMK:$(1).html-stamp:	$(1).tex ${TEXSRCS} ${$(1)_TEXSRCS} ${OTHER} ${$(1)_OTHER}
760GMK:$(1).bib-stamp:	${BIBTEXSRCS} ${$(1)_BIBTEXSRCS}
761GMK:ifdef USE_PDFLATEX
762GMK:	$(ENV_PROG) $(REAL_PDFLATEX_ENV) $(LATEX_MK) $(LATEX_MK_FLAGS) --pdflatex --bibtex $(1).tex
763GMK:else
764GMK:	$(ENV_PROG) $(REAL_LATEX_ENV) $(LATEX_MK) $(LATEX_MK_FLAGS) --bibtex $(1).tex
765GMK:endif
766GMK:	touch $(1).bib-stamp
767GMK:
768GMK:ALLTEXSRCS+=	$(1).tex ${$(1)_TEXSRCS}
769GMK:ALLBIBTEXSRCS+=	${$(1)_BIBTEXSRCS}
770GMK:dist:	$(1).tar.gz
771GMK:dvi:	$(1).dvi
772GMK:html:	$(1).html-stamp
773GMK:# latex2html needs latex to run first because it makes use of the
774GMK:# .aux file.  It seems that tex2page and hevea do not require this.
775GMK:ifdef USE_LATEX2HTML
776GMK:$(1).html-stamp:	$(1).dvi
777GMK:endif
778GMK:.PHONY: $(1).html
779GMK:$(1).html:	$(1).html-stamp
780GMK:ps:	$(1).ps
781GMK:pdf:	$(1).pdf
782GMK:ps-draft:	$(1)-draft.ps
783GMK:pdf-draft:	$(1)-draft.pdf
784GMK:$(1).rtf:	$(1).dvi
785GMK:rtf:	$(1).rtf
786GMK:clean::
787GMK:	if [ -f $(1).www_files ]; then  \
788GMK:		for f in `${AWK} '{print $$2}' $(1).www_files` ; do \
789GMK:			if [ -f $$$$f ]; then ${RM} -f $$$$f ; fi ;\
790GMK:		done ;\
791GMK:	fi
792GMK:	${RM} -f $(1).www_files
793GMK:ifdef USE_LATEX2HTML
794GMK:	${RM} -f $(1).html_dir/images.aux
795GMK:	${RM} -f $(1).html_dir/images.bbl
796GMK:	${RM} -f $(1).html_dir/images.log
797GMK:	${RM} -f $(1).html_dir/images.out
798GMK:	${RM} -f $(1).html_dir/images.tex
799GMK:endif
800GMK:	if [ -d $(1).html_dir ] ; then ${RMDIR} $(1).html_dir ; fi
801GMK:
802GMK:# And add dependencies for a source tarball
803GMK:$(1)_DIST+=	$(1).tex ${TEXSRCS} ${$(1)_TEXSRCS} ${BIBTEXSRCS} ${$(1)_BIBTEXSRCS} ${OTHER} ${$(1)_OTHER} ${MAKEFILE} ${$(1)_EXTRA_DIST} ${EXTRA_DIST}
804GMK:
805GMK:endef
806GMK:$(foreach __tmp__,$(NAME),$(eval $(call dvideps_template,$(__tmp__))))
807
808GMK:define dist_template
809GMK:ALL_DIST+=	$($(1)_DIST)
810GMK:
811GMK:$(1).tar.gz: $($(1)_DIST)
812GMK:	${TAR} cf - ${$(1)_DIST} | ${GZIP} > $(1).tar.gz
813GMK:	@${ECHO} "******* Distfile left in $(1).tar.gz *******"
814GMK:
815GMK:endef
816GMK:$(foreach __tmp__,$(NAME),$(eval $(call dist_template,$(__tmp__))))
817
818#######################################
819# target:  view, view-all
820#######################################
821
822.PHONY: view
823view: ${DEFAULTVIEW}
824.PHONY: view-all
825view-all: ${ALLVIEW}
826
827
828#######################################
829# target:  viewps, viewps-all
830#######################################
831
832.PHONY: viewps
833viewps: ${DEFAULTVIEWPS}
834.PHONY: viewps-all
835viewps-all: ${ALLVIEWPS}
836
837#######################################
838# target:  viewpdf, viewpdf-all
839#######################################
840
841.PHONY: viewpdf
842viewpdf: ${DEFAULTVIEWPDF}
843.PHONY: viewpdf-all
844viewpdf-all: ${ALLVIEWPDF}
845
846#######################################
847# target:  viewps-draft, viewps-all-draft
848#######################################
849
850.PHONY: viewps-draft
851viewps-draft: ${DEFAULTVIEWPS_DRAFT}
852.PHONY: viewps-all-draft
853viewps-all-draft: ${ALLVIEWPS_DRAFT}
854
855#######################################
856# target:  viewpdf-draft, viewpdf-all-draft
857#######################################
858
859.PHONY: viewpdf-draft
860viewpdf-draft: ${DEFAULTVIEWPDF_DRAFT}
861.PHONY: viewpdf-all-draft
862viewpdf-all-draft: ${ALLVIEWPDF_DRAFT}
863
864#######################################
865# target:  print, print-all
866#######################################
867
868.PHONY: print
869print: ${DEFAULTPRINT}
870.PHONY: print-all
871print-all: ${ALLPRINT}
872
873#######################################
874# target:  print-draft, print-all-draft
875#######################################
876
877.PHONY: print-draft
878print-draft: ${DEFAULTPRINT_DRAFT}
879.PHONY: print-all-draft
880print-all-draft: ${ALLPRINT_DRAFT}
881
882#######################################
883#
884#######################################
885
886.SUFFIXES : .tex .dvi .ps .pdf .rtf .html-stamp .png .jpg .eps
887
888BMK:.if defined(IGNORE_LATEX_ERRORS)
889GMK:ifdef IGNORE_LATEX_ERRORS
890LATEX_MK_FLAGS+=	--ignore-errors
891BMK:.endif
892GMK:endif
893
894#######################################
895#
896# Graphic file conversions
897#
898#######################################
899.jpg.eps :
900GMK:	$(JPG2EPS) $< $@
901BMK:	${JPG2EPS:Q} $< $@
902
903.png.eps :
904GMK:	$(PNG2EPS) $< $@
905BMK:	${PNG2EPS:Q} $< $@
906
907#######################################
908#
909# Distribution output (tarfile)
910#
911#######################################
912.PHONY: dist
913
914#######################################
915#
916# DVI Output (latex)
917#
918#######################################
919.PHONY: dvi
920.tex.dvi :
921GMK:	$(ENV_PROG) $(REAL_LATEX_ENV) $(LATEX_MK) $(LATEX_MK_FLAGS) $<
922BMK:	${ENV_PROG:Q} ${REAL_LATEX_ENV} ${LATEX_MK:Q} ${LATEX_MK_FLAGS} $<
923
924#######################################
925#
926# HTML Output (latex2html or HeVeA)
927#
928#######################################
929
930# note:  we have to use a time stamp file here to keep track of what files
931# get created by the html conversion.  Neither latex2html nor hevea provide
932# a convenient way to get a list of files to clean.  In addition, hevea
933# does not currently provide a DESTDIR type functionality which is needed
934# for dealing with multiple top level documents.
935
936
937.PHONY: html
938.tex.html-stamp :
939	touch $@1
940BMK:.if defined(USE_LATEX2HTML)
941GMK:ifdef USE_LATEX2HTML
942GMK:	@${ECHO} LaTeX-Mk:  Creating HTML output using latex2html
943GMK:	$(ENV_PROG) $(LATEX2HTML_ENV) $(LATEX2HTML) $(LATEX2HTML_FLAGS) -mkdir -dir $*.html_dir $<
944BMK:	@${ECHO:Q} LaTeX-Mk:  Creating HTML output using latex2html
945BMK:	${ENV_PROG:Q} ${LATEX2HTML_ENV} ${LATEX2HTML:Q} ${LATEX2HTML_FLAGS} -mkdir -dir $*.html_dir $<
946BMK:.elif defined(USE_TEX2PAGE)
947GMK:else
948GMK:ifdef USE_TEX2PAGE
949GMK:	@${ECHO} LaTeX-Mk:  Creating HTML output using tex2page
950GMK:	${ECHO} "$*.html_dir" > $*.hdir
951GMK:	$(ENV_PROG) $(REAL_TEX2PAGE_ENV) $(LATEX_MK) --tex2page $(LATEX_MK_FLAGS) $<
952BMK:	@${ECHO:Q} LaTeX-Mk:  Creating HTML output using tex2page
953BMK:	${ECHO:Q} "$*.html_dir" > $*.hdir
954BMK:	${ENV_PROG:Q} ${REAL_TEX2PAGE_ENV} ${LATEX_MK:Q} --tex2page ${LATEX_MK_FLAGS} $<
955BMK:.elif defined(USE_HEVEA)
956GMK:else
957GMK:ifdef USE_HEVEA
958GMK:	@${ECHO} LaTeX-Mk:  Creating HTML output using HeVeA
959BMK:	@${ECHO:Q} LaTeX-Mk:  Creating HTML output using HeVeA
960	mkdir -p $*.html_dir
961GMK:	-$(ENV_PROG) $(HEVEA_ENV) $(HEVEA) $(HEVEA_FLAGS) $<
962GMK:	-$(ENV_PROG) $(HEVEA_ENV) ${IMAGEN}  `basename $< .tex`
963GMK:	-$(ENV_PROG) $(HEVEA_ENV) $(HEVEA) $(HEVEA_FLAGS) $<
964BMK:	-${ENV_PROG:Q} ${HEVEA_ENV} ${HEVEA:Q} $(HEVEA_FLAGS) $<
965BMK:	-${ENV_PROG:Q} ${HEVEA_ENV} ${IMAGEN:Q}  `basename $< .tex`
966BMK:	-${ENV_PROG:Q} ${HEVEA_ENV} ${HEVEA:Q} $(HEVEA_FLAGS) $<
967BMK:.endif
968GMK:endif
969GMK:endif
970GMK:endif
971	if [ ! -f $*.www_files ]; then touch $*.www_files ; fi
972GMK:	for f in `${FIND} . -type f \( -name \*.html -o -name \*.htm -o -name \*.gif \
973BMK:	for f in `${FIND:Q} . -type f \( -name \*.html -o -name \*.htm -o -name \*.gif \
974		-o -name \*.png -o -name \*.css -o -name \*.pl -o -name WARNINGS \
975		-o -name \*.scm -o -name \*.hlog \) \
976		-newer $@1 -print` ; do \
977		fn=`basename $$f` ; \
978GMK:		if ${GREP} "^$$f " $*.www_files >/dev/null ; then \
979BMK:		if ${GREP:Q} "^$$f " $*.www_files >/dev/null ; then \
980			echo "$$f already recorded" ; \
981		else \
982			echo "recording file $$f ($*.html_dir/$$fn)" ; \
983			echo "$$f $*.html_dir/$$fn" >> $*.www_files ; \
984		fi ;\
985	done
986BMK:.if defined(USE_TEX2PAGE)
987GMK:ifdef USE_TEX2PAGE
988GMK:	for f in `${FIND} . -type f \( -name \*-Z-G-\*.tex -o -name \*-Z-G-\*.aux \
989BMK:	for f in `${FIND} . -type f \( -name \*-Z-G-\*.tex -o -name \*-Z-G-\*.aux \
990		-o -name \*-Z-G-\*.log -o -name \*-Z-G-\*.dvi -o -name \*-Z-G-\*.ps \
991		-o -name .Z\*.tex \) -newer $@1 -print` ; do \
992		fn=`basename $$f` ; \
993GMK:		if ${GREP} "^$$f " $*.www_files >/dev/null ; then \
994BMK:		if ${GREP:Q} "^$$f " $*.www_files >/dev/null ; then \
995			echo "$$f already recorded" ; \
996		elif test "`dirname $$f`" != "." ; then \
997			echo "$$f is not in this directory, skipping" ; \
998		else \
999			echo "recording file $$f (./$$fn)" ; \
1000			echo "$$f ./$$fn" >> $*.www_files ; \
1001		fi ;\
1002	done
1003BMK:.endif
1004GMK:endif
1005BMK:.if defined(USE_HEVEA)
1006GMK:ifdef USE_HEVEA
1007GMK:	for f in `${AWK} '{print $$1}' $*.www_files` ; do \
1008GMK:		${ECHO} "Moving $$f to $*.html_dir" ; mv $$f $*.html_dir ; \
1009BMK:	for f in `${AWK:Q} '{print $$1}' $*.www_files` ; do \
1010BMK:		${ECHO:Q} "Moving $$f to $*.html_dir" ; mv $$f $*.html_dir ; \
1011	done
1012BMK:.endif
1013GMK:endif
1014	mv $@1 $@
1015
1016#######################################
1017#
1018# Postscript Output (dvips)
1019#
1020#######################################
1021.PHONY:  ps
1022
1023# if we're doing a *-draft target, then add the
1024# DRAFT watermark and time stamp
1025BMK:.if make(*-draft)
1026GMK:ifeq ($(findstring -draft,${MAKECMDGOALS}),-draft)
1027__DRAFT=	yes
1028BMK:.endif
1029GMK:endif
1030
1031.dvi.ps :
1032BMK:.if defined(__DRAFT)
1033GMK:ifdef __DRAFT
1034GMK:	sed "s;DATE;`date`;g" ${DATED_DRAFT_PS} > ${DRAFT_STAMP_PS}
1035GMK:	${ENV_PROG} ${DVIPS_ENV} $(DVIPS) -h ${DRAFT_STAMP_PS} ${$*_DVIPS_FLAGS} $(DVIPS_FLAGS) -o $*-draft.ps $<
1036BMK:	sed "s;DATE;`date`;g" ${DATED_DRAFT_PS:Q} > ${DRAFT_STAMP_PS:Q}
1037BMK:	${DVIPS:Q} -h ${DRAFT_STAMP_PS:Q} ${$*_DVIPS_FLAGS} ${DVIPS_FLAGS} -o $*-draft.ps $<
1038BMK:.else
1039BMK:	${ENV_PROG:Q} ${DVIPS_ENV} ${DVIPS:Q} ${$*_DVIPS_FLAGS} ${DVIPS_FLAGS} -o $@ $<
1040GMK:else
1041GMK:	${ENV_PROG} ${DVIPS_ENV} $(DVIPS) ${$*_DVIPS_FLAGS} $(DVIPS_FLAGS) -o $@ $<
1042BMK:.endif
1043GMK:endif
1044
1045#######################################
1046#
1047# PDF Output (ps2pdf)
1048#
1049#######################################
1050.PHONY:  pdf
1051
1052BMK:.if defined(USE_DVIPDFM)
1053GMK:ifdef USE_DVIPDFM
1054.dvi.pdf :
1055GMK:	$(ENV_PROG) $(DVIPDFM_ENV) $(DVIPDFM) ${$*_DVIPDFM_FLAGS} $(DVIPDFM_FLAGS) $<
1056BMK:	${ENV_PROG:Q} ${DVIPDFM_ENV} ${DVIPDFM:Q} ${$*_DVIPDFM_FLAGS} ${DVIPDFM_FLAGS} $<
1057BMK:.elif defined(USE_PDFLATEX)
1058GMK:else
1059GMK:ifdef USE_PDFLATEX
1060.tex.pdf :
1061GMK:	$(ENV_PROG) $(REAL_PDFLATEX_ENV) $(LATEX_MK) --pdflatex $(LATEX_MK_FLAGS) $<
1062BMK:	${ENV_PROG:Q} ${REAL_PDFLATEX_ENV} ${LATEX_MK:Q} --pdflatex ${LATEX_MK_FLAGS} $<
1063BMK:.else
1064GMK:else
1065.ps.pdf :
1066GMK:	$(PS2PDF) $(PS2PDF_FLAGS) $<
1067BMK:	${PS2PDF:Q} ${PS2PDF_FLAGS} $<
1068BMK:.endif
1069GMK:endif
1070GMK:endif
1071
1072#######################################
1073#
1074# RTF (Rich Text Format) output (latex2rtf)
1075#
1076#######################################
1077.PHONY:  rtf
1078
1079.dvi.rtf :
1080GMK:	$(ENV_PROG) $(LATEX2RTF_ENV) $(LATEX2RTF) $(LATEX2RTF_FLAGS) -o $@ $*.tex
1081BMK:	${ENV_PROG:Q} ${LATEX2RTF_ENV} ${LATEX2RTF:Q} ${LATEX2RTF_FLAGS} -o $@ $*.tex
1082
1083#######################################
1084#
1085# Clean up (clean)
1086#
1087#######################################
1088CLEAN_FILES+=	${ALLTEXSRCS:.tex=.aux}
1089CLEAN_FILES+=	${BIBTEXSRCS:.bib=.aux}
1090CLEAN_FILES+=	${NAME:=.ps}
1091CLEAN_FILES+=	${NAME:=-draft.ps}
1092CLEAN_FILES+=	${NAME:=.pdf}
1093CLEAN_FILES+=	${NAME:=-draft.pdf}
1094CLEAN_FILES+=	${NAME:=.rtf}
1095CLEAN_FILES+=	${NAME:=.aux}
1096CLEAN_FILES+=	${NAME:=.log}
1097CLEAN_FILES+=	${NAME:=.dvi}
1098CLEAN_FILES+=	${NAME:=.log}
1099CLEAN_FILES+=	${NAME:=.bbl}
1100CLEAN_FILES+=	${NAME:=.blg}
1101CLEAN_FILES+=	${NAME:=.glo}
1102CLEAN_FILES+=	${NAME:=.gls}
1103CLEAN_FILES+=	${NAME:=.ilg}
1104CLEAN_FILES+=	${NAME:=.idx}
1105CLEAN_FILES+=	${NAME:=.ind}
1106CLEAN_FILES+=	${NAME:=.lof}
1107CLEAN_FILES+=	${NAME:=.lot}
1108CLEAN_FILES+=	${NAME:=.toc}
1109CLEAN_FILES+=	${NAME:=.out}
1110CLEAN_FILES+=	$(DRAFT_STAMP_PS)
1111CLEAN_FILES+=	${NAME:=.bib-stamp}
1112
1113# HTML generation
1114CLEAN_FILES+=	${NAME:=.html-stamp}
1115CLEAN_FILES+=	${NAME:=.www_files}
1116
1117BMK:.ifdef USE_HEVEA
1118GMK:ifdef USE_HEVEA
1119CLEAN_FILES+=	${NAME:=.haux}
1120CLEAN_FILES+=	${NAME:=.image.tex}
1121BMK:.endif
1122GMK:endif
1123
1124BMK:.ifdef USE_LATEX2HTML
1125GMK:ifdef USE_LATEX2HTML
1126CLEAN_FILES+=	${NAME:=.haux}
1127CLEAN_FILES+=	${NAME:=.image.tex}
1128BMK:.endif
1129GMK:endif
1130
1131
1132BMK:.ifdef USE_TEX2PAGE
1133GMK:ifdef USE_TEX2PAGE
1134CLEAN_FILES+=	${NAME:=.hdir}
1135BMK:.endif
1136GMK:endif
1137
1138
1139.PHONY: clean
1140
1141GMK:define latex_mk_clean_template
1142clean::
1143GMK:	${LATEX_MK} --clean $(1)
1144GMK:endef
1145GMK:$(foreach __tmp__,$(NAME),$(eval $(call latex_mk_clean_template,$(__tmp__))))
1146
1147clean::
1148BMK:.for __tmp__ in ${NAME}
1149BMK:	${LATEX_MK:Q} --clean ${__tmp__}
1150BMK:.endfor
1151BMK:	${RM:Q} -f *~ texput.log ${CLEAN_FILES}
1152GMK:	$(RM) -f *~ texput.log $(CLEAN_FILES)
1153
1154.PHONY: distclean
1155distclean: clean
1156
1157#######################################
1158#
1159# Some helpful debugging targets
1160#
1161#######################################
1162.PHONY: show-var
1163show-var:
1164GMK:	@${ECHO} ${${VARNAME}}
1165BMK:	@${ECHO:Q} ${${VARNAME}}
1166
1167