1#!/bin/sh - 2# $Id$ 3# 4# Build the automatically generated function prototype files. 5 6msgc="/* DO NOT EDIT: automatically built by dist/s_include. */" 7 8. ./RELEASE 9 10head() 11{ 12 defonly=0 13 while : 14 do case "$1" in 15 space) 16 echo ""; shift;; 17 defonly) 18 defonly=1; shift;; 19 *) 20 name="$1"; break;; 21 esac 22 done 23 24 echo "$msgc" 25 echo "#ifndef $name" 26 echo "#define $name" 27 echo "" 28 if [ $defonly -eq 0 ]; then 29 echo "#if defined(__cplusplus)" 30 echo "extern \"C\" {" 31 echo "#endif" 32 echo "" 33 fi 34} 35 36tail() 37{ 38 defonly=0 39 while : 40 do case "$1" in 41 defonly) 42 defonly=1; shift;; 43 *) 44 name="$1"; break;; 45 esac 46 done 47 48 echo "" 49 if [ $defonly -eq 0 ]; then 50 echo "#if defined(__cplusplus)" 51 echo "}" 52 echo "#endif" 53 fi 54 echo "#endif /* !$name */" 55} 56 57# This script is run on a variety of systems. To avoid spurious changes, fix 58# some variables that affect sort order of ls(1). 59unset LANG 60export LANG 61LC_ALL="C" 62export LC_ALL 63 64# We are building several files: 65# 1 external #define file 66# 1 external prototype file 67# 1 internal #define file 68# N internal prototype files 69e_dfile=/tmp/__db_c.$$ 70e_pfile=/tmp/__db_a.$$ 71i_dfile=/tmp/__db_d.$$ 72i_pfile=/tmp/__db_b.$$ 73trap 'rm -f $e_dfile $e_pfile $i_dfile $i_pfile; exit 0' 0 1 2 3 13 15 74 75head defonly space _DB_EXT_DEF_IN_ > $e_dfile 76head space _DB_EXT_PROT_IN_ > $e_pfile 77head defonly _DB_INT_DEF_IN_ > $i_dfile 78 79# Process the standard directories, creating per-directory prototype 80# files and adding to the external prototype and #define files. 81for i in db btree clib common crypto dbreg env fileops hash hmac \ 82 lock log mp mutex os qam rep repmgr rpc_client rpc_server \ 83 sequence tcl txn; do 84 head "_${i}_ext_h_" > $i_pfile 85 86 if [ $i = os ] ; then 87 f=`ls ../$i/*.c \ 88 ../os_brew/*.c ../os_qnx/*.c ../os_vxworks/*.c ../os_windows/*.c` 89 elif [ $i = rpc_server ] ; then 90 f=`ls ../$i/c/*.c` 91 elif [ $i = crypto ] ; then 92 f=`ls ../$i/*.c ../$i/*/*.c` 93 elif [ $i = env ] ; then 94 f=`ls ../$i/*.c ../repmgr/repmgr_stub.c` 95 else 96 f=`ls ../$i/*.c` 97 fi 98 awk -f gen_inc.awk \ 99 -v db_version_unique_name=$DB_VERSION_UNIQUE_NAME \ 100 -v e_dfile=$e_dfile \ 101 -v e_pfile=$e_pfile \ 102 -v i_dfile=$i_dfile \ 103 -v i_pfile=$i_pfile $f 104 105 tail "_${i}_ext_h_" >> $i_pfile 106 107 f=../dbinc_auto/${i}_ext.h 108 cmp $i_pfile $f > /dev/null 2>&1 || 109 (echo "Building $f" && rm -f $f && cp $i_pfile $f && chmod 444 $f) 110done 111 112# Process directories which only add to the external prototype and #define 113# files. 114for i in dbm hsearch; do 115 f=`ls ../$i/*.c` 116 awk -f gen_inc.awk \ 117 -v db_version_unique_name=$DB_VERSION_UNIQUE_NAME \ 118 -v e_dfile=$e_dfile \ 119 -v e_pfile=$e_pfile \ 120 -v i_dfile="" \ 121 -v i_pfile="" $f 122done 123 124# There are a few global variables in DB -- add them to the external/internal 125# #define files. 126(echo "#define __db_global_values __db_global_values@DB_VERSION_UNIQUE_NAME@"; 127 echo "#define __repmgr_guesstimated_max __repmgr_guesstimated_max@DB_VERSION_UNIQUE_NAME@") >> $i_dfile 128 129# Wrap up the external #defines/prototypes, and internal #defines. 130tail defonly _DB_EXT_DEF_IN_ >> $e_dfile 131f=../dbinc_auto/ext_def.in 132cmp $e_dfile $f > /dev/null 2>&1 || 133 (echo "Building $f" && rm -f $f && cp $e_dfile $f && chmod 444 $f) 134 135tail _DB_EXT_PROT_IN_ >> $e_pfile 136f=../dbinc_auto/ext_prot.in 137cmp $e_pfile $f > /dev/null 2>&1 || 138 (echo "Building $f" && rm -f $f && cp $e_pfile $f && chmod 444 $f) 139 140tail defonly _DB_INT_DEF_IN_ >> $i_dfile 141f=../dbinc_auto/int_def.in 142cmp $i_dfile $f > /dev/null 2>&1 || 143 (echo "Building $f" && rm -f $f && cp $i_dfile $f && chmod 444 $f) 144 145# DB185 compatibility support. 146head space defonly _DB_EXT_185_DEF_IN_ > $e_dfile 147head space _DB_EXT_185_PROT_IN_ > $e_pfile 148 149f=`ls ../db185/*.c` 150awk -f gen_inc.awk \ 151 -v db_version_unique_name=$DB_VERSION_UNIQUE_NAME \ 152 -v e_dfile=$e_dfile \ 153 -v e_pfile=$e_pfile \ 154 -v i_dfile="" \ 155 -v i_pfile="" $f 156 157tail defonly _DB_EXT_185_DEF_IN_ >> $e_dfile 158f=../dbinc_auto/ext_185_def.in 159cmp $e_dfile $f > /dev/null 2>&1 || 160 (echo "Building $f" && rm -f $f && cp $e_dfile $f && chmod 444 $f) 161 162tail _DB_EXT_185_PROT_IN_ >> $e_pfile 163f=../dbinc_auto/ext_185_prot.in 164cmp $e_pfile $f > /dev/null 2>&1 || 165 (echo "Building $f" && rm -f $f && cp $e_pfile $f && chmod 444 $f) 166