0.8.6.4:
[sbcl.git] / doc / Makefile
1 # Makefile for SBCL document generation
2
3 DOCFILE_BASE_DEFAULT:=user-manual
4 DOCFILE_EXT_DEFAULT:=xml
5
6 # Standard docfile processing as copied from UFFI
7 # Placed into public domain by author Kevin Rosenberg
8
9 DEBIAN=$(shell expr "`cat /etc/issue`" : '.*Debian.*')
10 SUSE=$(shell expr "`cat /etc/issue`" : '.*SuSE.*')
11 REDHAT=$(shell expr "`cat /etc/issue`" : '.*RedHat.*')
12
13
14 ifneq (${DEBIAN},0)
15 OS:=debian
16 else
17   ifneq (${SUSE},0)
18     OS=suse
19   else   
20     ifneq (${REDHAT},0)
21       OS=redhat
22     endif
23   endif
24 endif
25
26
27 ifndef DOCFILE_BASE
28 DOCFILE_BASE=${DOCFILE_BASE_DEFAULT}
29 endif
30
31 ifndef DOCFILE_EXT
32 DOCFILE_EXT=${DOCFILE_EXT_DEFAULT}
33 endif
34
35 DOCFILE:=${DOCFILE_BASE}.${DOCFILE_EXT}
36 FOFILE:=${DOCFILE_BASE}.fo
37 PDFFILE:=${DOCFILE_BASE}.pdf
38 PSFILE:=${DOCFILE_BASE}.ps
39 DVIFILE:=${DOCFILE_BASE}.dvi
40 TXTFILE:=${DOCFILE_BASE}.txt
41 HTMLFILE:=${DOCFILE_BASE}.html
42 TMPFILES:=${DOCFILE_BASE}.aux ${DOCFILE_BASE}.out ${DOCFILE_BASE}.log
43 DOCFILES:=$(shell echo *.xml *.xsl)
44
45 ifeq ($(XSLTPROC),)
46   XSLTPROC:=xsltproc
47 endif
48
49 CATALOG:=`pwd`/catalog-${OS}.xml
50 CHECK:=XML_CATALOG_FILES="$(CATALOG)" xmllint --noout --xinclude --postvalid $(DOCFILE) || exit 1
51
52 .PHONY: all
53 all: html 
54
55 .PHONY: dist
56 dist: html pdf
57
58 .PHONY: doc
59 doc: html pdf
60
61 .PHONY: check
62 check:
63         @echo "Operating system detected: ${OS}"
64         @$(CHECK)
65
66 .PHONY: html
67 html: html-stamp
68
69 html-stamp: $(DOCFILES) Makefile 
70         @rm -rf html
71         @mkdir html
72         @XML_CATALOG_FILES="$(CATALOG)" $(XSLTPROC) --stringparam chunker.output.encoding ISO-8859-1 \
73                  --xinclude --output html/ html_chunk.xsl $(DOCFILE)
74         touch html-stamp
75
76 .PHONY: fo
77 fo: ${FOFILE}
78
79 ${FOFILE}: $(DOCFILES) Makefile 
80         @XML_CATALOG_FILES="$(CATALOG)" $(XSLTPROC) --xinclude --output $(FOFILE) fo.xsl $(DOCFILE)
81
82 .PHONY: pdf
83 pdf: ${PDFFILE}
84
85 ${PDFFILE}: ${DOCFILES} Makefile
86         @$(MAKE) fo
87         @fop $(FOFILE) -pdf $(PDFFILE) > /dev/null
88
89 .PHONY: dvi
90 dvi: ${DVIFILE}
91
92 .PHONY: ps
93 ps: ${PSFILE}
94
95 ${PSFILE}: ${DOCFILES} Makefile
96         @$(MAKE) fo
97         @fop $(FOFILE) -ps $(PSFILE) > /dev/null
98
99
100 .PHONY: txt
101 txt: ${TXTFILE}
102
103 ${TXTFILE}: ${FOFILE}
104         @XML_CATALOG_FILES="$(CATALOG)" $(XSLTPROC) --xinclude --output ${HTMLFILE} html.xsl $(DOCFILE)
105         lynx -dump ${HTMLFILE} > ${TXTFILE}
106
107 .PHONY: clean
108 clean: 
109         @rm -f *~ *.bak *.orig \#*\# .\#* texput.log
110         @rm -rf html $(PSFILE) $(HTMLFILE) $(PDFFILE) html-stamp
111         @rm -f $(TMPFILES) $(FOFILE)
112         @rm -f  $(DVIFILE) $(TXTFILE)
113
114 .PHONY: distclean
115 distclean: clean