1.0.10.51: New function: THREAD-YIELD
[sbcl.git] / doc / manual / Makefile
index f3f5c5a..4d07799 100644 (file)
@@ -1,21 +1,36 @@
-
-DOCFILES:=$(shell echo *.texinfo)
-ROOTFILE:=sbcl.texinfo
-TMPFILES:=sbcl.aux sbcl.cp sbcl.fn sbcl.ky sbcl.log sbcl.pg sbcl.toc sbcl.tp sbcl.vr
-
-PSFILE=sbcl.ps
-PDFFILE=sbcl.pdf
-DVIFILE=sbcl.dvi
-INFOFILE=sbcl.info
-HTMLDIR=sbcl
-
+SBCLTEXI:=sbcl.texinfo
+ASDFTEXI:=asdf.texinfo
+DOCFILES:=*.texinfo $(ASDFTEXI)
+TMPTYPES:=aux cp cps fn fns ky log pg toc tp tps vr vrs
+TMPFILES:=$(foreach target,asdf sbcl,$(foreach type,$(TMPTYPES),$(target).$(type)))
+PSFILES=sbcl.ps asdf.ps
+PDFFILES=sbcl.pdf asdf.pdf
+INFOFILES=sbcl.info asdf.info
+HTMLDIRS=$(basename $(SBCLTEXI)) $(basename $(ASDFTEXI))
+# Place where generated documentation ends up. The value of
+# DOCSTRINGDIR has to end with a slash or you lose (it's passed to
+# Lisp's `pathname' function).
+DOCSTRINGDIR="docstrings/"
+CONTRIBDIR="../../contrib/"
+I_FLAGS=-I $(DOCSTRINGDIR) -I $(CONTRIBDIR)
+# List of contrib modules that docstring docs will be created for.
+MODULES=':sb-md5 :sb-rotate-byte :sb-grovel :sb-sprof :sb-bsd-sockets :sb-cover :sb-posix'
+# List of package names that docstring docs will be created for.
+PACKAGES=":COMMON-LISP :SB-ALIEN :SB-DEBUG :SB-EXT :SB-GRAY :SB-MOP :SB-PROFILE :SB-THREAD :SB-MD5 :SB-ROTATE-BYTE :SB-SPROF :SB-BSD-SOCKETS :SB-COVER :SB-POSIX"
+
+# SBCL_SYSTEM is an optional argument to this make program. If this
+# variable is set, its contents are used as the command line for
+# invoking SBCL.
+
+# When passing a non-standard SBCL_SYSTEM, be sure to set the
+# environment variable SBCL_HOME to a useful value, as well.
 
 ifeq ($(MAKEINFO),)
   MAKEINFO:=makeinfo
 endif
 
 ifeq ($(TEXI2PDF),)
-  TEXI2PDF:=texi2pdf
+  TEXI2PDF:=texi2dvi -p
 endif
 
 ifeq ($(DVIPS),)
@@ -23,55 +38,72 @@ ifeq ($(DVIPS),)
 endif
 
 .PHONY: all
-all: ps pdf info html
+all: asdf.texinfo ps pdf info html
 
 .PHONY: dist
 dist: html pdf
 
+asdf.texinfo:
+       rm -f asdf.texinfo
+       ln -s ../../contrib/asdf/asdf.texinfo
 
-
-
+# html documentation; output in $(HTMLDIRS)
 .PHONY: html
 html: html-stamp
 
-html-stamp: $(DOCFILES)
-       @rm -rf $(HTMLDIR)
-       $(MAKEINFO) --html $(ROOTFILE)
+html-stamp: $(DOCFILES) docstrings
+       @rm -rf $(HTMLDIRS)
+       $(MAKEINFO) $(I_FLAGS) --html $(SBCLTEXI)
+       $(MAKEINFO) --html $(ASDFTEXI)
        touch html-stamp
 
-
+# Postscript documentation
 .PHONY: ps
-ps: $(PSFILE)
+ps: $(PSFILES)
 
-$(PSFILE): $(DVIFILE)
+%.ps: %.dvi
        dvips -o $@ $<
 
-$(DVIFILE): $(DOCFILES)
-       texi2dvi $(ROOTFILE)
-
+# DVI generation
+%.dvi: %.texinfo $(DOCFILES) docstrings
+       texi2dvi $(I_FLAGS) $<
 
+# PDF documentation
 .PHONY: pdf
-pdf: $(PDFFILE)
-
-$(PDFFILE): $(DOCFILES)
-       texi2pdf $(ROOTFILE)
+pdf: $(PDFFILES)
 
+%.pdf: %.texinfo $(DOCFILES) docstrings
+       $(TEXI2PDF) $(I_FLAGS) $<
 
+# info docfiles
 .PHONY: info
-info: $(INFOFILE)
+info: $(INFOFILES)
 
-$(INFOFILE): $(DOCFILES)
-       $(MAKEINFO) $(ROOTFILE)
+%.info: %.texinfo $(DOCFILES) docstrings
+       $(MAKEINFO) $(I_FLAGS) $<
 
+# Texinfo docstring snippets
+# Note: assumes contrib module names are the same as the names of
+# directories containing the modules, and that these directories
+# are in $(CONTRIBDIR).
+CONTRIB_FASLS=$(shell find $(shell echo $(MODULES) | sed "s|:|$(CONTRIBDIR)|g") -name '*.fasl')
+docstrings: $(CONTRIB_FASLS) tempfiles-stamp
+       for module in $(shell echo $(MODULES)); do test -e $(CONTRIBDIR)/$${module#:}/test-passed || { echo "The documented contrib $$module seems to have failed its tests." && exit 1; }; done
+       DOCSTRINGDIR=$(DOCSTRINGDIR) PACKAGES=$(PACKAGES) MODULES=$(MODULES) sh make-tempfiles.sh "$(SBCL_SYSTEM)" && touch $(DOCSTRINGDIR)
 
+tempfiles-stamp:
+       touch tempfiles-stamp
 
 .PHONY: clean
 clean: 
-       rm -f *~ *.bak *.orig \#*\# .\#* texput.log
-       rm -rf $(HTMLDIR)
-       rm -f $(PSFILE) $(PDFFILE) $(DVIFILE) html-stamp
-       rm -f $(TMPFILES)
-       rm -f sbcl.info sbcl.info-*
+       rm -f *~ *.bak *.orig \#*\# .\#* texput.log *.fasl
+       rm -rf $(HTMLDIRS) $(DOCSTRINGDIR)
+       rm -f contrib-docs.texi-temp
+       rm -f package-locks.texi-temp
+       rm -f variables.texinfo
+       rm -f $(PSFILES) $(PDFFILES) html-stamp tempfiles-stamp
+       rm -f $(TMPFILES) $(INDEXFILES)
+       rm -f sbcl.info sbcl.info-* asdf.info
 
 .PHONY: distclean
 distclean: clean