-
-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=$(basename $(ROOTFILE))
+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))
+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/"
+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'
+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"
+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),)
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 $(HTMLDIR)
+# html documentation; output in $(HTMLDIRS)
.PHONY: html
html: html-stamp
html-stamp: $(DOCFILES) docstrings
- @rm -rf $(HTMLDIR)
- $(MAKEINFO) -I $(DOCSTRINGDIR) --html $(ROOTFILE)
+ @rm -rf $(HTMLDIRS)
+ @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
.PHONY: ps
-ps: $(PSFILE)
+ps: $(PSFILES)
-$(PSFILE): $(DVIFILE)
+%.ps: %.dvi
dvips -o $@ $<
-$(DVIFILE): $(DOCFILES) docstrings
- texi2dvi -I $(DOCSTRINGDIR) $(ROOTFILE)
+# DVI generation
+%.dvi: %.texinfo $(DOCFILES) docstrings
+ texi2dvi $(I_FLAGS) $<
# PDF documentation
.PHONY: pdf
-pdf: $(PDFFILE)
+pdf: $(PDFFILES)
-$(PDFFILE): $(DOCFILES) docstrings
- texi2pdf -I $(DOCSTRINGDIR) $(ROOTFILE)
+%.pdf: %.texinfo $(DOCFILES) docstrings
+ $(TEXI2PDF) $(I_FLAGS) $<
# info docfiles
.PHONY: info
-info: $(INFOFILE)
-
-$(INFOFILE): $(DOCFILES) docstrings
- $(MAKEINFO) -I $(DOCSTRINGDIR) $(ROOTFILE)
+info: $(INFOFILES)
-# contrib-modules.texinfo includes contrib-doc-list.texi-temp
-contrib-modules.texinfo: tempfiles-stamp
+%.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 $(HTMLDIR) $(DOCSTRINGDIR)
+ rm -rf $(HTMLDIRS) $(DOCSTRINGDIR)
+ rm -f $(HTMLFILES)
rm -f contrib-docs.texi-temp
- rm -f $(PSFILE) $(PDFFILE) $(DVIFILE) html-stamp tempfiles-stamp
- rm -f $(TMPFILES) contrib-doc-list.texi-temp
- rm -f sbcl.info sbcl.info-*
+ 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