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
# $Id: rpc.ac,v 12.0 2004/11/17 03:43:37 bostic Exp $
# Try and configure RPC support.
AC_DEFUN(AM_RPC_CONFIGURE, [
AC_DEFINE(HAVE_RPC)
AH_TEMPLATE(HAVE_RPC, [Define to 1 if building RPC client/server.])
# We use the target's rpcgen utility because it may be architecture
# specific, for example, 32- or 64-bit specific.
XDR_FILE=$srcdir/../rpc_server/db_server.x
# Prefer the -C option to rpcgen which generates ANSI C-conformant
# code.
RPCGEN="rpcgen -C"
AC_MSG_CHECKING(["$RPCGEN" build of db_server.h])
$RPCGEN -h $XDR_FILE > db_server.h 2>/dev/null
if test $? -ne 0; then
AC_MSG_RESULT([no])
# Try rpcgen without the -C option.
RPCGEN="rpcgen"
AC_MSG_CHECKING(["$RPCGEN" build of db_server.h])
$RPCGEN -h $XDR_FILE > db_server.h 2>/dev/null
if test $? -ne 0; then
AC_MSG_RESULT([no])
AC_MSG_ERROR(
[Unable to build RPC support: $RPCGEN failed.])
fi
fi
# Some rpcgen programs generate a set of client stubs called something
# like __db_env_create_4003 and functions on the server to handle the
# request called something like __db_env_create_4003_svc. Others
# expect client and server stubs to both be called __db_env_create_4003.
#
# We have to generate code in whichever format rpcgen expects, and the
# only reliable way to do that is to check what is in the db_server.h
# file we just created.
if grep "env_create_[[0-9]]*_svc" db_server.h >/dev/null 2>&1 ; then
sed 's/__SVCSUFFIX__/_svc/' \
< $srcdir/../rpc_server/c/gen_db_server.c > gen_db_server.c
else
sed 's/__SVCSUFFIX__//' \
< $srcdir/../rpc_server/c/gen_db_server.c > gen_db_server.c
fi
AC_MSG_RESULT([yes])
$RPCGEN -l $XDR_FILE |
sed -e 's/^#include.*db_server.h.*/#include "db_server.h"/' \
-e '1,/^#include/s/^#include/#include "db_config.h"\
&/' > db_server_clnt.c
$RPCGEN -s tcp $XDR_FILE |
sed -e 's/^#include.*db_server.h.*/#include "db_server.h"/' \
-e 's/^main *()/__dbsrv_main()/' \
-e 's/^main *(.*argc.*argv.*)/__dbsrv_main(int argc, char *argv[])/' \
-e '/^db_rpc_serverprog/,/^}/{' \
-e 's/return;//' \
-e 's/^}/__dbsrv_timeout(0);}/' \
-e '}' \
-e '1,/^#include/s/^#include/#include "db_config.h"\
&/' > db_server_svc.c
$RPCGEN -c $XDR_FILE |
sed -e 's/^#include.*db_server.h.*/#include "db_server.h"/' \
-e '1,/^#include/s/^#include/#include "db_config.h"\
&/' > db_server_xdr.c
RPC_SERVER_H=db_server.h
RPC_CLIENT_OBJS="\$(RPC_CLIENT_OBJS)"
ADDITIONAL_PROGS="berkeley_db_svc $ADDITIONAL_PROGS"
case "$host_os" in
hpux*)
AC_CHECK_FUNC(svc_run,,
AC_CHECK_LIB(nsl, svc_run,
LIBS="-lnsl $LIBS"; LIBTSO_LIBS="-lnsl $LIBTSO_LIBS";
LIBJSO_LIBS="-lnsl $LIBJSO_LIBS"));;
solaris*)
AC_CHECK_FUNC(svc_run,, AC_CHECK_LIB(nsl, svc_run));;
esac
])