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