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