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