X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-sp-resolver.git;a=blobdiff_plain;f=configure.ac;h=eba8497a9826a8869c60eb17f49064f0c18eea8f;hp=8d14ff2d1a406d5e49363fdca632c9974be009eb;hb=94dc42e014828225e443697ff44f8b6112d701c9;hpb=fcbdf3b6cbabece8835dd0819aed8385309ab54b diff --git a/configure.ac b/configure.ac index 8d14ff2..eba8497 100644 --- a/configure.ac +++ b/configure.ac @@ -19,9 +19,9 @@ else GCC_CXXFLAGS="$CXXFLAGS -O2 -DNDEBUG" fi -AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_HEADERS([config.h src/shibresolver/config_pub.h]) AC_CONFIG_FILES([resolver.spec Portfile]) -AC_CONFIG_FILES([Makefile doc/Makefile src/shibresolver/Makefile]) +AC_CONFIG_FILES([Makefile doc/Makefile src/Makefile]) AC_PROG_CC([gcc gcc3 cc]) AC_PROG_CXX([g++ g++3 c++ CC]) @@ -103,7 +103,7 @@ AC_ARG_WITH(log4shib, fi ]) if test -f "${LOG4SHIB_CONFIG}"; then - LDFLAGS="`${LOG4SHIB_CONFIG} --libs` $LDFLAGS" + LIBS="`${LOG4SHIB_CONFIG} --libs` $LIBS" CPPFLAGS="`${LOG4SHIB_CONFIG} --cflags` $CPPFLAGS" AC_CHECK_HEADER([log4shib/CategoryStream.hh],,AC_MSG_ERROR([unable to find log4shib header files])) AC_LINK_IFELSE( @@ -128,7 +128,7 @@ else ]) if test -f "${LOG4CPP_CONFIG}"; then AC_MSG_WARN([will try to use log4cpp, note that most non-Internet2 supplied versions are not thread-safe]) - LDFLAGS="`${LOG4CPP_CONFIG} --libs` $LDFLAGS" + LIBS="`${LOG4CPP_CONFIG} --libs` $LIBS" CPPFLAGS="`${LOG4CPP_CONFIG} --cflags` $CPPFLAGS" AC_CHECK_HEADER([log4cpp/CategoryStream.hh],,AC_MSG_ERROR([unable to find log4cpp header files])) AC_LINK_IFELSE( @@ -269,6 +269,154 @@ AC_COMPILE_IFELSE( # restore master libs LIBS="$save_LIBS" +# GSS-API checking + +GSSAPI_ROOT="/usr" +AC_ARG_WITH(gssapi-includes, + AS_HELP_STRING([--with-gssapi-includes=DIR],[Specify location of GSSAPI header]), + [ GSSAPI_INCS="-I$withval" + want_gss="yes" ] +) + +AC_ARG_WITH(gssapi-libs, + AS_HELP_STRING([--with-gssapi-libs=DIR],[Specify location of GSSAPI libs]), + [ GSSAPI_LIB_DIR="-L$withval" + want_gss="yes" ] +) + +AC_ARG_WITH(gssapi, + AS_HELP_STRING([--with-gssapi=DIR],[Where to look for GSSAPI]), + [ GSSAPI_ROOT="$withval" + if test x"$GSSAPI_ROOT" != xno; then + want_gss="yes" + if test x"$GSSAPI_ROOT" = xyes; then + dnl if yes, then use default root + GSSAPI_ROOT="/usr" + fi + fi +]) + +save_CPPFLAGS="$CPPFLAGS" +AC_MSG_CHECKING([if GSSAPI support is requested]) +if test x"$want_gss" = xyes; then + AC_MSG_RESULT(yes) + + if test -z "$GSSAPI_INCS"; then + if test -f "$GSSAPI_ROOT/bin/krb5-config"; then + GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi` + elif test "$GSSAPI_ROOT" != "yes"; then + GSSAPI_INCS="-I$GSSAPI_ROOT/include" + fi + fi + + CPPFLAGS="$CPPFLAGS $GSSAPI_INCS" + + AC_CHECK_HEADER(gss.h, + [ + dnl found in the given dirs + AC_DEFINE([SHIBRESOLVER_HAVE_GSSGNU],[1],[if you have the GNU gssapi libraries]) + gnu_gss=yes + ], + [ + dnl not found, check Heimdal or MIT + AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1]) + AC_CHECK_HEADERS( + [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h], + [], + [not_mit=1], + [ +AC_INCLUDES_DEFAULT +#ifdef HAVE_GSSAPI_GSSAPI_H +#include +#endif + ]) + if test "x$not_mit" = "x1"; then + dnl MIT not found, check for Heimdal + AC_CHECK_HEADER([gssapi.h], + [ + dnl found + AC_DEFINE([SHIBRESOLVER_HAVE_GSSHEIMDAL],[1],[if you have the Heimdal gssapi libraries]) + ], + [ + dnl no header found, disabling GSS + want_gss=no + AC_MSG_WARN([disabling GSSAPI since no header files was found]) + ] + ) + else + dnl MIT found + AC_DEFINE([SHIBRESOLVER_HAVE_GSSMIT],[1],[if you have the MIT gssapi libraries]) + dnl check if we have a really old MIT kerberos (<= 1.2) + AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE]) + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ +#include +#include +#include + ]],[[ + gss_import_name( + (OM_uint32 *)0, + (gss_buffer_t)0, + GSS_C_NT_HOSTBASED_SERVICE, + (gss_name_t *)0); + ]]) + ],[ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + AC_DEFINE([HAVE_OLD_GSSMIT],[1],[if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE]) + ]) + fi + ] + ) +else + AC_MSG_RESULT(no) +fi +if test x"$want_gss" = xyes; then + AC_DEFINE([SHIBRESOLVER_HAVE_GSSAPI],[1],[if you have the gssapi libraries]) + + if test -n "$gnu_gss"; then + LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR" + LIBS="$LIBS -lgss" + else + if test -z "$GSSAPI_LIB_DIR"; then + GSSAPI_LIB_DIR="$GSSAPI_ROOT/lib$libsuff" + fi + if test "$GSSAPI_ROOT" != "yes"; then + LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff" + fi + if test -f "$GSSAPI_ROOT/bin/krb5-config"; then + dnl krb5-config does not have --libs-only-L or similar, put everything into LIBS + gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi` + else + if test "x$not_mit" = "x1"; then + gss_libs="-lgssapi" + else + gss_libs="-lgssapi_krb5" + fi + fi + LIBS="$LIBS $gss_libs" + fi + + AC_MSG_CHECKING([whether GSS-API naming extensions are available]) + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ +#ifdef SHIBRESOLVER_HAVE_GSSGNU +# include +#elif defined SHIBRESOLVER_HAVE_GSSMIT +# include +#else +# include +#endif]], + [[gss_get_name_attribute(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);]])], + [AC_MSG_RESULT([yes])AC_DEFINE([SHIBRESOLVER_HAVE_GSSAPI_NAMINGEXTS],[1],[Define to 1 if GSS-API naming extensions are available.])], + [AC_MSG_RESULT([no])]) + +else + CPPFLAGS="$save_CPPFLAGS" +fi + + AC_SUBST(LITE_LIBS) AC_SUBST(XMLSEC_LIBS)