1#!/bin/sh
2#
3# Script to build the web-version of the Berkeley DB documentation.
4#
5# $Id: build,v 1.107 2008/02/07 17:12:18 mark Exp $
6
7# The build script must be run from the document source directory.
8MSG="build: build script must be run from the document source directory."
9egrep "^MSG=\"$MSG\"" build > /dev/null 2>&1 || {
10	echo "$MSG"
11	exit 1
12}
13
14# Save the absolute path of the Berkeley DB document source directory.
15DOCS_SRC=`pwd`
16export DOCS_SRC
17
18# Save the absolute path of the Berkeley DB source directory.
19BDB_SRC=`dirname $DOCS_SRC`
20export BDB_SRC
21
22# Save the absolute path of the target Berkeley DB documents directory.
23TARGET=$BDB_SRC/docs
24export TARGET
25
26# splash:
27#	splash page.
28splash()
29{
30	rm -f $TARGET/index.html
31	sed -e "s/DB_RELEASE_DATE/$DB_RELEASE_DATE/" \
32	    -e "s/DB_VERSION_MAJOR/$DB_VERSION_MAJOR/" \
33	    -e "s/DB_VERSION_MINOR/$DB_VERSION_MINOR/" \
34	    -e "s/DB_VERSION_PATCH/$DB_VERSION_PATCH/" \
35	    < index_db.html > $TARGET/index.html
36}
37
38# api_index:
39#	Build a sorted list of all methods.
40api_index()
41{
42	t=/tmp/__build.$$
43	cat <<END_OF_HEADER > $t
44m4_comment([DO NOT EDIT: automatically built by build script.])
45m4_page_title([m4_db: ifelse(M4API, C_API, C, C++) Handle Methods (version M4MAJOR.M4MINOR.M4PATCH)])
46m4_table_begin(, _center)
47m4_table_header(ifelse(M4API, C_API, C, C++) Handle Methods, Description)
48END_OF_HEADER
49
50	d="db dbc env lock log memp mutex rep seq txn"
51	for i in $d; do
52		egrep m4_table_element $i/m4.methods
53	done | sort -u >> $t
54	cat <<END_OF_FOOTER >> $t
55m4_table_end
56m4_page_footer
57END_OF_FOOTER
58	f=env/api_core.so
59	cmp $t $f > /dev/null 2>&1 || (echo "Building $f" && cp $t $f)
60}
61
62# reftoc:
63#	Berkeley DB Reference Guide table of contents.
64reftoc()
65{
66	rm -f $TARGET/ref/toc.html
67	sed -e "s/__EDIT_PRODUCT/Berkeley DB/" \
68	    -e "s/__EDIT_VERSION_MAJOR/$DB_VERSION_MAJOR/" \
69	    -e "s/__EDIT_VERSION_MINOR/$DB_VERSION_MINOR/" \
70	    -e "s/__EDIT_VERSION_PATCH/$DB_VERSION_PATCH/" \
71	    -e "s/__EDIT_RELEASE_DATE/$DB_RELEASE_DATE/" \
72	    < ref/toc.html > $TARGET/ref/toc.html
73}
74
75# build:
76#	Build the Berkeley DB documents.
77#
78#	$1: Directory to build.
79#	$2: API
80#	$3: Depth in tree
81#	$4: Source Directory
82build()
83{
84	f=$TARGET/$1
85	[ -d $f ] || mkdir -p $f
86
87	# Copy documents.
88	# Check for COPY in the Makefile first, some make programs have their
89	# own values for the "COPY" variable if it's not already set.
90	if egrep COPY $4/Makefile > /dev/null 2>&1; then
91		(cat $4/Makefile &&
92		 echo &&
93		 cat $DOCS_SRC/support/copy) > $f/Makefile
94		(cd $f && make BUILDDIR=$1 copy || exit 1)
95	fi
96
97	# Build documents.
98	(cat $DOCS_SRC/support/suffix &&
99	 echo &&
100	 echo "VPATH=\$(DOCS_SRC)/$4" &&
101	 echo &&
102	 cat $4/Makefile &&
103	 case $2 in
104	 C_API)
105		 echo 'all: $(COMMON) $(C)';;
106	 CXX_API)
107		 echo 'all: $(COMMON) $(CXX)';;
108	 NOAPI|UTILITY)
109		echo 'all: $(BUILD)';;
110	 esac) > $f/Makefile
111	(cd $f &&
112	 make ABSDIR=`pwd` \
113	      API=$2 \
114	      BUILDDIR=$1 \
115	      RELDIR=$3 || exit 1)
116
117	rm -f $f/Makefile
118}
119
120# run
121#	Run any single command.
122run()
123{
124	case "$1" in
125	c)
126		for i in $APILIST; do
127			build api_c C_API .. $i
128		done;;
129	check)
130		shift
131		sh $DOCS_SRC/support/check $TARGET $*;;
132	clean)
133		(cd $TARGET && rm -rf api_c api_cxx \
134		    api_tcl images index.html java license ref utility);;
135	cxx)
136		for i in $APILIST; do
137			build api_cxx CXX_API .. $i
138		done;;
139	index)
140		sh $DOCS_SRC/support/Xindex;;
141	javadoc)
142	        javadoc $JAVADOC_ARGS -protected -d $TARGET/java \
143                    -use -link http://java.sun.com/j2se/1.5.0/docs/api/ \
144                    -link http://java.sun.com/javaee/5/docs/api/ \
145                    -sourcepath $BDB_SRC/java/src \
146                    -source 1.5 -stylesheetfile support/style.css \
147                    -header '<b>Berkeley DB</b><br><font size="-1"> version '$DB_VERSION_MAJOR.$DB_VERSION_MINOR.$DB_VERSION_PATCH'</font>' \
148                    -windowtitle 'Oracle - Berkeley DB Java API' -bottom '<font size=1>Copyright (c) 1996,2008 Oracle.  All rights reserved.</font>' \
149                    com.sleepycat.db com.sleepycat.bind com.sleepycat.bind.serial com.sleepycat.bind.tuple com.sleepycat.collections com.sleepycat.persist com.sleepycat.persist.model com.sleepycat.persist.evolve com.sleepycat.persist.raw com.sleepycat.util \
150                    -group 'Berkeley DB Core Package' com.sleepycat.db \
151                    -group 'Berkeley DB Direct Persistence Layer (DPL) Packages' com.sleepycat.persist:com.sleepycat.persist.model:com.sleepycat.persist.evolve:com.sleepycat.persist.raw \
152                    -group 'Berkeley DB Bind and Collections Packages' com.sleepycat.bind:com.sleepycat.bind.serial:com.sleepycat.bind.tuple:com.sleepycat.collections:com.sleepycat.util | \
153                egrep -v 'Generating|first sentence';;
154	ref)
155		[ -d $TARGET/ref ] || mkdir $TARGET/ref
156		reftoc
157		for i in $REFLIST; do
158			build ref/$i C_API ../.. ref/$i
159		done;;
160	tcl)
161		build api_tcl TCL_API .. tcl;;
162	util*)
163		build utility UTILITY .. utility;;
164	*)
165		echo "build: unknown command $1"
166		exit 1;;
167	esac
168}
169
170# Source the RELEASE file to get major/minor numbers.
171. $BDB_SRC/dist/RELEASE
172
173PRODUCT="CORE"
174export DB_RELEASE_DATE
175export DB_VERSION_MAJOR
176export DB_VERSION_MINOR
177export DB_VERSION_PATCH
178version="$DB_VERSION_MAJOR.$DB_VERSION_MINOR.$DB_VERSION_PATCH"
179
180APILIST="api db db_except dbc dbt env exc historic lock log memp mutex
181rep rtc seq txn"
182REFLIST="am am_conf am_misc apprec arch build_brew build_s60 build_unix
183build_vxworks build_win build_wince cam changelog debug distrib dumpload
184env ext install intro java lock log mp program refs rep rpc sequence tcl
185test transapp txn upgrade upgrade.2.0 upgrade.3.0 upgrade.3.1
186upgrade.3.2 upgrade.3.3 upgrade.4.0 upgrade.4.1 upgrade.4.2 upgrade.4.3
187upgrade.4.4 upgrade.4.5 upgrade.4.6 upgrade.4.7 xa"
188
189if [ $# = 0 ]; then
190	echo "Building Berkeley DB documentation ..."
191
192	[ -d $TARGET ] || mkdir $TARGET
193
194	splash
195	api_index
196
197	build images NOAPI .. images
198	build license NOAPI .. license
199	run c
200	run cxx
201	run ref
202	run tcl
203	run utility
204	run index
205	run javadoc
206else
207	run $*
208fi
209