X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=configure.in;h=43c0b4616f5f94cf2999ab46bdeeef0c88cef426;hp=3ca9f217bffef23319f2d6b71ff143cf10c29c4f;hb=025a0c58ed9043d231672a22232c438f29511ca0;hpb=764e46f5c5fe1a6e376f4cd350424f33afc9e838 diff --git a/configure.in b/configure.in index 3ca9f21..43c0b46 100644 --- a/configure.in +++ b/configure.in @@ -4,27 +4,70 @@ AC_INIT(rules.mk) AC_PREFIX_DEFAULT(/usr) # The nfs-utils version -VERSION="0.1.9.1" +VERSION="1.0.8-rc1" AC_SUBST(VERSION) dnl ************************************************************* dnl * Define the set of applicable options dnl ************************************************************* +AC_ARG_WITH(release, + [ --with-release=XXX set release to XXX [1]], + RELEASE=$withval, + RELEASE=1) + AC_SUBST(RELEASE) AC_ARG_WITH(statedir, [ --with-statedir=/foo use state dir /foo [/var/lib/nfs]], statedir=$withval, statedir=/var/lib/nfs) AC_SUBST(statedir) +AC_ARG_WITH(statduser, + [ --with-statduser=rpcuser user for statd to run under [rpcuser or nobody]], + statduser=$withval, + if grep -s '^rpcuser:' /etc/passwd > /dev/null; then + statduser=rpcuser + else + statduser=nobody + fi) + AC_SUBST(statduser) AC_ARG_ENABLE(nfsv3, [ --enable-nfsv3 enable support for NFSv3], enable_nfsv3=$enableval, - enable_nfsv3=no) + enable_nfsv3=yes) if test "$enable_nfsv3" = yes; then - AC_DEFINE(NFS3_SUPPORTED) + AC_DEFINE(NFS3_SUPPORTED, 1, [Define this if you want NFSv3 support compiled in]) else enable_nfsv3= fi AC_SUBST(enable_nfsv3) +AC_ARG_ENABLE(nfsv4, + [ --enable-nfsv4 enable support for NFSv4], + enable_nfsv4=$enableval, + enable_nfsv4=yes) + if test "$enable_nfsv4" = yes; then + AC_DEFINE(NFS4_SUPPORTED, 1, [Define this if you want NFSv4 support compiled in]) + IDMAPD=idmapd + else + enable_nfsv4= + IDMAPD= + fi + AC_SUBST(IDMAPD) + AC_SUBST(enable_nfsv4) +AC_ARG_ENABLE(gss, + [ --enable-gss enable support for rpcsec_gss], + enable_gss=$enableval, + enable_gss=yes) + if test "$enable_gss" = yes; then + AC_DEFINE(GSS_SUPPORTED, 1, [Define this if you want rpcsec_gss support compiled in]) + GSSD=gssd + SVCGSSD=svcgssd + else + enable_gss= + GSSD= + SVCGSSD= + fi + AC_SUBST(GSSD) + AC_SUBST(SVCGSSD) + AC_SUBST(enable_gss) AC_ARG_ENABLE(kprefix, [ --enable-kprefix install progs as rpc.knfsd etc], test "$enableval" = "yes" && kprefix=k, @@ -35,16 +78,33 @@ AC_ARG_ENABLE(secure-statd, test "$enableval" = "yes" && secure_statd=yes, secure_statd=no) if test "$secure_statd" = yes; then - AC_DEFINE(RESTRICTED_STATD) + AC_DEFINE(RESTRICTED_STATD, 1, [Define this if you want to enable various security checks in statd. These checks basically keep anyone but lockd from using this service.]) fi AC_SUBST(secure_statd) +AC_ARG_ENABLE(rquotad, + [ --enable-rquotad enable rquotad], + enable_rquotad=$enableval, + enable_rquotad=yes) + if test "$enable_rquotad" = yes; then + RQUOTAD=rquotad + else + RQUOTAD= + fi + AC_SUBST(RQUOTAD) dnl AC_ARG_ENABLE(frob, enable frobnicator,, enable_frob=test) AC_CONFIG_HEADER(support/include/config.h) AC_PROG_CC -AC_PROG_CXX AC_PROG_CPP AC_PROG_INSTALL + +test "${CC_FOR_BUILD+set}" = set || CC_FOR_BUILD="$CC" +AC_SUBST(CC_FOR_BUILD) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(AR, ar) +AC_CHECK_TOOL(LD, ld) + AC_STDC_HEADERS AC_GNULIBC dnl AC_LN_SF @@ -56,6 +116,12 @@ dnl ************************************************************* AC_CHECK_LIB(socket, main, [LIBSOCKET="-lnsl"]) AC_CHECK_LIB(nsl, main, [LIBNSL="-lnsl"]) AC_CHECK_LIB(crypt, crypt, [LIBCRYPT="-lcrypt"]) +if test "$enable_nfsv4" = yes; then + AC_CHECK_LIB(event, event_dispatch, [libevent=1], [AC_MSG_ERROR(libevent needed for nfsv4 support)]) + AC_CHECK_LIB(nfsidmap, nfs4_init_name_mapping, [libnfsidmap=1], [AC_MSG_ERROR(libnfsidmap needed for nfsv4 support)]) + AC_CHECK_HEADERS(event.h, ,[AC_MSG_ERROR(libevent needed for nfsv4 support)]) + AC_CHECK_HEADERS(nfsidmap.h, ,[AC_MSG_ERROR(libnfsidmap needed for nfsv4 support)]) +fi if test "$knfsd_cv_glibc2" = no; then AC_CHECK_LIB(bsd, daemon, [LIBBSD="-lbsd"]) fi @@ -67,22 +133,135 @@ AC_SUBST(LIBBSD) AC_TCP_WRAPPER AC_SUBST(LIBWRAP) +if test "$enable_gss" = yes; then + dnl 'gss' also depends on nfsidmap.h - at least for svcgssd_proc.c + AC_CHECK_HEADERS(nfsidmap.h, ,[AC_MSG_ERROR(libnfsidmap needed for gss support)]) + AC_CHECK_HEADERS(spkm3.h, ,[AC_MSG_WARN(could not locate SPKM3 header; will not have SPKM3 support)]) + + dnl Checks for Kerberos + dnl NOTE: while we intend to do generic gss-api, currently we + dnl have a requirement to get an initial Kerberos machine + dnl credential. Thus, the requirement for Kerberos. + dnl The Kerberos gssapi library will be dynamically loaded? + AC_MSG_CHECKING(for Kerberos v5) + AC_ARG_WITH(krb5, + [ --with-krb5=DIR use Kerberos v5 installation in DIR], + [ case "$withval" in + yes|no) + krb5_with="" + ;; + *) + krb5_with="$withval" + ;; + esac ] + ) + + for dir in $krb5_with /usr /usr/kerberos /usr/local /usr/local/krb5 \ + /usr/krb5 /usr/heimdal /usr/local/heimdal /usr/athena ; do + dnl This ugly hack brought on by the split installation of + dnl MIT Kerberos on Fedora Core 1 + K5CONFIG="" + if test -f $dir/bin/krb5-config; then + K5CONFIG=$dir/bin/krb5-config + elif test -f "/usr/kerberos/bin/krb5-config"; then + K5CONFIG="/usr/kerberos/bin/krb5-config" + fi + if test "$K5CONFIG" != ""; then + KRBINC=`$K5CONFIG --cflags` + KRBLIB=`$K5CONFIG --libs gssapi` + K5VERS=`$K5CONFIG --version | head -n 1 | awk '{split($4,v,"."); if (v[[3]] == "") v[[3]] = "0"; print v[[1]]v[[2]]v[[3]] }'` + AC_DEFINE_UNQUOTED(KRB5_VERSION, $K5VERS, [Define this as the Kerberos version number]) + if test -f $dir/include/gssapi/gssapi_krb5.h -a \ + \( -f $dir/lib/libgssapi_krb5.a -o \ + -f $dir/lib/libgssapi_krb5.so \) ; then + AC_DEFINE(HAVE_KRB5, 1, [Define this if you have MIT Kerberos libraries]) + KRBDIR="$dir" + dnl If we are using MIT K5 1.3.1 and before, we *MUST* use the + dnl private function (gss_krb5_ccache_name) to get correct + dnl behavior of changing the ccache used by gssapi. + dnl Starting in 1.3.2, we *DO NOT* want to use + dnl gss_krb5_ccache_name, instead we want to set KRB5CCNAME + dnl to get gssapi to use a different ccache + if test $K5VERS -le 131; then + AC_DEFINE(USE_GSS_KRB5_CCACHE_NAME, 1, [Define this if the private function, gss_krb5_cache_name, must be used to tell the Kerberos library which credentials cache to use. Otherwise, this is done by setting the KRB5CCNAME environment variable]) + fi + gssapi_lib=gssapi_krb5 + break + dnl The following ugly hack brought on by the split installation + dnl of Heimdal Kerberos on SuSe + elif test \( -f $dir/include/heim_err.h -o\ + -f $dir/include/heimdal/heim_err.h \) -a \ + -f $dir/lib/libroken.a; then + AC_DEFINE(HAVE_HEIMDAL, 1, [Define this if you have Heimdal Kerberos libraries]) + KRBDIR="$dir" + gssapi_lib=gssapi + break + fi + CFLAGS=$CFLAGS `$K5CONFIG --cflags` + fi + done + dnl We didn't find a usable Kerberos environment + if test "x$KRBDIR" = "x"; then + if test "x$krb5_with" = "x"; then + AC_MSG_ERROR(Kerberos v5 with GSS support not found: consider --disable-gss or --with-krb5=) + else + AC_MSG_ERROR(Kerberos v5 with GSS support not found at $krb5_with) + fi + fi + CFLAGS="$CFLAGS `$K5CONFIG --cflags`" + AC_MSG_RESULT($KRBDIR) + + dnl Now check for functions within gssapi library + AC_CHECK_LIB($gssapi_lib, gss_krb5_export_lucid_sec_context, + AC_DEFINE(HAVE_LUCID_CONTEXT_SUPPORT, 1, [Define this if the Kerberos GSS library supports gss_krb5_export_lucid_sec_context]), ,$KRBLIB) + AC_CHECK_LIB($gssapi_lib, gss_krb5_set_allowable_enctypes, + AC_DEFINE(HAVE_SET_ALLOWABLE_ENCTYPES, 1, [Define this if the Kerberos GSS library supports gss_krb5_set_allowable_enctypes]), ,$KRBLIB) + AC_CHECK_LIB($gssapi_lib, gss_krb5_ccache_name, + AC_DEFINE(HAVE_GSS_KRB5_CCACHE_NAME, 1, [Define this if the Kerberos GSS library supports gss_krb5_ccache_name]), ,$KRBLIB) + + dnl If they specified a directory and it didn't work, give them a warning + if test "x$krb5_with" != "x" -a "$krb5_with" != "$KRBDIR"; then + AC_MSG_WARN(Using $KRBDIR instead of requested value of $krb5_with for Kerberos!) + fi + + dnl This is not done until here because we need to have KRBLIB set + dnl "librpcsecgss=1" is so that it doesn't get added to LIBS + AC_CHECK_LIB(rpcsecgss, authgss_create_default, [librpcsecgss=1], [AC_MSG_ERROR(librpcsecgss needed for nfsv4 support)], $KRBLIB) + AC_CHECK_LIB(rpcsecgss, authgss_set_debug_level, + AC_DEFINE(HAVE_AUTHGSS_SET_DEBUG_LEVEL, 1, [Define this if the rpcsec_gss library has the function authgss_set_debug_level]),, $KRBLIB) + + AC_SUBST([KRBDIR]) + AC_SUBST([KRBLIB]) + AC_SUBST([KRBINC]) + AC_SUBST([K5VERS]) +fi + dnl ************************************************************* dnl Check for headers dnl ************************************************************* dnl AC_HAVE_HEADERS(string.h) +AC_HAVE_HEADERS(com_err.h) +AC_HAVE_HEADERS(et/com_err.h) dnl ************************************************************* dnl Check for functions dnl ************************************************************* AC_HAVE_FUNCS(innetgr) +dnl ************************************************************* +dnl Check for data sizes +dnl ************************************************************* +AC_CHECK_SIZEOF(short) +AC_CHECK_SIZEOF(int) +AC_CHECK_SIZEOF(long) +AC_CHECK_SIZEOF(size_t) + dnl ************************************************************* dnl Export some path names to config.h dnl ************************************************************* -AC_DEFINE_UNQUOTED(NFS_STATEDIR, "$statedir") +AC_DEFINE_UNQUOTED(NFS_STATEDIR, "$statedir", [This defines the location of the NFS state files. Warning: this must match definitions in config.mk!]) AC_SUBST(LDFLAGS) AC_SUBST(CXXFLAGS) AC_SUBST(CFLAGS) -AC_OUTPUT(config.mk nfs-utils.spec) +AC_OUTPUT(config.mk utils/Makefile)