b5fad228f3efd312e6131367e27a29016480cabd
[sbcl.git] / doc / Makefile
1 # Makefile for SBCL document generation
2
3 # This file is part of the SBCL system. It was copied from UFFI and
4 # placed into the public domain by the original author, Kevin
5 # Rosenberg.
6
7 DOCFILE_BASE_DEFAULT:=user-manual
8 DOCFILE_EXT_DEFAULT:=xml
9
10 SYSTEM:=$(shell uname)
11
12 ifeq ($(SYSTEM),Linux) 
13   ifneq ($(shell expr "`cat /etc/issue`" : '.*Debian.*'),0)
14     # Old Debian used /usr/share/sgml/docbook, new Debian uses
15     # /usr/share/xml/docbook. 
16     ifneq ($(shell expr "`ls -d /usr/share/xml`" : '.*/usr/share/xml.*'),0)
17       OS:=debian
18     else
19       # Evidently it's not a new-style Debian DocBook setup, ergo:
20       OS:=debian-old
21     endif
22   else
23     ifneq ($(shell expr "`cat /etc/issue`" : '.*SuSE.*'),0)
24       OS=suse
25     else   
26       ifneq ($(shell expr "`cat /etc/issue`" : 'Red Hat Linux release 9'),0)
27         OS=redhat9
28       else   
29         ifneq ($(shell expr "`cat /etc/issue`" : '.*Yarrow.*'),0)
30           OS=fedora1
31         endif
32       endif
33     endif
34   endif
35 endif
36
37 ifeq ($(SYSTEM),Darwin)
38   OS:=fink
39 endif
40
41 ifndef DOCFILE_BASE
42 DOCFILE_BASE=${DOCFILE_BASE_DEFAULT}
43 endif
44
45 ifndef DOCFILE_EXT
46 DOCFILE_EXT=${DOCFILE_EXT_DEFAULT}
47 endif
48
49 DOCFILE:=${DOCFILE_BASE}.${DOCFILE_EXT}
50 FOFILE:=${DOCFILE_BASE}.fo
51 PDFFILE:=${DOCFILE_BASE}.pdf
52 PSFILE:=${DOCFILE_BASE}.ps
53 DVIFILE:=${DOCFILE_BASE}.dvi
54 TXTFILE:=${DOCFILE_BASE}.txt
55 HTMLFILE:=${DOCFILE_BASE}.html
56 TMPFILES:=${DOCFILE_BASE}.aux ${DOCFILE_BASE}.out ${DOCFILE_BASE}.log
57 DOCFILES:=$(shell echo *.xml *.xsl)
58
59 ifeq ($(XSLTPROC),)
60   XSLTPROC:=xsltproc
61 endif
62
63 CATALOG:=`pwd`/catalogs/catalog-${OS}.xml
64 CHECK:=XML_CATALOG_FILES="$(CATALOG)" xmllint --noout --xinclude --postvalid $(DOCFILE) || exit 1
65
66 .PHONY: all
67 all: html 
68
69 .PHONY: dist
70 dist: html pdf
71
72 .PHONY: doc
73 doc: html pdf
74
75 .PHONY: check
76 check:
77         @echo "Operating system detected: ${OS}"
78         @$(CHECK)
79
80 .PHONY: html
81 html: html-stamp
82
83 html-stamp: $(DOCFILES) Makefile 
84         @rm -rf html
85         @mkdir html
86         @XML_CATALOG_FILES="$(CATALOG)" $(XSLTPROC) --stringparam chunker.output.encoding ISO-8859-1 \
87                  --xinclude --output html/ html_chunk.xsl $(DOCFILE)
88         touch html-stamp
89
90 .PHONY: fo
91 fo: ${FOFILE}
92
93 ${FOFILE}: $(DOCFILES) Makefile 
94         @XML_CATALOG_FILES="$(CATALOG)" $(XSLTPROC) --xinclude --output $(FOFILE) fo.xsl $(DOCFILE)
95
96 .PHONY: pdf
97 pdf: ${PDFFILE}
98
99 ${PDFFILE}: ${DOCFILES} Makefile
100         @$(MAKE) fo
101         @fop $(FOFILE) -pdf $(PDFFILE) > /dev/null
102
103 .PHONY: dvi
104 dvi: ${DVIFILE}
105
106 .PHONY: ps
107 ps: ${PSFILE}
108
109 ${PSFILE}: ${DOCFILES} Makefile
110         @$(MAKE) fo
111         @fop $(FOFILE) -ps $(PSFILE) > /dev/null
112
113
114 .PHONY: txt
115 txt: ${TXTFILE}
116
117 ${TXTFILE}: ${FOFILE}
118         @XML_CATALOG_FILES="$(CATALOG)" $(XSLTPROC) --xinclude --output ${HTMLFILE} html.xsl $(DOCFILE)
119         lynx -dump ${HTMLFILE} > ${TXTFILE}
120
121 .PHONY: clean
122 clean: 
123         @rm -f *~ *.bak *.orig \#*\# .\#* texput.log
124         @rm -rf html $(PSFILE) $(HTMLFILE) $(PDFFILE) html-stamp
125         @rm -f $(TMPFILES) $(FOFILE)
126         @rm -f  $(DVIFILE) $(TXTFILE)
127
128 .PHONY: distclean
129 distclean: clean