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