gencgc: code_page_p() must die!
[sbcl.git] / doc / manual / Makefile
index cce2204..7b80ca9 100644 (file)
@@ -1,30 +1,42 @@
 SBCLTEXI:=sbcl.texinfo
 ASDFTEXI:=asdf.texinfo
 DOCFILES:=*.texinfo $(ASDFTEXI)
-TMPTYPES:=aux cps fns ky log pg toc tps vrs
+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
-VARSFILE=variables.template
 HTMLDIRS=$(basename $(SBCLTEXI)) $(basename $(ASDFTEXI))
+HTMLFILES=sbcl.html asdf.html
 # 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/"
-I_FLAGS=-I $(DOCSTRINGDIR) -I ../../contrib/
+CONTRIB_SRC_DIR="../../contrib/"
+CONTRIB_OBJ_DIR="../../obj/asdf-cache/"
+I_FLAGS=-I $(DOCSTRINGDIR) -I $(CONTRIB_SRC_DIR)
 # List of contrib modules that docstring docs will be created for.
-# FIXME: should check test-passed and not load them.
-MODULES=':sb-md5 :sb-rotate-byte :sb-grovel :sb-sprof :sb-bsd-sockets'
+MODULES=':sb-md5 :sb-queue :sb-concurrency :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"
+PACKAGES=":COMMON-LISP :SB-ALIEN :SB-DEBUG :SB-EXT :SB-GRAY :SB-MOP \
+          :SB-PCL :SB-SYS :SB-SEQUENCE \
+          :SB-PROFILE :SB-THREAD :SB-MD5 :SB-QUEUE :SB-ROTATE-BYTE  \
+          :SB-SPROF :SB-BSD-SOCKETS :SB-COVER :SB-POSIX :SB-CONCURRENCY"
+
+# 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),)
@@ -41,17 +53,17 @@ asdf.texinfo:
        rm -f asdf.texinfo
        ln -s ../../contrib/asdf/asdf.texinfo
 
-variables: ${VARSFILE}
-       ./extract-values.sh < ${VARSFILE} >variables.texinfo
-
 # html documentation; output in $(HTMLDIRS)
 .PHONY: html
 html: html-stamp
 
-html-stamp: variables $(DOCFILES) docstrings
+html-stamp: $(DOCFILES) docstrings
        @rm -rf $(HTMLDIRS)
-       $(MAKEINFO) $(I_FLAGS) --html $(SBCLTEXI)
-       $(MAKEINFO) --html $(ASDFTEXI)
+       @rm -f $(HTMLFILES)
+#      $(MAKEINFO) $(I_FLAGS) --html --css-include=style-multi.css $(SBCLTEXI)
+#      $(MAKEINFO) --html --css-include=style-multi.css $(ASDFTEXI)
+       $(MAKEINFO) $(I_FLAGS) --html --no-split --css-include=style-single.css $(SBCLTEXI)
+       $(MAKEINFO) --html --no-split --css-include=style-single.css $(ASDFTEXI)
        touch html-stamp
 
 # Postscript documentation
@@ -62,40 +74,53 @@ ps: $(PSFILES)
        dvips -o $@ $<
 
 # DVI generation
-%.dvi: %.texinfo variables $(DOCFILES) docstrings
+%.dvi: %.texinfo $(DOCFILES) docstrings
        texi2dvi $(I_FLAGS) $<
 
 # PDF documentation
 .PHONY: pdf
 pdf: $(PDFFILES)
 
-%.pdf: %.texinfo variables $(DOCFILES) docstrings
-       texi2pdf $(I_FLAGS) $<
+%.pdf: %.texinfo $(DOCFILES) docstrings
+       $(TEXI2PDF) $(I_FLAGS) $<
 
 # info docfiles
 .PHONY: info
 info: $(INFOFILES)
 
-%.info: %.texinfo variables $(DOCFILES) docstrings
+%.info: %.texinfo $(DOCFILES) docstrings
        $(MAKEINFO) $(I_FLAGS) $<
 
 # Texinfo docstring snippets
-.PHONY: docstrings
-docstrings: tempfiles-stamp
+# Note: assumes contrib module names are the same as the names of
+# directories containing the modules, and that these directories
+# are in $(CONTRIB_OBJ_DIR).
+CONTRIB_FASLS=$(shell find $(shell echo $(MODULES) | sed "s|:|$(CONTRIB_OBJ_DIR)|g") -name '*.fasl')
+docstrings: $(CONTRIB_FASLS) tempfiles-stamp
+       for module in $(shell echo $(MODULES)); do \
+               test -f $(CONTRIB_OBJ_DIR)/`echo $$module | tr -d :`/test-passed.test-report \
+               || { 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:
-       DOCSTRINGDIR=$(DOCSTRINGDIR) PACKAGES=$(PACKAGES) MODULES=$(MODULES) sh make-tempfiles.sh && touch tempfiles-stamp
-
+       touch tempfiles-stamp
 
 .PHONY: clean
-clean: 
+clean:
        rm -f *~ *.bak *.orig \#*\# .\#* texput.log *.fasl
        rm -rf $(HTMLDIRS) $(DOCSTRINGDIR)
+       rm -f  $(HTMLFILES)
        rm -f contrib-docs.texi-temp
        rm -f package-locks.texi-temp
-       rm -f $(PSFILE) $(PDFFILE) $(DVIFILE) html-stamp tempfiles-stamp
-       rm -f $(TMPFILES)
-       rm -f sbcl.info sbcl.info-*
+       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