mirror of
https://git.openafs.org/openafs.git
synced 2025-01-18 06:50:12 +00:00
Autoconf: Add GSSAPI autoconf rules
Add rules to autodetect the location of a system's GSSAPI libraries, using the gssapi.m4 script from rra-c-util 2.6 Change-Id: Idabb8fdb138a2dac6983aa4d5fd8a2f558ee08be Reviewed-on: http://gerrit.openafs.org/3943 Tested-by: Christof Hanke <christof.hanke@rzg.mpg.de> Reviewed-by: Derrick Brashear <shadow@dementia.org>
This commit is contained in:
parent
11b2c6d6fe
commit
d06a4a5576
@ -82,6 +82,9 @@ AS_IF([test x"$KRB5_LIBS" != x],
|
||||
AC_SUBST([BUILD_KRB5])
|
||||
AC_SUBST([MAKE_KRB5])
|
||||
|
||||
dnl Probe for GSSAPI
|
||||
RRA_LIB_GSSAPI
|
||||
|
||||
if test -d 'doc/man-pages' ; then
|
||||
MAN_MAKEFILE="doc/man-pages/Makefile doc/man-pages/install-man"
|
||||
else
|
||||
|
171
src/cf/gssapi.m4
Normal file
171
src/cf/gssapi.m4
Normal file
@ -0,0 +1,171 @@
|
||||
dnl Find the compiler and linker flags for GSS-API.
|
||||
dnl
|
||||
dnl Finds the compiler and linker flags for linking with GSS-API libraries.
|
||||
dnl Provides the --with-gssapi, --with-gssapi-include, and --with-gssapi-lib
|
||||
dnl configure option to specify a non-standard path to the GSS-API libraries.
|
||||
dnl Uses krb5-config where available unless reduced dependencies is requested.
|
||||
dnl
|
||||
dnl Provides the macro RRA_LIB_GSSAPI and sets the substitution variables
|
||||
dnl GSSAPI_CPPFLAGS, GSSAPI_LDFLAGS, and GSSAPI_LIBS. Also provides
|
||||
dnl RRA_LIB_GSSAPI_SWITCH to set CPPFLAGS, LDFLAGS, and LIBS to include the
|
||||
dnl GSS-API libraries, saving the ecurrent values, and RRA_LIB_GSSAPI_RESTORE
|
||||
dnl to restore those settings to before the last RRA_LIB_GSSAPI_SWITCH.
|
||||
dnl
|
||||
dnl Depends on RRA_ENABLE_REDUCED_DEPENDS and RRA_SET_LDFLAGS.
|
||||
dnl
|
||||
dnl Written by Russ Allbery <rra@stanford.edu>
|
||||
dnl Copyright 2005, 2006, 2007, 2008, 2009
|
||||
dnl Board of Trustees, Leland Stanford Jr. University
|
||||
dnl
|
||||
dnl See LICENSE for licensing terms.
|
||||
|
||||
dnl Save the current CPPFLAGS, LDFLAGS, and LIBS settings and switch to
|
||||
dnl versions that include the GSS-API flags. Used as a wrapper, with
|
||||
dnl RRA_LIB_GSSAPI_RESTORE, around tests.
|
||||
AC_DEFUN([RRA_LIB_GSSAPI_SWITCH],
|
||||
[rra_gssapi_save_CPPFLAGS="$CPPFLAGS"
|
||||
rra_gssapi_save_LDFLAGS="$LDFLAGS"
|
||||
rra_gssapi_save_LIBS="$LIBS"
|
||||
CPPFLAGS="$GSSAPI_CPPFLAGS $CPPFLAGS"
|
||||
LDFLAGS="$GSSAPI_LDFLAGS $LDFLAGS"
|
||||
LIBS="$GSSAPI_LIBS $LIBS"])
|
||||
|
||||
dnl Restore CPPFLAGS, LDFLAGS, and LIBS to their previous values (before
|
||||
dnl RRA_LIB_GSSAPI_SWITCH was called).
|
||||
AC_DEFUN([RRA_LIB_GSSAPI_RESTORE],
|
||||
[CPPFLAGS="$rra_gssapi_save_CPPFLAGS"
|
||||
LDFLAGS="$rra_gssapi_save_LDFLAGS"
|
||||
LIBS="$rra_gssapi_save_LIBS"])
|
||||
|
||||
dnl Set GSSAPI_CPPFLAGS and GSSAPI_LDFLAGS based on rra_gssapi_root,
|
||||
dnl rra_gssapi_libdir, and rra_gssapi_includedir.
|
||||
AC_DEFUN([_RRA_LIB_GSSAPI_PATHS],
|
||||
[AS_IF([test x"$rra_gssapi_libdir" != x],
|
||||
[GSSAPI_LDFLAGS="-L$rra_gssapi_libdir"],
|
||||
[AS_IF([test x"$rra_gssapi_root" != x],
|
||||
[RRA_SET_LDFLAGS([GSSAPI_LDFLAGS], [$rra_gssapi_root])])])
|
||||
AS_IF([test x"$rra_gssapi_includedir" != x],
|
||||
[GSSAPI_CPPFLAGS="-I$rra_gssapi_includedir"],
|
||||
[AS_IF([test x"$rra_gssapi_root" != x],
|
||||
[AS_IF([test x"$rra_gssapi_root" != x/usr],
|
||||
[GSSAPI_CPPFLAGS="-I${rra_gssapi_root}/include"])])])])
|
||||
|
||||
dnl Does the appropriate library checks for reduced-dependency GSS-API
|
||||
dnl linkage.
|
||||
AC_DEFUN([_RRA_LIB_GSSAPI_REDUCED],
|
||||
[RRA_LIB_GSSAPI_SWITCH
|
||||
AC_CHECK_LIB([gssapi_krb5], [gss_import_name], [GSSAPI_LIBS="-lgssapi_krb5"],
|
||||
[AC_CHECK_LIB([gssapi], [gss_import_name], [GSSAPI_LIBS="-lgssapi"],
|
||||
[AC_CHECK_LIB([gss], [gss_import_name], [GSSAPI_LIBS="-lgss"],
|
||||
[AC_MSG_ERROR([cannot find usable GSS-API library])])])])
|
||||
RRA_LIB_GSSAPI_RESTORE])
|
||||
|
||||
dnl Does the appropriate library checks for GSS-API linkage when we don't
|
||||
dnl have krb5-config or reduced dependencies. libgss is used as a last
|
||||
dnl resort, since it may be a non-functional mech-independent wrapper, but
|
||||
dnl it's the right choice on Solaris 10.
|
||||
AC_DEFUN([_RRA_LIB_GSSAPI_MANUAL],
|
||||
[RRA_LIB_GSSAPI_SWITCH
|
||||
rra_gssapi_extra=
|
||||
LIBS=
|
||||
AC_SEARCH_LIBS([res_search], [resolv], ,
|
||||
[AC_SEARCH_LIBS([__res_search], [resolv])])
|
||||
AC_SEARCH_LIBS([gethostbyname], [nsl])
|
||||
AC_SEARCH_LIBS([socket], [socket], ,
|
||||
[AC_CHECK_LIB([nsl], [socket], [LIBS="-lnsl -lsocket $LIBS"], ,
|
||||
[-lsocket])])
|
||||
AC_SEARCH_LIBS([crypt], [crypt])
|
||||
rra_gssapi_extra="$LIBS"
|
||||
LIBS="$rra_gssapi_save_LIBS"
|
||||
AC_CHECK_LIB([gssapi], [gss_import_name],
|
||||
[GSSAPI_LIBS="-lgssapi -lkrb5 -lasn1 -lroken -lcrypto -lcom_err"
|
||||
GSSAPI_LIBS="$GSSAPI_LIBS $rra_gssapi_extra"],
|
||||
[AC_CHECK_LIB([krb5support], [krb5int_getspecific],
|
||||
[rra_gssapi_extra="-lkrb5support $rra_gssapi_extra"],
|
||||
[AC_CHECK_LIB([pthreads], [pthread_setspecific],
|
||||
[rra_gssapi_pthread="-lpthreads"],
|
||||
[AC_CHECK_LIB([pthread], [pthread_setspecific],
|
||||
[rra_gssapi_pthread="-lpthread"])])
|
||||
AC_CHECK_LIB([krb5support], [krb5int_setspecific],
|
||||
[rra_gssapi_extra="-lkrb5support $rra_gssapi_extra"
|
||||
rra_gssapi_extra="$rra_gssapi_extra $rra_gssapi_pthread"], ,
|
||||
[$rra_gssapi_pthread])])
|
||||
AC_CHECK_LIB([com_err], [error_message],
|
||||
[rra_gssapi_extra="-lcom_err $rra_gssapi_extra"])
|
||||
AC_CHECK_LIB([k5crypto], [krb5int_hash_md5],
|
||||
[rra_gssapi_extra="-lk5crypto $rra_gssapi_extra"])
|
||||
rra_gssapi_extra="-lkrb5 $rra_gssapi_extra"
|
||||
AC_CHECK_LIB([gssapi_krb5], [gss_import_name],
|
||||
[GSSAPI_LIBS="-lgssapi_krb5 $rra_gssapi_extra"],
|
||||
[AC_CHECK_LIB([gss], [gss_import_name],
|
||||
[GSSAPI_LIBS="-lgss"],
|
||||
[AC_MSG_ERROR([cannot find usable GSS-API library])])],
|
||||
[$rra_gssapi_extra])],
|
||||
[-lkrb5 -lasn1 -lroken -lcrypto -lcom_err $rra_gssapi_extra])
|
||||
RRA_LIB_GSSAPI_RESTORE])
|
||||
|
||||
dnl Sanity-check the results of krb5-config and be sure we can really link a
|
||||
dnl GSS-API program. If not, fall back on the manual check.
|
||||
AC_DEFUN([_RRA_LIB_GSSAPI_CHECK],
|
||||
[RRA_LIB_GSSAPI_SWITCH
|
||||
AC_CHECK_FUNC([gss_import_name],
|
||||
[RRA_LIB_GSSAPI_RESTORE],
|
||||
[RRA_LIB_GSSAPI_RESTORE
|
||||
GSSAPI_CPPFLAGS=
|
||||
GSSAPI_LIBS=
|
||||
_RRA_LIB_GSSAPI_PATHS
|
||||
_RRA_LIB_GSSAPI_MANUAL])])
|
||||
|
||||
dnl The main macro.
|
||||
AC_DEFUN([RRA_LIB_GSSAPI],
|
||||
[AC_REQUIRE([RRA_ENABLE_REDUCED_DEPENDS])
|
||||
rra_gssapi_root=
|
||||
rra_gssapi_libdir=
|
||||
rra_gssapi_includedir=
|
||||
GSSAPI_CPPFLAGS=
|
||||
GSSAPI_LDFLAGS=
|
||||
GSSAPI_LIBS=
|
||||
AC_SUBST([GSSAPI_CPPFLAGS])
|
||||
AC_SUBST([GSSAPI_LDFLAGS])
|
||||
AC_SUBST([GSSAPI_LIBS])
|
||||
|
||||
AC_ARG_WITH([gssapi],
|
||||
[AS_HELP_STRING([--with-gssapi=DIR],
|
||||
[Location of GSS-API headers and libraries])],
|
||||
[AS_IF([test x"$withval" != xyes && test x"$withval" != xno],
|
||||
[rra_gssapi_root="$withval"])])
|
||||
AC_ARG_WITH([gssapi-include],
|
||||
[AS_HELP_STRING([--with-gssapi-include=DIR],
|
||||
[Location of GSS-API headers])],
|
||||
[AS_IF([test x"$withval" != xyes && test x"$withval" != xno],
|
||||
[rra_gssapi_includedir="$withval"])])
|
||||
AC_ARG_WITH([gssapi-lib],
|
||||
[AS_HELP_STRING([--with-gssapi-lib=DIR],
|
||||
[Location of GSS-API libraries])],
|
||||
[AS_IF([test x"$withval" != xyes && test x"$withval" != xno],
|
||||
[rra_gssapi_libdir="$withval"])])
|
||||
|
||||
AS_IF([test x"$rra_reduced_depends" = xtrue],
|
||||
[_RRA_LIB_GSSAPI_PATHS
|
||||
_RRA_LIB_GSSAPI_REDUCED],
|
||||
[AC_ARG_VAR([KRB5_CONFIG], [Path to krb5-config])
|
||||
AS_IF([test x"$rra_gssapi_root" != x && test -z "$KRB5_CONFIG"],
|
||||
[AS_IF([test -x "${rra_gssapi_root}/bin/krb5-config"],
|
||||
[KRB5_CONFIG="${rra_gssapi_root}/bin/krb5-config"])],
|
||||
[AC_PATH_PROG([KRB5_CONFIG], [krb5-config])])
|
||||
AS_IF([test x"$KRB5_CONFIG" != x && test -x "$KRB5_CONFIG"],
|
||||
[AC_CACHE_CHECK([for gssapi support in krb5-config],
|
||||
[rra_cv_lib_gssapi_config],
|
||||
[AS_IF(["$KRB5_CONFIG" 2>&1 | grep gssapi >/dev/null 2>&1],
|
||||
[rra_cv_lib_gssapi_config=yes],
|
||||
[rra_cv_lib_gssapi_config=no])])
|
||||
AS_IF([test "$rra_cv_lib_gssapi_config" = yes],
|
||||
[GSSAPI_CPPFLAGS=`"$KRB5_CONFIG" --cflags gssapi 2>/dev/null`
|
||||
GSSAPI_LIBS=`"$KRB5_CONFIG" --libs gssapi 2>/dev/null`],
|
||||
[GSSAPI_CPPFLAGS=`"$KRB5_CONFIG" --cflags 2>/dev/null`
|
||||
GSSAPI_LIBS=`"$KRB5_CONFIG" --libs 2>/dev/null`])
|
||||
GSSAPI_CPPFLAGS=`echo "$GSSAPI_CPPFLAGS" \
|
||||
| sed 's%-I/usr/include ?%%'`
|
||||
_RRA_LIB_GSSAPI_CHECK],
|
||||
[_RRA_LIB_GSSAPI_PATHS
|
||||
_RRA_LIB_GSSAPI_MANUAL])])])
|
Loading…
Reference in New Issue
Block a user