aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--GNUmakefile.in5
-rw-r--r--doc/Makefile98
-rw-r--r--doc/src/Makefile14
-rw-r--r--doc/src/sgml/Makefile187
-rw-r--r--doc/src/sgml/docguide.sgml29
-rw-r--r--doc/src/sgml/stylesheet.dsl5
-rw-r--r--doc/src/sgml/stylesheet.xsl1
-rw-r--r--src/Makefile.global.in4
8 files changed, 163 insertions, 180 deletions
diff --git a/GNUmakefile.in b/GNUmakefile.in
index 5262d0ef789..a1c2e5e73cf 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -1,7 +1,7 @@
#
# PostgreSQL top level makefile
#
-# $PostgreSQL: pgsql/GNUmakefile.in,v 1.51 2009/08/07 20:50:21 petere Exp $
+# $PostgreSQL: pgsql/GNUmakefile.in,v 1.52 2009/08/09 22:47:58 petere Exp $
#
subdir =
@@ -14,6 +14,9 @@ all:
$(MAKE) -C config all
@echo "All of PostgreSQL successfully made. Ready to install."
+html man:
+ $(MAKE) -C doc $@
+
install:
$(MAKE) -C doc $@
$(MAKE) -C src $@
diff --git a/doc/Makefile b/doc/Makefile
index 27274bff8fa..32ef320b4d8 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -1,108 +1,16 @@
#----------------------------------------------------------------------------
#
-# PostgreSQL documentation installation makefile
+# PostgreSQL documentation top-level makefile
#
# Copyright (c) 1994, Regents of the University of California
#
-# $PostgreSQL: pgsql/doc/Makefile,v 1.38 2009/08/05 19:31:49 alvherre Exp $
+# $PostgreSQL: pgsql/doc/Makefile,v 1.39 2009/08/09 22:47:59 petere Exp $
#
#----------------------------------------------------------------------------
-# This makefile is responsible for installing the documentation. The
-# files to be installed are prepared specially and are placed in this
-# directory during distribution bundling. In CVS-based trees these
-# files don't exist, so we skip the installation in that case.
-#
-# Before we install the man pages, we massage the section numbers to
-# follow the local conventions.
-#
-# To actually build the documenation, look into the src/ and src/sgml
-# subdirectories.
-
subdir = doc
top_builddir = ..
include $(top_builddir)/src/Makefile.global
-.NOTPARALLEL:
-
-ifneq ($(wildcard $(srcdir)/postgres.tar.gz),)
-found_html = yes
-endif
-
-ifneq ($(wildcard $(srcdir)/man.tar.gz),)
-# SCO OpenServer's man system is sufficiently different to not bother.
-ifneq ($(PORTNAME), sco)
-found_man = yes
-endif
-endif
-
-
-ifdef found_man
-ifndef sqlmansect
-sqlmansect = 7
-endif
-sqlmansectnum = $(shell expr X'$(sqlmansect)' : X'\([0-9]\)')
-
-fix_sqlmansectnum = sed -e '/^\.TH/s/"7"/"$(sqlmansect)"/' \
- -e 's/\\fR(7)/\\fR($(sqlmansectnum))/g' \
- -e '1s/^\.so man7/.so man$(sqlmansectnum)/g;1s/^\(\.so.*\)\.7$$/\1.$(sqlmansect)/g'
-
-all: man1/.timestamp man3/.timestamp man$(sqlmansectnum)/.timestamp
-
-man1/.timestamp man3/.timestamp: man7/.timestamp
- @echo timestamp >$@
-
-man7/.timestamp: man.tar.gz
- gzip -d -c $< | $(TAR) xf -
-ifneq ($(sqlmansectnum),7)
- for file in man1/*.1; do \
- mv $$file $$file.bak && \
- $(fix_sqlmansectnum) $$file.bak >$$file && \
- rm -f $$file.bak || exit; \
- done
-endif
- @echo timestamp >$@
-
-ifneq ($(sqlmansectnum),7)
-man$(sqlmansectnum)/.timestamp: man7/.timestamp
- $(mkinstalldirs) man$(sqlmansectnum)
- for file in man7/*.7; do \
- $(fix_sqlmansectnum) $$file >man$(sqlmansectnum)/`basename $$file | sed 's/.7$$/.$(sqlmansect)/'` || exit; \
- done
- @echo timestamp >$@
-endif
-endif # found_man
-
-
-install: all installdirs
-ifdef found_html
- gzip -d -c $(srcdir)/postgres.tar.gz | ( cd $(DESTDIR)$(htmldir)/html && $(TAR) xf - )
-endif
-ifdef found_man
- for file in man1/*.1 man3/*.3 man$(sqlmansectnum)/*.$(sqlmansect) ; do \
- $(INSTALL_DATA) $$file $(DESTDIR)$(mandir)/$$file || exit; \
- done
-endif
-
-
-installdirs:
-ifdef found_html
- $(mkinstalldirs) '$(DESTDIR)$(htmldir)'/html
-endif
-ifdef found_man
- $(mkinstalldirs) $(addprefix '$(DESTDIR)$(mandir)'/man, 1 3 $(sqlmansectnum))
-endif
-
-
-uninstall:
-ifdef found_html
- rm -f $(addprefix $(DESTDIR)$(htmldir)/html/, $(shell gunzip -c $(srcdir)/postgres.tar.gz | $(TAR) tf -))
-endif
-ifdef found_man
- rm -f $(filter-out %/, $(addprefix $(DESTDIR)$(mandir)/, $(shell gunzip -c $(srcdir)/man.tar.gz | $(TAR) tf - | sed -e 's,man7/,man$(sqlmansectnum)/,' -e 's/.7$$/.$(sqlmansect)/')))
-endif
-
-
-clean distclean maintainer-clean:
- rm -rf man1/ man3/ man7/ man$(sqlmansectnum)/
+all distprep html man install installdirs uninstall clean distclean maintainer-clean:
$(MAKE) -C src $@
diff --git a/doc/src/Makefile b/doc/src/Makefile
index 23670764a2d..57da994476c 100644
--- a/doc/src/Makefile
+++ b/doc/src/Makefile
@@ -1,18 +1,8 @@
-# Postgres documentation makefile
-# $PostgreSQL: pgsql/doc/src/Makefile,v 1.36 2009/08/05 19:31:50 alvherre Exp $
+# $PostgreSQL: pgsql/doc/src/Makefile,v 1.37 2009/08/09 22:47:59 petere Exp $
subdir = doc/src
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
-clean distclean maintainer-clean:
- rm -f *.tar *.gz
+all distprep html man install installdirs uninstall clean distclean maintainer-clean:
$(MAKE) -C sgml $@
-
-postgres.tar:
- $(MAKE) -C sgml html JADEFLAGS='-V html-manifest'
- cd sgml && $(TAR) -cf ../$@ `cat HTML.manifest` `echo *.gif | grep -v '\*'` *.css
-
-man.tar:
- $(MAKE) -C sgml man
- $(TAR) -cf $@ -C sgml man1 man3 man7
diff --git a/doc/src/sgml/Makefile b/doc/src/sgml/Makefile
index 09951ec3d91..0c5f300012e 100644
--- a/doc/src/sgml/Makefile
+++ b/doc/src/sgml/Makefile
@@ -2,16 +2,28 @@
#
# PostgreSQL documentation makefile
#
-# $PostgreSQL: pgsql/doc/src/sgml/Makefile,v 1.121 2009/08/05 19:31:50 alvherre Exp $
+# $PostgreSQL: pgsql/doc/src/sgml/Makefile,v 1.122 2009/08/09 22:47:59 petere Exp $
#
#----------------------------------------------------------------------------
+# This makefile is for building and installing the documentation.
+# When a release tarball is created, the documentation files are
+# prepared using the distprep target. In CVS-based trees these files
+# don't exist, unless explicitly built, so we skip the installation in
+# that case.
+
+
+# Make "html" the default target, since that is what most people tend
+# to want to use.
+html:
+
subdir = doc/src/sgml
top_builddir = ../../..
include $(top_builddir)/src/Makefile.global
-.NOTPARALLEL:
-.PRECIOUS: %-A4.tex-ps %-US.tex-ps %-A4.tex-pdf %-US.tex-pdf
+
+distprep: html man
+
ifndef COLLATEINDEX
COLLATEINDEX = $(DOCBOOKSTYLE)/bin/collateindex.pl
@@ -22,13 +34,6 @@ JADE = jade
endif
SGMLINCLUDE = -D $(srcdir)
-# If this is a vpath build, some generated SGML will be in the build
-# tree, so we need to make sure we look there as well as in the
-# source tree
-ifeq ($(vpath_build), yes)
-SGMLINCLUDE += -D .
-endif
-
ifndef NSGMLS
NSGMLS = nsgmls
endif
@@ -68,13 +73,15 @@ override SPFLAGS += -wall -wno-unused-param -wno-empty -wfully-tagged
## Man pages
##
-.PHONY: man
-
man: man-stamp
-man-stamp: stylesheet-man.xsl postgres.xml
- $(XSLTPROC) $(XSLTPROCFLAGS) $^
- rm man1/dblink*
+ifeq ($(vpath_build),yes)
+XSLTPROC_MAN_FLAGS = --stringparam man.output.base.dir '$(srcdir)/'
+endif
+
+$(srcdir)/man-stamp: stylesheet-man.xsl postgres.xml
+ $(XSLTPROC) $(XSLTPROCFLAGS) $(XSLTPROC_MAN_FLAGS) $^
+ rm $(srcdir)/man1/dblink*
touch $@
@@ -82,42 +89,45 @@ man-stamp: stylesheet-man.xsl postgres.xml
## HTML
##
-all: html
-
-.PHONY: html draft
+.PHONY: draft
JADE.html.call = $(JADE) $(JADEFLAGS) $(SPFLAGS) $(SGMLINCLUDE) $(CATALOG) -d stylesheet.dsl -t sgml -i output-html
+ifeq ($(vpath_build),yes)
+# This only works with openjade, not with the older jade.
+JADE.html.call += -V '(define %output-dir% "$(srcdir)/html")'
+endif
# The draft target creates HTML output in draft mode, without index (for faster build).
draft: postgres.sgml $(ALMOSTALLSGML) stylesheet.dsl
+ $(mkinstalldirs) $(srcdir)/html
$(JADE.html.call) -V draft-mode $<
+ cp $(srcdir)/stylesheet.css $(srcdir)/html/
html: html-stamp
-html-stamp: postgres.sgml $(ALLSGML) stylesheet.dsl
- @rm -f *.html
+$(srcdir)/html-stamp: postgres.sgml $(ALLSGML) stylesheet.dsl
+ $(mkinstalldirs) $(srcdir)/html
$(JADE.html.call) -i include-index $<
-ifeq ($(vpath_build), yes)
- @cp $(srcdir)/stylesheet.css .
-endif
+ cp $(srcdir)/stylesheet.css $(srcdir)/html/
touch $@
-HTML.index: postgres.sgml $(ALMOSTALLSGML) stylesheet.dsl
+$(srcdir)/HTML.index: postgres.sgml $(ALMOSTALLSGML) stylesheet.dsl
+ @$(mkinstalldirs) $(srcdir)/html
$(JADE.html.call) -V html-index $<
-bookindex.sgml: HTML.index
+$(srcdir)/bookindex.sgml: HTML.index
LC_ALL=C $(PERL) $(COLLATEINDEX) -f -g -i 'bookindex' -o $@ $<
-version.sgml: $(top_builddir)/src/Makefile.global
+$(srcdir)/version.sgml: $(top_builddir)/src/Makefile.global
{ \
echo "<!entity version \"$(VERSION)\">"; \
echo "<!entity majorversion \"$(MAJORVERSION)\">"; \
} >$@
-features-supported.sgml: $(top_srcdir)/src/backend/catalog/sql_feature_packages.txt $(top_srcdir)/src/backend/catalog/sql_features.txt
+$(srcdir)/features-supported.sgml: $(top_srcdir)/src/backend/catalog/sql_feature_packages.txt $(top_srcdir)/src/backend/catalog/sql_features.txt
$(PERL) $(srcdir)/mk_feature_tables.pl YES $^ > $@
-features-unsupported.sgml: $(top_srcdir)/src/backend/catalog/sql_feature_packages.txt $(top_srcdir)/src/backend/catalog/sql_features.txt
+$(srcdir)/features-unsupported.sgml: $(top_srcdir)/src/backend/catalog/sql_feature_packages.txt $(top_srcdir)/src/backend/catalog/sql_features.txt
$(PERL) $(srcdir)/mk_feature_tables.pl NO $^ > $@
@@ -172,6 +182,11 @@ postgres.pdf:
pdfjadetex $<
pdfjadetex $<
+.PRECIOUS: %-A4.tex-ps %-US.tex-ps %-A4.tex-pdf %-US.tex-pdf
+
+# Cancel built-in suffix rules, interfering with PS building
+.SUFFIXES:
+
# This generates an XML version of the flow-object tree. It's useful
# for debugging DSSSL code, and possibly to interface to some other
@@ -211,6 +226,10 @@ regress_README.html: regress.sgml
## XSLT processing
##
+# This allows removing postgres.xml in the distribution tarballs while
+# keeping the dependencies satisfied.
+.SECONDARY: postgres.xml
+
postgres.xml: postgres.sgml $(ALMOSTALLSGML)
$(OSX) -D. -x lower $< | \
$(PERL) -p -e 's/\[(amp|copy|egrave|gt|lt|mdash|nbsp|ouml|pi|quot|uuml) *\]/\&\1;/g;' \
@@ -218,8 +237,12 @@ postgres.xml: postgres.sgml $(ALMOSTALLSGML)
>$@
# ' hello Emacs
+ifeq ($(vpath_build),yes)
+XSLTPROC_HTML_FLAGS = --stringparam base.dir '$(srcdir)/html'
+endif
+
xslthtml: stylesheet.xsl postgres.xml
- $(XSLTPROC) $(XSLTPROCFLAGS) $^
+ $(XSLTPROC) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) $^
htmlhelp: stylesheet-hh.xsl postgres.xml
$(XSLTPROC) $(XSLTPROCFLAGS) $^
@@ -248,9 +271,6 @@ MAKEINFO = makeinfo
%.info: %.texi
$(MAKEINFO) --enable-encoding --no-split --no-validate $< -o $@
-# Cancel built-in suffix rules, interfering with PS building
-.SUFFIXES:
-
##
## Check
@@ -262,24 +282,105 @@ check: postgres.sgml $(ALMOSTALLSGML)
##
+## Install
+##
+
+found_html = $(wildcard $(srcdir)/html-stamp)
+
+ifneq ($(wildcard $(srcdir)/man-stamp),)
+# SCO OpenServer's man system is sufficiently different to not bother.
+ifneq ($(PORTNAME), sco)
+found_man = yes
+endif
+endif
+
+install: $(if $(found_html),install-html) $(if $(found_man),install-man)
+
+installdirs:
+ $(mkinstalldirs) '$(DESTDIR)$(htmldir)'/html $(addprefix '$(DESTDIR)$(mandir)'/man, 1 3 $(sqlmansectnum))
+
+uninstall:
+ rm -f '$(DESTDIR)$(htmldir)/html/'* $(addprefix '$(DESTDIR)$(mandir)'/man, 1/* 3/* $(sqlmansectnum)/*)
+
+
+## Install html
+
+install-html: html installdirs
+ cp -R $(srcdir)/html '$(DESTDIR)$(htmldir)'
+
+
+## Install man
+
+sqlmansect ?= 7
+sqlmansectnum = $(shell expr X'$(sqlmansect)' : X'\([0-9]\)')
+
+define install-man-func
+for file in $(1); do \
+ $(INSTALL_DATA) $$file $(DESTDIR)$(mandir)/`echo $$file | sed 's,^$(2),,'` || exit; \
+done
+endef
+
+# Before we install the man pages, we massage the section numbers to
+# follow the local conventions.
+#
+ifeq ($(sqlmansectnum),7)
+install-man:
+ $(call install-man-func,$(addprefix $(srcdir)/,man1/*.1 man3/*.3 man$(sqlmansectnum)/*.$(sqlmansect)),$(srcdir)/)
+
+else # sqlmansectnum != 7
+fix_sqlmansectnum = sed -e '/^\.TH/s/"7"/"$(sqlmansect)"/' \
+ -e 's/\\fR(7)/\\fR($(sqlmansectnum))/g' \
+ -e '1s/^\.so man7/.so man$(sqlmansectnum)/g;1s/^\(\.so.*\)\.7$$/\1.$(sqlmansect)/g'
+
+nonsql_manpage_files := $(wildcard $(srcdir)/man1/*.1 $(srcdir)/man3/*.3)
+sql_manpage_files := $(wildcard $(srcdir)/man7/*.7)
+
+fixed_nonsql_manpage_files = $(patsubst $(srcdir)/%,fixedman/%,$(nonsql_manpage_files))
+fixed_sql_manpage_files = $(patsubst $(srcdir)/man7/%.7,fixedman/man$(sqlmansectnum)/%.$(sqlmansect),$(sql_manpage_files))
+
+fixed_manpage_files = $(fixed_nonsql_manpage_files) $(fixed_sql_manpage_files)
+
+all: all-man
+all-man: $(fixed_manpage_files)
+
+$(fixed_nonsql_manpage_files): fixedman/%: %
+ @$(mkinstalldirs) $(dir $@)
+ $(fix_sqlmansectnum) $< >$@
+
+$(fixed_sql_manpage_files): fixedman/man$(sqlmansectnum)/%.$(sqlmansect): man7/%.7
+ @$(mkinstalldirs) $(dir $@)
+ $(fix_sqlmansectnum) $< >$@
+
+install-man: all-man
+ $(call install-man-func,$(fixed_manpage_files),fixedman/)
+
+clean: clean-man
+.PHONY: clean-man
+clean-man:
+ rm -rf fixedman/
+
+endif # sqlmansectnum != 7
+
+
+##
## Clean
##
-clean distclean maintainer-clean:
+distclean:
+ rm -f postgres.xml
+
+maintainer-clean: distclean
# HTML
- rm -f *.html html-stamp
+ rm -rf $(addprefix $(srcdir)/,html/ html-stamp)
# man
- rm -rf man1 man3 man7 man-stamp
+ rm -rf $(addprefix $(srcdir)/,man1/ man3/ man7/ man-stamp)
# print
- rm -f *.rtf *.tex-ps *.tex-pdf *.dvi *.aux *.log *.ps *.pdf *.out *.fot
+ rm -f $(addprefix $(srcdir)/,*.rtf *.tex-ps *.tex-pdf *.dvi *.aux *.log *.ps *.pdf *.out *.fot)
# index
- rm -f HTML.index $(GENERATED_SGML)
+ rm -f $(addprefix $(srcdir)/,HTML.index $(GENERATED_SGML))
# text
- rm -f INSTALL HISTORY regress_README
+ rm -f $(addprefix $(srcdir)/,INSTALL HISTORY regress_README)
# XSLT
- rm -f postgres.xml htmlhelp.hhp toc.hhc index.hhk *.fo
+ rm -f $(addprefix $(srcdir)/,htmlhelp.hhp toc.hhc index.hhk *.fo)
# Texinfo
- rm -f *.texixml *.texi *.info db2texi.refs
-ifeq ($(vpath_build), yes)
- rm -f stylesheet.css
-endif
+ rm -f $(addprefix $(srcdir)/,*.texixml *.texi *.info db2texi.refs)
diff --git a/doc/src/sgml/docguide.sgml b/doc/src/sgml/docguide.sgml
index 9e07f5a31a6..74c4da89cf7 100644
--- a/doc/src/sgml/docguide.sgml
+++ b/doc/src/sgml/docguide.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/docguide.sgml,v 1.77 2009/08/04 22:04:37 petere Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/docguide.sgml,v 1.78 2009/08/09 22:47:59 petere Exp $ -->
<appendix id="docguide">
<title>Documentation</title>
@@ -554,7 +554,8 @@ checking for osx... osx
<screen>
<prompt>doc/src/sgml$ </prompt><userinput>gmake html</userinput>
</screen>
- This is also the default target.
+ This is also the default target. The output appears in the
+ subdirectory <filename>html</filename>.
</para>
<para>
@@ -565,20 +566,6 @@ checking for osx... osx
<prompt>doc/src/sgml$ </prompt><userinput>gmake draft</userinput>
</screen>
</para>
-
- <para>
- To allow for easier handling in the final distribution, the files
- comprising the HTML documentation can be stored in a tar archive that
- is unpacked at installation time. To create the
- <acronym>HTML</acronym> documentation package, use the commands:
-<programlisting>
-cd doc/src
-gmake postgres.tar.gz
-</programlisting>
- In the distribution, these archives live in the
- <filename>doc</filename> directory and are installed by default
- with <command>gmake install</command>.
- </para>
</sect2>
<sect2>
@@ -596,16 +583,6 @@ cd doc/src/sgml
gmake man
</programlisting>
</para>
-
- <para>
- To create the man page package for a release, use the following commands:
-<programlisting>
-cd doc/src
-gmake man.tar.gz
-</programlisting>
- which will result in a tar file being generated in the
- <filename>doc/src</filename> directory.
- </para>
</sect2>
<sect2>
diff --git a/doc/src/sgml/stylesheet.dsl b/doc/src/sgml/stylesheet.dsl
index 432f3a7714a..a26110465b4 100644
--- a/doc/src/sgml/stylesheet.dsl
+++ b/doc/src/sgml/stylesheet.dsl
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/stylesheet.dsl,v 1.34 2009/07/14 22:16:38 petere Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/stylesheet.dsl,v 1.35 2009/08/09 22:47:59 petere Exp $ -->
<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
<!-- must turn on one of these with -i on the jade command line -->
@@ -179,6 +179,9 @@
(define %gentext-nav-use-ff% #t)
(define %body-attr% '())
(define ($generate-book-lot-list$) '())
+(define use-output-dir #t)
+(define %output-dir% "html")
+(define html-index-filename "../HTML.index")
;; Only build HTML.index or the actual HTML output, not both. Saves a
diff --git a/doc/src/sgml/stylesheet.xsl b/doc/src/sgml/stylesheet.xsl
index faee9d0e04c..19cb5b0f649 100644
--- a/doc/src/sgml/stylesheet.xsl
+++ b/doc/src/sgml/stylesheet.xsl
@@ -9,6 +9,7 @@
<!-- Parameters -->
+<xsl:param name="base.dir" select="'html'"></xsl:param>
<xsl:param name="html.stylesheet" select="'stylesheet.css'"></xsl:param>
<xsl:param name="use.id.as.filename" select="'1'"></xsl:param>
<xsl:param name="make.valid.html" select="1"></xsl:param>
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 441de314873..5141e7dfdd4 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -1,5 +1,5 @@
# -*-makefile-*-
-# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.256 2009/08/07 20:50:22 petere Exp $
+# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.257 2009/08/09 22:47:59 petere Exp $
#------------------------------------------------------------------------------
# All PostgreSQL makefiles include this file and use the variables it sets,
@@ -18,7 +18,7 @@
#
# Meta configuration
-.PHONY: all install install-strip installdirs uninstall clean distclean maintainer-clean distprep check installcheck maintainer-check coverage
+.PHONY: all install install-strip installdirs uninstall clean distclean maintainer-clean distprep check installcheck maintainer-check coverage html man
.SILENT: installdirs
# make `all' the default target