31971614d34220e0501eaeaddbbed946444f330c
[charm.git] / doc / Makefile.common
1 # Makefile included by each manual: contains the 
2 #   common build commands/targets ("make pdf", "make ps", "make html")
3 #   common "upload-to-web" targets ("make web")
4
5 # The enclosing Makefile is expected to set the variables:
6 #   FILE: base name of master TeX file (typically "manual")
7 #   TEX: all TeX files to depend on (often just "manual.tex")
8 #   DEST: destination manual name (e.g., "fem")
9 #   LATEX2HTML: call to latex2html, which should be "$(L2H) <args>"
10 #   DOCTITLE: title of the manual
11 # (optional) PROJECT_LINK: HTML to include at bottom of page
12
13 # Destination directory for local copy of files (e.g., on user machine)
14 DOCDIR=..
15
16 # Destination directory for web-accessible copy of files (e.g., on PPL machines)
17 WEBDIR=/www/ppl_manuals
18
19 # Call to Latex2html
20 L2H=latex2html -white -antialias -local_icons \
21         -long_titles 1 \
22         -show_section_numbers \
23         -top_navigation \
24         -address '<p align="right">'"`/bin/date +"%B %d, %Y"`"'<br> \
25             '$(PROJECT_LINK)'<a href="http://charm.cs.illinois.edu/">PPL Homepage</a>'
26
27 DEPTEX=$(TEX) $(FILE).aux index.tex
28
29 .PHONY: setup html1page
30
31 # Default target: build postscript, pdf, and html:
32
33 all: pdf ps html
34
35 # PostScript Target:
36 ps: $(FILE).ps
37
38 # latex does not create dvi anymore on new linux distributions
39 #$(FILE).dvi: $(TEX) $(FILE).aux 
40 #       latex $(FILE).tex
41
42 $(FILE).ps: $(FILE).pdf
43         pdftops -level1 -paper letter $(FILE).pdf $(FILE).ps
44         #dvips -t letter -f $(FILE).dvi > $(FILE).ps
45
46
47 # PDF Target:
48 pdf: $(FILE).pdf
49
50 $(FILE).pdf: $(TEX) $(FILE).aux
51         pdflatex $(FILE).tex
52         pdflatex $(FILE).tex
53
54 # HTML Target:
55 html: html1page $(FILE)
56
57 tmpFile = tmp-navmenu.html
58
59 $(FILE): setup $(TEX) $(FILE).aux
60         export MANUALTITLE=$(DOCTITLE) && $(LATEX2HTML) $(FILE).tex && unset MANUALTITLE
61         ../navmenuGenerator.py $@/index.html > $(tmpFile)
62         for f in $@/*.html; do echo "Sanitizing $$f"; sed -i -e 's!'`pwd`'/!!g' $$f; ../markupSanitizer.py $$f $(tmpFile) > tmpop && cat tmpop > $$f && rm tmpop; done
63         rm -f $(tmpFile)
64
65 html1page: setup $(TEX) $(FILE).aux
66         $(L2H) -split 0 $(FILE).tex
67         -@mv $(FILE)/$(FILE).html $(FILE)/$(FILE)-1p.html
68
69 setup:
70         -@ln -s ../pplmanual.* .
71         -@ln -s ../dot.latex2html-init .latex2html-init
72         -@rm -fr $(FILE)/*.html $(FILE)/*.aux
73         -@mkdir $(FILE)
74         -@/bin/cp -r ../assets fig figs $(FILE)
75
76 # LaTeX Index and link support
77 $(FILE).aux: $(TEX) index.tex $(FIG_TARGET)
78         pdflatex $(FILE).tex
79
80 index.tex: $(FILE).idx
81         makeindex -o index.tex $(FILE).idx
82
83 $(FILE).idx:
84         touch $(FILE).idx
85
86 # Clean out all TeX droppings:
87 clean:
88         -rm -fr *.aux *.log *.dvi *.ps *.pdf *.out *.ilg $(FILE)
89         -rm -fr *.idx *.log *.bbl *.blg *.toc *~ fig/*.bak
90         -rm -fr index.tex $(FIG_CLEAN)
91
92 # Build local copy of documentation:
93 doc: all
94         if [ ! -d $(DOCDIR) ] ; then mkdir $(DOCDIR) ; fi
95         if [ ! -d $(DOCDIR)/ps ] ; then mkdir $(DOCDIR)/ps ; fi
96         if [ ! -d $(DOCDIR)/pdf ] ; then mkdir $(DOCDIR)/pdf ; fi
97         if [ ! -d $(DOCDIR)/html ] ; then mkdir $(DOCDIR)/html ; fi
98         /bin/cp $(FILE).ps $(DOCDIR)/ps/$(DEST).ps
99         chmod 664 $(DOCDIR)/ps/$(DEST).ps
100         /bin/cp $(FILE).pdf $(DOCDIR)/pdf/$(DEST).pdf
101         chmod 664 $(DOCDIR)/pdf/$(DEST).pdf
102         /bin/rm -rf $(DOCDIR)/html/$(DEST)
103         /bin/cp -R $(FILE) $(DOCDIR)/html/$(DEST)
104         find $(DOCDIR)/html/$(DEST) $(DOCDIR)/p*/$(DEST).p* -type f -exec chmod 664 {} \;
105         find $(DOCDIR)/html/$(DEST) -type d -exec chmod 775 {} \;
106
107 # Build web copy of documentation (PPL-only):
108 web: all
109         /bin/cp $(FILE).ps $(WEBDIR)/ps/$(DEST).ps
110         -chmod 664 $(WEBDIR)/ps/$(DEST).ps
111         /bin/cp $(FILE).pdf $(WEBDIR)/pdf/$(DEST).pdf
112         -chmod 664 $(WEBDIR)/pdf/$(DEST).pdf
113         /bin/rm -rf $(WEBDIR)/html/$(DEST)
114         /bin/cp -R $(FILE) $(WEBDIR)/html/$(DEST)
115         find $(WEBDIR)/html/$(DEST) $(WEBDIR)/p*/$(DEST).p* -type f -exec chmod 664 {} \;
116         find $(WEBDIR)/html/$(DEST) -type d -exec chmod 775 {} \;
117         -chgrp -R kale $(WEBDIR)/html/$(DEST) $(WEBDIR)/p*/$(DEST).p*
118