X-Git-Url: http://www.project-moonshot.org/gitweb/?p=mech_eap.git;a=blobdiff_plain;f=acinclude.m4;h=aaf604a270d62a522042d032829582a59b649abe;hp=2cff774e8778d2112bc36583418f7e4d1fff09e7;hb=HEAD;hpb=4866125c4be79ec72fc388eabba01505786850b4 diff --git a/acinclude.m4 b/acinclude.m4 index 2cff774..aaf604a 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1,5 +1,13 @@ dnl Based on the one from the Boinc project by Reinhard +AC_DEFUN([AX_CHECK_WINDOWS], +[AC_MSG_CHECKING(for windows) +target_windows="no" +AC_CHECK_HEADER(windows.h,[target_windows="yes"],[target_windows="no"]) +AC_MSG_RESULT($target_windows) +AM_CONDITIONAL(TARGET_WINDOWS,test "x$target_windows" = "xyes") +])dnl + AC_DEFUN([AX_CHECK_KRB5], [AC_MSG_CHECKING(for GSS-API and Kerberos implementation) KRB5_DIR= @@ -9,17 +17,28 @@ AC_ARG_WITH(krb5, [Use krb5 (in specified installation directory)]), [check_krb5_dir="$withval"], [check_krb5_dir=]) -for dir in $check_krb5_dir /usr /usr/local ; do +for dir in $check_krb5_dir $prefix /usr/local /usr ; do krb5dir="$dir" if test -x "$dir/bin/krb5-config"; then found_krb5="yes"; - KRB5_CFLAGS=`$dir/bin/krb5-config gssapi --cflags`; - KRB5_LIBS=`$dir/bin/krb5-config gssapi --libs`; + if test "x$target_windows" = "xyes"; then + KRB5_CFLAGS=-I"$check_krb5_dir/include"; + KRB5_LDFLAGS="-L$check_krb5_dir/lib/"; + KRB5_LIBS="-lkrb5_32 -lgssapi32"; + COMPILE_ET="$check_krb5_dir/bin/compile_et"; + AC_MSG_RESULT([yes]) + else + KRB5_CFLAGS=`$dir/bin/krb5-config gssapi --cflags`; + KRB5_LDFLAGS="-L$dir/lib"; + KRB5_LIBS=`$dir/bin/krb5-config gssapi --libs` +AC_MSG_RESULT([yes]) + AC_PATH_PROG(COMPILE_ET, [compile_et], [compile_et], [$dir/bin$PATH_SEPARATOr]) + fi break; fi done -AC_MSG_RESULT($found_krb5) if test x_$found_krb5 != x_yes; then + AC_MSG_RESULT($found_krb5) AC_MSG_ERROR([ ---------------------------------------------------------------------- Cannot find GSS-API/Kerberos libraries. @@ -31,10 +50,15 @@ if test x_$found_krb5 != x_yes; then else printf "Kerberos found in $krb5dir\n"; AC_SUBST(KRB5_CFLAGS) + AC_SUBST(KRB5_LDFLAGS) AC_SUBST(KRB5_LIBS) - AC_CHECK_LIB(gssapi_krb5, GSS_C_NT_COMPOSITE_EXPORT, [AC_DEFINE_UNQUOTED([HAVE_GSS_C_NT_COMPOSITE_EXPORT], 1, [Define if GSS-API library supports recent naming extensions draft])], [], "$KRB5_LIBS") - AC_CHECK_LIB(gssapi_krb5, gss_inquire_attrs_for_mech, [AC_DEFINE_UNQUOTED([HAVE_GSS_INQUIRE_ATTRS_FOR_MECH], 1, [Define if GSS-API library supports RFC 5587])], [], "$KRB5_LIBS") - AC_CHECK_LIB(gssapi_krb5, gss_krb5_import_cred, [AC_DEFINE_UNQUOTED([HAVE_GSS_KRB5_IMPORT_CRED], 1, [Define if GSS-API library supports gss_krb5_import_cred])], [], "$KRB5_LIBS") + AC_SUBST(COMPILE_ET) + AC_CHECK_LIB(krb5, GSS_C_NT_COMPOSITE_EXPORT, [AC_DEFINE_UNQUOTED([HAVE_GSS_C_NT_COMPOSITE_EXPORT], 1, [Define if GSS-API library supports recent naming extensions draft])], [], "$KRB5_LIBS") + AC_CHECK_LIB(krb5, gss_inquire_attrs_for_mech, [AC_DEFINE_UNQUOTED([HAVE_GSS_INQUIRE_ATTRS_FOR_MECH], 1, [Define if GSS-API library supports RFC 5587])], [], "$KRB5_LIBS") + AC_CHECK_LIB(krb5, gss_krb5_import_cred, [AC_DEFINE_UNQUOTED([HAVE_GSS_KRB5_IMPORT_CRED], 1, [Define if GSS-API library supports gss_krb5_import_cred])], [], "$KRB5_LIBS") + AC_CHECK_LIB(krb5, heimdal_version, [AC_DEFINE_UNQUOTED([HAVE_HEIMDAL_VERSION], 1, [Define if building against Heimdal Kerberos implementation]) heimdal=yes], [heimdal=no], "$KRB5_LIBS") + AM_CONDITIONAL(HEIMDAL, test "x$heimdal" != "xno") + AC_CHECK_TYPE(gss_const_name_t, [AC_DEFINE([MECHEAP_GSS_CONST_NAME_T_IS_POINTER], 1, [Define if gss_const_name_t is a pointer. Broken krb5 10.x headers define it as a struct.])], [], [[#include "]]) fi ])dnl @@ -47,7 +71,7 @@ AC_ARG_WITH(eap, [Use eap (in specified installation directory)]), [check_eap_dir="$withval"], [check_eap_dir=]) -for dir in $check_eap_dir /usr /usr/local ; do +for dir in $check_eap_dir $prefix /usr /usr/local ../libeap ; do eapdir="$dir" if test -f "$dir/src/eap_peer/eap.h"; then found_eap="yes"; @@ -95,7 +119,7 @@ else -DEAP_SERVER_GPSK \ -DEAP_SERVER_GPSK_SHA256 \ -DIEEE8021X_EAPOL"; - EAP_LIBS="-leap -lutils -lcrypto -ltls"; + EAP_LIBS="-leap -lutils -lcrypto -ltls -lssl"; EAP_LDFLAGS="-L$eapdir/eap_example -L$eapdir/src/utils -L$eapdir/src/crypto -L$eapdir/src/tls"; AC_SUBST(EAP_CFLAGS) AC_SUBST(EAP_LDFLAGS) @@ -112,7 +136,7 @@ AC_ARG_WITH(shibsp, [Use shibspboleth (in specified installation directory)]), [check_shibsp_dir="$withval"], [check_shibsp_dir=]) -for dir in $check_shibsp_dir /usr /usr/local ; do +for dir in $check_shibsp_dir $prefix /usr /usr/local ; do shibspdir="$dir" if test -f "$dir/include/shibsp/SPConfig.h"; then found_shibsp="yes"; @@ -125,7 +149,7 @@ AC_MSG_RESULT($found_shibsp) if test x_$found_shibsp != x_yes; then AC_MSG_ERROR([ ---------------------------------------------------------------------- - Cannot find Shibboleth/OpenSAML libraries. + Cannot find Shibboleth libraries. Please install Shibboleth or specify installation directory with --with-shibsp=(dir). @@ -133,11 +157,12 @@ if test x_$found_shibsp != x_yes; then ]) else printf "Shibboleth found in $shibspdir\n"; - SHIBSP_LIBS="-lshibsp -llog4shib -lsaml -lxml-security-c -lxmltooling -lxerces-c"; + SHIBSP_LIBS="-lshibsp -lsaml -lxml-security-c -lxmltooling -lxerces-c"; SHIBSP_LDFLAGS="-L$shibspdir/lib"; AC_SUBST(SHIBSP_CXXFLAGS) AC_SUBST(SHIBSP_LDFLAGS) AC_SUBST(SHIBSP_LIBS) + AC_DEFINE_UNQUOTED([HAVE_SHIBSP], 1, [Define is Shibboleth SP is available]) fi ])dnl @@ -150,7 +175,8 @@ AC_ARG_WITH(shibresolver, [Use Shibboleth resolver (in specified installation directory)]), [check_shibresolver_dir="$withval"], [check_shibresolver_dir=]) -for dir in $check_shibresolver_dir /usr /usr/local ; do +if test x_$check_shibresolver_dir != x_no; then +for dir in $check_shibresolver_dir $prefix /usr /usr/local ; do shibresolverdir="$dir" if test -f "$dir/include/shibresolver/resolver.h"; then found_shibresolver="yes"; @@ -159,11 +185,14 @@ for dir in $check_shibresolver_dir /usr /usr/local ; do break; fi done +fi AC_MSG_RESULT($found_shibresolver) +if test x_$check_shibresolver_dir != x_no; then if test x_$found_shibresolver != x_yes; then - AC_MSG_ERROR([ + AC_MSG_WARN([ ---------------------------------------------------------------------- - Cannot find Shibboleth resolver libraries. + Cannot find Shibboleth resolver libraries, building without + Shibboleth support. Please install Shibboleth or specify installation directory with --with-shibresolver=(dir). @@ -176,6 +205,89 @@ else AC_SUBST(SHIBRESOLVER_CXXFLAGS) AC_SUBST(SHIBRESOLVER_LDFLAGS) AC_SUBST(SHIBRESOLVER_LIBS) + AC_DEFINE_UNQUOTED([HAVE_SHIBRESOLVER], 1, [Define is Shibboleth resolver is available]) +fi +fi +])dnl + +AC_DEFUN([AX_CHECK_OPENSAML], +[AC_MSG_CHECKING(for OpenSAML implementation) +OPENSAML_DIR= +found_opensaml="no" +AC_ARG_WITH(opensaml, + AC_HELP_STRING([--with-opensaml], + [Use OpenSAML (in specified installation directory)]), + [check_opensaml_dir="$withval"], + [check_opensaml_dir=]) +if test x_$check_opensaml_dir != x_no; then +for dir in $check_opensaml_dir $prefix /usr /usr/local ; do + opensamldir="$dir" + if test -f "$dir/include/saml/Assertion.h"; then + found_opensaml="yes"; + OPENSAML_DIR="${opensamldir}" + OPENSAML_CXXFLAGS="-I$opensamldir/include"; + break; + fi +done +fi +AC_MSG_RESULT($found_opensaml) +if test x_$check_opensaml_dir != x_no; then +if test x_$found_opensaml != x_yes; then + AC_MSG_WARN([ +---------------------------------------------------------------------- + Cannot find OpenSAML libraries, building without OpenSAML support. + + Please install OpenSAML or specify installation directory with + --with-opensaml=(dir). +---------------------------------------------------------------------- +]) +else + printf "OpenSAML found in $opensamldir\n"; + OPENSAML_LIBS="-lsaml -lxml-security-c -lxmltooling -lxerces-c"; + OPENSAML_LDFLAGS="-L$opensamldir/lib"; + AC_SUBST(OPENSAML_CXXFLAGS) + AC_SUBST(OPENSAML_LDFLAGS) + AC_SUBST(OPENSAML_LIBS) + AC_DEFINE_UNQUOTED([HAVE_OPENSAML], 1, [Define is OpenSAML is available]) +fi +fi +])dnl + +AC_DEFUN([AX_CHECK_OPENSSL], +[AC_MSG_CHECKING(for OpenSSL) +OPENSSL_DIR= +found_openssl="no" +AC_ARG_WITH(openssl, + AC_HELP_STRING([--with-openssl], + [Use OpenSSL (in specified installation directory)]), + [check_openssl_dir="$withval"], + [check_openssl_dir=]) +for dir in $check_openssl_dir $prefix /usr /usr/local ; do + openssldir="$dir" + if test -f "$dir/include/openssl/opensslv.h"; then + found_openssl="yes"; + OPENSSL_DIR="${openssldir}" + OPENSSL_CFLAGS="-I$openssldir/include"; + break; + fi +done +AC_MSG_RESULT($found_openssl) +if test x_$found_openssl != x_yes; then + AC_MSG_ERROR([ +---------------------------------------------------------------------- + Cannot find OpenSSL libraries. + + Please install libssl or specify installation directory with + --with-openssl=(dir). +---------------------------------------------------------------------- +]) +else + printf "OpenSSL found in $openssldir\n"; + OPENSSL_LIBS="-lssl -lcrypto"; + OPENSSL_LDFLAGS="-L$openssldir/lib"; + AC_SUBST(OPENSSL_CFLAGS) + AC_SUBST(OPENSSL_LDFLAGS) + AC_SUBST(OPENSSL_LIBS) fi ])dnl @@ -188,7 +300,7 @@ AC_ARG_WITH(radsec, [Use radsec (in specified installation directory)]), [check_radsec_dir="$withval"], [check_radsec_dir=]) -for dir in $check_radsec_dir /usr /usr/local ; do +for dir in $check_radsec_dir $prefix /usr /usr/local ; do radsecdir="$dir" if test -f "$dir/include/radsec/radsec.h"; then found_radsec="yes"; @@ -216,3 +328,76 @@ else AC_SUBST(RADSEC_LIBS) fi ])dnl + +AC_DEFUN([AX_CHECK_JANSSON], +[AC_MSG_CHECKING(for jansson) +JANSSON_DIR= +found_jansson="no" +AC_ARG_WITH(jansson, + AC_HELP_STRING([--with-jansson], + [Use jansson (in specified installation directory)]), + [check_jansson_dir="$withval"], + [check_jansson_dir=]) +for dir in $check_jansson_dir $prefix /usr /usr/local ; do + janssondir="$dir" + if test -f "$dir/include/jansson.h"; then + found_jansson="yes"; + JANSSON_DIR="${janssondir}" + JANSSON_CFLAGS="-I$janssondir/include"; + break; + fi +done +AC_MSG_RESULT($found_jansson) +if test x_$found_jansson != x_yes; then + AC_MSG_ERROR([ +---------------------------------------------------------------------- + Cannot find jansson libraries. + + Please install libjansson or specify installation directory with + --with-jansson=(dir). +---------------------------------------------------------------------- +]) +else + printf "jansson found in $janssondir\n"; + JANSSON_LIBS="-ljansson"; + JANSSON_LDFLAGS="-L$janssondir/lib"; + AC_SUBST(JANSSON_CFLAGS) + AC_SUBST(JANSSON_LDFLAGS) + AC_SUBST(JANSSON_LIBS) +fi +])dnl + +AC_DEFUN([AX_CHECK_LIBMOONSHOT], +[AC_MSG_CHECKING(for Moonshot identity selector implementation) +LIBMOONSHOT_DIR= +LIBMOONSHOT_CFLAGS= +LIBMOONSHOT_LDFLAGS= +LIBMOONSHOT_LIBS= +found_libmoonshot="no" +AC_ARG_WITH(libmoonshot, + AC_HELP_STRING([--with-libmoonshot], + [Use libmoonshot (in specified installation directory)]), + [check_libmoonshot_dir="$withval"], + [check_libmoonshot_dir=]) +for dir in $check_libmoonshot_dir $prefix /usr /usr/local ; do + libmoonshotdir="$dir" + if test -f "$dir/include/libmoonshot.h"; then + found_libmoonshot="yes"; + LIBMOONSHOT_DIR="${libmoonshotdir}" + LIBMOONSHOT_CFLAGS="-I$libmoonshotdir/include"; + break; + fi +done +AC_MSG_RESULT($found_libmoonshot) +if test x_$found_libmoonshot = x_yes; then + printf "libmoonshot found in $libmoonshotdir\n"; + LIBMOONSHOT_LIBS="-lmoonshot"; + LIBMOONSHOT_LDFLAGS="-L$libmoonshot/lib"; + AC_CHECK_LIB(moonshot, moonshot_get_identity, [AC_DEFINE_UNQUOTED([HAVE_MOONSHOT_GET_IDENTITY], 1, [Define if Moonshot identity selector is available])], [], "$LIBMOONSHOT_LIBS") +fi + AC_SUBST(LIBMOONSHOT_CFLAGS) + AC_SUBST(LIBMOONSHOT_LDFLAGS) + AC_SUBST(LIBMOONSHOT_LIBS) + AM_CONDITIONAL(LIBMOONSHOT, test "x$found_libmoonshot" != "xno") +])dnl +