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 161 162 163
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>
Autoconf Macro: sg_afs
</title>
<link rel="stylesheet" type="text/css" href="ac-archive.css">
</head>
<body>
<table summary="web navigation" style="width:100%;">
<tbody>
<tr>
<td style="width:50%;" align="center">
<a href="http://autoconf-archive.cryp.to/sg_afs.m4">Download M4
Source</a>
</td>
<td style="width:50%;" align="center">
<a href="macros-by-category.html">Macro Index Page</a>
</td>
</tr>
</tbody>
</table>
<hr>
<h1>
sg_afs
</h1>
<h2>
Synopsis
</h2>
<p class="indent" style="white-space:nowrap;">
<code>SG_AFS</code>
</p>
<h2>
Description
</h2>
<div class="indent">
<p>
This sets up the proper includes and libs needed for building programs that
link with AFS. It adds a --with-afsdir option that lets you specify where
the AFS includes and libs are (defaulting to /usr/afsws).
</p>
<p>
It also adds the -I and -L options to CPPFLAGS and LDFLAGS
</p>
<p>
It creates an AC_SUBST(AFSWS) that contains the directory being used.
</p>
<p>
It checks for -lBSD, -lsocket and -lnsl since AFS needs those if they
exist. It also adds -R/usr/ucblib -L/usr/ucblib -lucb if on Solaris.
</p>
<p>
It sets VICE_ETC_PATH to be the directory where /usr/vice/etc lives, since
AFS 3.4 uses a different define than AFS 3.5 does for that path.
</p>
<p>
Finally, it defines AFS_int32 to be the in32 type needed. In older versions
of afs it was 'int32', and in newer versions it's 'afs_int32'.
</p>
</div>
<h2>
Author
</h2>
<p class="indent">
Scott Grosch <Scott.Grosch@intel.com>
</p>
<h2>
Last Modified
</h2>
<p class="indent">
2003-10-29
</p>
<h2>
M4 Source Code
</h2>
<div class="indent">
<pre class="m4source">
AC_DEFUN([SG_AFS],
[AC_ARG_WITH(afsdir, AC_HELP_STRING([--with-afsdir=DIR],
[Directory holding AFS includes/libs]),
sg_cv_with_afsdir=$withval)
AC_CACHE_CHECK([for location of AFS directory],
sg_cv_with_afsdir, sg_cv_with_afsdir=/usr/afsws)
CPPFLAGS="-I${sg_cv_with_afsdir}/include $CPPFLAGS"
LDFLAGS="-L${sg_cv_with_afsdir}/lib -L${sg_cv_with_afsdir}/lib/afs $LDFLAGS"
dnl Once we specify a directory, we try to link a test program. If the link
dnl works, we store the value of the directory in a cache variable. If not,
dnl we put _FAILED_ in the cache value. In this way we don't try to link
dnl the test program if our afsdir value was cached, as we know it works.
AC_MSG_CHECKING([whether the specified AFS dir looks valid])
if test "x${sg_cv_afsdir_link_works:-set}" != "x$sg_cv_with_afsdir"; then
save_LIBS="$LIBS"
LIBS="$save_LIBS -lcmd"
AC_TRY_LINK([#include <afs/cmd.h>],
[cmd_CreateAlias((struct cmd_syndesc *)0, "foo")],
sg_cv_afsdir_link_works=$sg_cv_with_afsdir,
sg_cv_afsdir_link_works=_FAILED_)
LIBS="$save_LIBS"
wasCached=""
else
wasCached="(cached)"
fi
if test "x$sg_cv_afsdir_link_works" = "x$sg_cv_with_afsdir"; then
AC_MSG_RESULT([${wasCached} yes])
else
AC_MSG_RESULT([no])
AC_MSG_ERROR([Unable to link test program....bad AFS dir specified?])
fi
dnl Much easier to use in XXX.in files
AFSWS=$sg_cv_with_afsdir
AC_SUBST(AFSWS)
dnl Linking against AFS always needs these
AC_CHECK_LIB(BSD, signal)
AC_CHECK_LIB(socket, getservbyname)
AC_CHECK_LIB(nsl, gethostbyname)
dnl On Solaris is just always needs the -lucb library from the compatibility
dnl area. I can't think of any other way to do this than just hardcode it.
AC_CANONICAL_HOST
case "$host" in
*-*-solaris*)
LDFLAGS="-L/usr/ucblib -R/usr/ucblib $LDFLAGS"
LIBS="-lucb $LIBS"
;;
esac
dnl And it always needs these libs added
LIBS="$LIBS -lacl -lvolser -lvldb -lprot -lkauth -lauth -lrxkad -lubik ${sg_cv_with_afsdir}/lib/afs/vlib.a -ldir ${sg_cv_with_afsdir}/lib/afs/util.a -lsys -lafsint -lrx -lsys -ldes -lcom_err -llwp -lcmd -laudit"
dnl This really should be AC_CHECK_LIB() but that always fails for some reason
if test -f "${sg_cv_with_afsdir}/lib/afs/libaudit.a"; then
LIBS="$LIBS -laudit"
fi
dnl If dirpath.h exists and has the value, use that. Otherwise don't
AC_CHECK_HEADERS(afs/dirpath.h,
[AC_DEFINE(VICE_ETC_PATH, AFSDIR_CLIENT_ETC_DIRPATH)],
[AC_DEFINE(VICE_ETC_PATH, AFSCONF_CLIENTNAME)])
dnl Find out if we should use afs_int32 or int32. They changed the
dnl type across AFS versions.
AC_CACHE_CHECK([for AFS int32 type], ac_cv_type_int32,
[AC_EGREP_CPP(dnl
changequote(<<,>>)dnl
<<(^|[^a-zA-Z_0-9])afs_int32[^a-zA-Z_0-9]>>dnl
changequote([,]), [#include <afs/stds.h>
], ac_cv_type_int32=afs_int32, ac_cv_type_int32=int32)])
AC_DEFINE_UNQUOTED(AFS_int32, $ac_cv_type_int32)
AH_TEMPLATE([VICE_ETC_PATH],
[Define this to be the define used in the AFS header for /usr/vice/etc])
AH_TEMPLATE([AFS_int32], [Define this to be the type AFS uses for int32])
])dnl
</pre>
</div>
</body>
</html>
|