1# sasl2.m4--sasl2 libraries and includes 2# Rob Siemborski 3 4# SASL2_CRYPT_CHK 5# --------------- 6AC_DEFUN([SASL_GSSAPI_CHK], 7[AC_REQUIRE([SASL2_CRYPT_CHK]) 8AC_REQUIRE([CMU_SOCKETS]) 9AC_ARG_ENABLE([gssapi], 10 [AC_HELP_STRING([--enable-gssapi=<DIR>], 11 [enable GSSAPI authentication [yes]])], 12 [gssapi=$enableval], 13 [gssapi=yes]) 14AC_ARG_WITH([gss_impl], 15 [AC_HELP_STRING([--with-gss_impl={heimdal|mit|cybersafe|seam|auto}], 16 [choose specific GSSAPI implementation [[auto]]])], 17 [gss_impl=$withval], 18 [gss_impl=auto]) 19 20gs2="no" 21if test "$gssapi" != no; then 22 platform= 23 case "${host}" in 24 *-*-linux*) 25 platform=__linux 26 ;; 27 *-*-hpux*) 28 platform=__hpux 29 ;; 30 *-*-irix*) 31 platform=__irix 32 ;; 33 *-*-solaris2*) 34# When should we use __sunos? 35 platform=__solaris 36 ;; 37 *-*-aix*) 38###_AIX 39 platform=__aix 40 ;; 41 *-*-darwin*) 42 platform=__darwin 43 ;; 44 *) 45 AC_WARN([The system type is not recognized. If you believe that CyberSafe GSSAPI works on this platform, please update the configure script]) 46 if test "$gss_impl" = "cybersafe"; then 47 AC_MSG_ERROR([CyberSafe was forced, cannot continue as platform is not supported]) 48 fi 49 ;; 50 esac 51 52 cmu_saved_CPPFLAGS=$CPPFLAGS 53 54 if test -d ${gssapi}; then 55 CPPFLAGS="$CPPFLAGS -I$gssapi/include" 56# We want to keep -I in our CPPFLAGS, but only if we succeed 57 cmu_saved_CPPFLAGS=$CPPFLAGS 58### I am not sure how useful is this (and whether this is required at all 59### especially when we have to provide two -L flags for new CyberSafe 60 LDFLAGS="$LDFLAGS -L$gssapi/lib" 61 62 if test -n "$platform"; then 63 if test "$gss_impl" = "auto" -o "$gss_impl" = "cybersafe"; then 64 CPPFLAGS="$CPPFLAGS -D$platform" 65 if test -d "${gssapi}/appsec-sdk/include"; then 66 CPPFLAGS="$CPPFLAGS -I${gssapi}/appsec-sdk/include" 67 fi 68 fi 69 fi 70 fi 71 AC_CHECK_HEADER([gssapi.h],, 72 [AC_CHECK_HEADER([gssapi/gssapi.h],, [gssapi=no])]) 73 AC_CHECK_HEADERS(gssapi/gssapi_ext.h) 74 CPPFLAGS=$cmu_saved_CPPFLAGS 75 76fi 77 78if test "$gssapi" != no; then 79 if test "$ac_cv_header_gssapi_h" = "yes"; then 80 AC_DEFINE(HAVE_GSSAPI_H,,[Define if you have the gssapi.h header file]) 81 elif test "$ac_cv_header_gssapi_gssapi_h" = "yes"; then 82 AC_DEFINE(HAVE_GSSAPI_GSSAPI_H,,[Define if you have the gssapi/gssapi.h header file]) 83 fi 84 85 # We need to find out which gssapi implementation we are 86 # using. Supported alternatives are: MIT Kerberos 5, 87 # Heimdal Kerberos 5 (http://www.pdc.kth.se/heimdal), 88 # CyberSafe Kerberos 5 (http://www.cybersafe.com/) 89 # and Sun SEAM (http://wwws.sun.com/software/security/kerberos/) 90 # 91 # The choice is reflected in GSSAPIBASE_LIBS 92 93 AC_CHECK_LIB(resolv,res_search) 94 if test -d ${gssapi}; then 95 gssapi_dir="${gssapi}/lib" 96 GSSAPIBASE_LIBS="-L$gssapi_dir" 97 GSSAPIBASE_STATIC_LIBS="-L$gssapi_dir" 98 else 99 # FIXME: This is only used for building cyrus, and then only as 100 # a real hack. it needs to be fixed. 101 gssapi_dir="/usr/local/lib" 102 fi 103 104 # Check a full link against the Heimdal libraries. 105 # If this fails, check a full link against the MIT libraries. 106 # If this fails, check a full link against the CyberSafe libraries. 107 # If this fails, check a full link against the Solaris 8 and up libgss. 108 109 if test "$gss_impl" = "auto" -o "$gss_impl" = "heimdal"; then 110 gss_failed=0 111 AC_CHECK_LIB(gssapi,gss_unwrap,gss_impl="heimdal",gss_failed=1, 112 ${GSSAPIBASE_LIBS} -lgssapi -lkrb5 -lasn1 -lroken ${LIB_CRYPT} ${LIB_DES} -lcom_err ${LIB_SOCKET}) 113 if test "$gss_impl" != "auto" -a "$gss_failed" = "1"; then 114 gss_impl="failed" 115 fi 116 fi 117 118 if test "$gss_impl" = "auto" -o "$gss_impl" = "mit"; then 119 gss_failed=0 120 AC_CHECK_LIB(gssapi_krb5,gss_unwrap,gss_impl="mit",gss_failed=1, 121 ${GSSAPIBASE_LIBS} -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err ${LIB_SOCKET}) 122 if test "$gss_impl" != "auto" -a "$gss_failed" = "1"; then 123 gss_impl="failed" 124 fi 125 fi 126 127 # For Cybersafe one has to set a platform define in order to make compilation work 128 if test "$gss_impl" = "auto" -o "$gss_impl" = "cybersafe"; then 129 130 cmu_saved_CPPFLAGS=$CPPFLAGS 131 cmu_saved_GSSAPIBASE_LIBS=$GSSAPIBASE_LIBS 132# FIXME - Note that the libraries are in .../lib64 for 64bit kernels 133 if test -d "${gssapi}/appsec-rt/lib"; then 134 GSSAPIBASE_LIBS="$GSSAPIBASE_LIBS -L${gssapi}/appsec-rt/lib" 135 fi 136 CPPFLAGS="$CPPFLAGS -D$platform" 137 if test -d "${gssapi}/appsec-sdk/include"; then 138 CPPFLAGS="$CPPFLAGS -I${gssapi}/appsec-sdk/include" 139 fi 140 141 gss_failed=0 142 143# Check for CyberSafe with two libraries first, than fall back to a single 144# library (older CyberSafe) 145 146 unset ac_cv_lib_gss_csf_gss_acq_user 147 AC_CHECK_LIB(gss,csf_gss_acq_user,gss_impl="cybersafe03", 148 [unset ac_cv_lib_gss_csf_gss_acq_user; 149 AC_CHECK_LIB(gss,csf_gss_acq_user,gss_impl="cybersafe", 150 gss_failed=1,$GSSAPIBASE_LIBS -lgss)], 151 [${GSSAPIBASE_LIBS} -lgss -lcstbk5]) 152 153 if test "$gss_failed" = "1"; then 154# Restore variables 155 GSSAPIBASE_LIBS=$cmu_saved_GSSAPIBASE_LIBS 156 CPPFLAGS=$cmu_saved_CPPFLAGS 157 158 if test "$gss_impl" != "auto"; then 159 gss_impl="failed" 160 fi 161 fi 162 fi 163 164 if test "$gss_impl" = "auto" -o "$gss_impl" = "seam"; then 165 gss_failed=0 166 AC_CHECK_LIB(gss,gss_unwrap,gss_impl="seam",gss_failed=1,-lgss) 167 if test "$gss_impl" != "auto" -a "$gss_failed" = "1"; then 168 gss_impl="failed" 169 fi 170 fi 171 172 if test "$gss_impl" = "mit"; then 173 GSSAPIBASE_LIBS="$GSSAPIBASE_LIBS -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err" 174 GSSAPIBASE_STATIC_LIBS="$GSSAPIBASE_LIBS $gssapi_dir/libgssapi_krb5.a $gssapi_dir/libkrb5.a $gssapi_dir/libk5crypto.a $gssapi_dir/libcom_err.a" 175 elif test "$gss_impl" = "heimdal"; then 176 CPPFLAGS="$CPPFLAGS" 177 GSSAPIBASE_LIBS="$GSSAPIBASE_LIBS -lgssapi -lkrb5 -lasn1 -lroken ${LIB_CRYPT} ${LIB_DES} -lcom_err" 178 GSSAPIBASE_STATIC_LIBS="$GSSAPIBASE_STATIC_LIBS $gssapi_dir/libgssapi.a $gssapi_dir/libkrb5.a $gssapi_dir/libasn1.a $gssapi_dir/libroken.a $gssapi_dir/libcom_err.a ${LIB_CRYPT}" 179 elif test "$gss_impl" = "cybersafe03"; then 180# Version of CyberSafe with two libraries 181 CPPFLAGS="$CPPFLAGS -D$platform -I${gssapi}/appsec-sdk/include" 182 GSSAPIBASE_LIBS="$GSSAPIBASE_LIBS -lgss -lcstbk5" 183 # there is no static libgss for CyberSafe 184 GSSAPIBASE_STATIC_LIBS=none 185 elif test "$gss_impl" = "cybersafe"; then 186 CPPFLAGS="$CPPFLAGS -D$platform -I${gssapi}/appsec-sdk/include" 187 GSSAPIBASE_LIBS="$GSSAPIBASE_LIBS -lgss" 188 # there is no static libgss for CyberSafe 189 GSSAPIBASE_STATIC_LIBS=none 190 elif test "$gss_impl" = "seam"; then 191 GSSAPIBASE_LIBS=-lgss 192 # there is no static libgss on Solaris 8 and up 193 GSSAPIBASE_STATIC_LIBS=none 194 elif test "$gss_impl" = "failed"; then 195 gssapi="no" 196 GSSAPIBASE_LIBS= 197 GSSAPIBASE_STATIC_LIBS= 198 AC_WARN([Disabling GSSAPI - specified library not found]) 199 else 200 gssapi="no" 201 GSSAPIBASE_LIBS= 202 GSSAPIBASE_STATIC_LIBS= 203 AC_WARN([Disabling GSSAPI - no library]) 204 fi 205fi 206 207# 208# Cybersafe defines both GSS_C_NT_HOSTBASED_SERVICE and GSS_C_NT_USER_NAME 209# in gssapi\rfckrb5.h 210# 211if test "$gssapi" != "no"; then 212 if test "$gss_impl" = "cybersafe" -o "$gss_impl" = "cybersafe03"; then 213 AC_EGREP_CPP(hostbased_service_gss_nt_yes, 214 [#include <gssapi/gssapi.h> 215 #ifdef GSS_C_NT_HOSTBASED_SERVICE 216 hostbased_service_gss_nt_yes 217 #endif], 218 [AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE,, 219 [Define if your GSSAPI implementation defines GSS_C_NT_HOSTBASED_SERVICE])], 220 [AC_WARN([Cybersafe define not found])]) 221 222 elif test "$ac_cv_header_gssapi_h" = "yes"; then 223 AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi.h, 224 [AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE,, 225 [Define if your GSSAPI implementation defines GSS_C_NT_HOSTBASED_SERVICE])]) 226 elif test "$ac_cv_header_gssapi_gssapi_h"; then 227 AC_EGREP_HEADER(GSS_C_NT_HOSTBASED_SERVICE, gssapi/gssapi.h, 228 [AC_DEFINE(HAVE_GSS_C_NT_HOSTBASED_SERVICE,, 229 [Define if your GSSAPI implementation defines GSS_C_NT_HOSTBASED_SERVICE])]) 230 fi 231 232 if test "$gss_impl" = "cybersafe" -o "$gss_impl" = "cybersafe03"; then 233 AC_EGREP_CPP(user_name_yes_gss_nt, 234 [#include <gssapi/gssapi.h> 235 #ifdef GSS_C_NT_USER_NAME 236 user_name_yes_gss_nt 237 #endif], 238 [AC_DEFINE(HAVE_GSS_C_NT_USER_NAME,, 239 [Define if your GSSAPI implementation defines GSS_C_NT_USER_NAME])], 240 [AC_WARN([Cybersafe define not found])]) 241 elif test "$ac_cv_header_gssapi_h" = "yes"; then 242 AC_EGREP_HEADER(GSS_C_NT_USER_NAME, gssapi.h, 243 [AC_DEFINE(HAVE_GSS_C_NT_USER_NAME,, 244 [Define if your GSSAPI implementation defines GSS_C_NT_USER_NAME])]) 245 AC_EGREP_HEADER(gss_inquire_attrs_for_mech, gssapi.h, rfc5587=yes) 246 AC_EGREP_HEADER(gss_inquire_mech_for_saslname, gssapi.h, rfc5801=yes) 247 elif test "$ac_cv_header_gssapi_gssapi_h"; then 248 AC_EGREP_HEADER(GSS_C_NT_USER_NAME, gssapi/gssapi.h, 249 [AC_DEFINE(HAVE_GSS_C_NT_USER_NAME,, 250 [Define if your GSSAPI implementation defines GSS_C_NT_USER_NAME])]) 251 AC_EGREP_HEADER(gss_inquire_attrs_for_mech, gssapi/gssapi.h, rfc5587=yes) 252 AC_EGREP_HEADER(gss_inquire_mech_for_saslname, gssapi.h, rfc5801=yes) 253 fi 254fi 255 256AC_MSG_CHECKING([GSSAPI]) 257if test "$gssapi" != no; then 258 AC_MSG_RESULT([with implementation ${gss_impl}]) 259 AC_CHECK_LIB(resolv,res_search,GSSAPIBASE_LIBS="$GSSAPIBASE_LIBS -lresolv") 260 SASL_MECHS="$SASL_MECHS libgssapiv2.la" 261 SASL_STATIC_OBJS="$SASL_STATIC_OBJS gssapi.o" 262 SASL_STATIC_SRCS="$SASL_STATIC_SRCS \$(top_srcdir)/plugins/gssapi.c" 263 if test "$rfc5587" = "yes" -a "$rfc5801" = "yes"; then 264 gs2="yes" 265 SASL_MECHS="$SASL_MECHS libgs2.la" 266 SASL_STATIC_OBJS="$SASL_STATIC_OBJS gs2.o" 267 SASL_STATIC_SRCS="$SASL_STATIC_SRCS \$(top_srcdir)/plugins/gs2.c" 268 fi 269 270 cmu_save_LIBS="$LIBS" 271 LIBS="$LIBS $GSSAPIBASE_LIBS" 272 AC_CHECK_FUNCS(gsskrb5_register_acceptor_identity) 273 if test "$ac_cv_func_gsskrb5_register_acceptor_identity" = no ; then 274 AC_CHECK_HEADERS(gssapi/gssapi_krb5.h) 275 if test "$ac_cv_header_gssapi_gssapi_krb5_h" = "yes"; then 276 AC_CHECK_DECL(gsskrb5_register_acceptor_identity, 277 [AC_DEFINE(HAVE_GSSKRB5_REGISTER_ACCEPTOR_IDENTITY,1, 278 [Define if your GSSAPI implementation defines gsskrb5_register_acceptor_identity])],, 279 [ 280 AC_INCLUDES_DEFAULT 281 #include <gssapi/gssapi_krb5.h> 282 ]) 283 fi 284 fi 285 AC_CHECK_FUNCS(gss_decapsulate_token) 286 AC_CHECK_FUNCS(gss_encapsulate_token) 287 AC_CHECK_FUNCS(gss_oid_equal) 288 LIBS="$cmu_save_LIBS" 289 290 cmu_save_LIBS="$LIBS" 291 LIBS="$LIBS $GSSAPIBASE_LIBS" 292 AC_CHECK_FUNCS(gss_get_name_attribute) 293 LIBS="$cmu_save_LIBS" 294 295 cmu_save_LIBS="$LIBS" 296 LIBS="$LIBS $GSSAPIBASE_LIBS" 297 AC_CHECK_FUNCS(gss_inquire_sec_context_by_oid) 298 if test "$ac_cv_func_gss_inquire_sec_context_by_oid" = no ; then 299 if test "$ac_cv_header_gssapi_gssapi_ext_h" = "yes"; then 300 AC_CHECK_DECL(gss_inquire_sec_context_by_oid, 301 [AC_DEFINE(HAVE_GSS_INQUIRE_SEC_CONTEXT_BY_OID,1, 302 [Define if your GSSAPI implementation defines gss_inquire_sec_context_by_oid])],, 303 [ 304 AC_INCLUDES_DEFAULT 305 #include <gssapi/gssapi_ext.h> 306 ]) 307 fi 308 fi 309 if test "$ac_cv_header_gssapi_gssapi_ext_h" = "yes"; then 310 AC_EGREP_HEADER(GSS_C_SEC_CONTEXT_SASL_SSF, gssapi/gssapi_ext.h, 311 [AC_DEFINE(HAVE_GSS_C_SEC_CONTEXT_SASL_SSF,, 312 [Define if your GSSAPI implementation defines GSS_C_SEC_CONTEXT_SASL_SSF])]) 313 fi 314 LIBS="$cmu_save_LIBS" 315 316 AC_CACHE_CHECK([for SPNEGO support in GSSAPI libraries],[ac_cv_gssapi_supports_spnego],[ 317 cmu_save_LIBS="$LIBS" 318 LIBS="$LIBS $GSSAPIBASE_LIBS" 319 AC_TRY_RUN([ 320#ifdef HAVE_GSSAPI_H 321#include <gssapi.h> 322#else 323#include <gssapi/gssapi.h> 324#endif 325 326int main(void) 327{ 328 gss_OID_desc spnego_oid = { 6, (void *) "\x2b\x06\x01\x05\x05\x02" }; 329 gss_OID_set mech_set; 330 OM_uint32 min_stat; 331 int have_spnego = 0; 332 333 if (gss_indicate_mechs(&min_stat, &mech_set) == GSS_S_COMPLETE) { 334 gss_test_oid_set_member(&min_stat, &spnego_oid, mech_set, &have_spnego); 335 gss_release_oid_set(&min_stat, &mech_set); 336 } 337 338 return (!have_spnego); // 0 = success, 1 = failure 339} 340],[ac_cv_gssapi_supports_spnego=yes],[ac_cv_gssapi_supports_spnego=no]) 341 LIBS="$cmu_save_LIBS" 342 ]) 343 AS_IF([test "$ac_cv_gssapi_supports_spnego" = yes],[ 344 AC_DEFINE(HAVE_GSS_SPNEGO,,[Define if your GSSAPI implementation supports SPNEGO]) 345 ]) 346 347else 348 AC_MSG_RESULT([disabled]) 349fi 350AC_SUBST(GSSAPIBASE_LIBS) 351])# SASL_GSSAPI_CHK 352 353 354# SASL_SET_GSSAPI_LIBS 355# -------------------- 356AC_DEFUN([SASL_SET_GSSAPI_LIBS], 357[SASL_GSSAPI_LIBS_SET="yes" 358]) 359 360 361# CMU_SASL2 362# --------- 363# What we want to do here is setup LIB_SASL with what one would 364# generally want to have (e.g. if static is requested, make it that, 365# otherwise make it dynamic. 366# 367# We also want to create LIB_DYN_SASL and DYNSASLFLAGS. 368# 369# Also sets using_static_sasl to "no" "static" or "staticonly" 370# 371AC_DEFUN([CMU_SASL2], 372[AC_REQUIRE([SASL_GSSAPI_CHK]) 373 374AC_ARG_WITH(sasl, 375 [AC_HELP_STRING([--with-sasl=DIR],[Compile with libsasl2 in <DIR>])], 376 with_sasl="$withval", 377 with_sasl="yes") 378 379AC_ARG_WITH(staticsasl, 380 [AC_HELP_STRING([--with-staticsasl=DIR], 381 [Compile with staticly linked libsasl2 in <DIR>])], 382 [with_staticsasl="$withval"; 383 if test $with_staticsasl != "no"; then 384 using_static_sasl="static" 385 fi], 386 [with_staticsasl="no"; using_static_sasl="no"]) 387 388SASLFLAGS="" 389LIB_SASL="" 390 391cmu_saved_CPPFLAGS=$CPPFLAGS 392cmu_saved_LDFLAGS=$LDFLAGS 393cmu_saved_LIBS=$LIBS 394 395if test ${with_staticsasl} != "no"; then 396 if test -d ${with_staticsasl}; then 397 if test -d ${with_staticsasl}/lib64 ; then 398 ac_cv_sasl_where_lib=${with_staticsasl}/lib64 399 else 400 ac_cv_sasl_where_lib=${with_staticsasl}/lib 401 fi 402 ac_cv_sasl_where_lib=${with_staticsasl}/lib 403 ac_cv_sasl_where_inc=${with_staticsasl}/include 404 405 SASLFLAGS="-I$ac_cv_sasl_where_inc" 406 LIB_SASL="-L$ac_cv_sasl_where_lib" 407 CPPFLAGS="${cmu_saved_CPPFLAGS} -I${ac_cv_sasl_where_inc}" 408 LDFLAGS="${cmu_saved_LDFLAGS} -L${ac_cv_sasl_where_lib}" 409 else 410 with_staticsasl="/usr" 411 fi 412 413 AC_CHECK_HEADER(sasl/sasl.h, 414 [AC_CHECK_HEADER(sasl/saslutil.h, 415 [for i42 in lib64 lib; do 416 if test -r ${with_staticsasl}/$i42/libsasl2.a; then 417 ac_cv_found_sasl=yes 418 AC_MSG_CHECKING([for static libsasl]) 419 LIB_SASL="$LIB_SASL ${with_staticsasl}/$i42/libsasl2.a" 420 fi 421 done 422 AC_CHECK_FUNC(dlopen,,[AC_CHECK_LIB(dl, dlopen, [LIB_SASL+="$LIB_SASL -ldl"])]) 423 if test ! "$ac_cv_found_sasl" = "yes"; then 424 AC_MSG_CHECKING([for static libsasl]) 425 AC_MSG_ERROR([Could not find ${with_staticsasl}/lib*/libsasl2.a]) 426 fi])]) 427 428 AC_MSG_RESULT([found]) 429 430 if test "x$SASL_GSSAPI_LIBS_SET" = "x"; then 431 LIB_SASL="$LIB_SASL $GSSAPIBASE_STATIC_LIBS" 432 else 433 SASL_GSSAPI_LIBS_SET="" 434 cmu_saved_LIBS="$GSSAPIBASE_STATIC_LIBS $cmu_saved_LIBS" 435 fi 436fi 437 438if test -d ${with_sasl}; then 439 ac_cv_sasl_where_lib=${with_sasl}/lib 440 ac_cv_sasl_where_inc=${with_sasl}/include 441 442 DYNSASLFLAGS="-I$ac_cv_sasl_where_inc" 443 if test "$ac_cv_sasl_where_lib" != ""; then 444 CMU_ADD_LIBPATH_TO($ac_cv_sasl_where_lib, LIB_DYN_SASL) 445 fi 446 LIB_DYN_SASL="$LIB_DYN_SASL -lsasl2" 447 CPPFLAGS="${cmu_saved_CPPFLAGS} -I${ac_cv_sasl_where_inc}" 448 LDFLAGS="${cmu_saved_LDFLAGS} -L${ac_cv_sasl_where_lib}" 449fi 450 451# be sure to check for a SASLv2 specific function 452AC_CHECK_HEADER(sasl/sasl.h, 453 [AC_CHECK_HEADER(sasl/saslutil.h, 454 [AC_CHECK_LIB(sasl2, prop_get, 455 ac_cv_found_sasl=yes, 456 ac_cv_found_sasl=no)], 457 ac_cv_found_sasl=no)], 458 ac_cv_found_sasl=no) 459 460if test "$ac_cv_found_sasl" = "yes"; then 461 if test "$ac_cv_sasl_where_lib" != ""; then 462 CMU_ADD_LIBPATH_TO($ac_cv_sasl_where_lib, DYNLIB_SASL) 463 fi 464 DYNLIB_SASL="$DYNLIB_SASL -lsasl2" 465 if test "$using_static_sasl" != "static"; then 466 LIB_SASL=$DYNLIB_SASL 467 SASLFLAGS=$DYNSASLFLAGS 468 fi 469else 470 DYNLIB_SASL="" 471 DYNSASLFLAGS="" 472 using_static_sasl="staticonly" 473fi 474 475if test "x$SASL_GSSAPI_LIBS_SET" != "x"; then 476 SASL_GSSAPI_LIBS_SET="" 477 cmu_saved_LIBS="$GSSAPIBASE_LIBS $cmu_saved_LIBS" 478fi 479 480LIBS="$cmu_saved_LIBS" 481LDFLAGS="$cmu_saved_LDFLAGS" 482CPPFLAGS="$cmu_saved_CPPFLAGS" 483 484AC_SUBST(LIB_DYN_SASL) 485AC_SUBST(DYNSASLFLAGS) 486AC_SUBST(LIB_SASL) 487AC_SUBST(SASLFLAGS) 488])# CMU_SASL2 489 490 491# CMU_SASL2_REQUIRED 492# ------------------ 493AC_DEFUN([CMU_SASL2_REQUIRED], 494[AC_REQUIRE([CMU_SASL2]) 495if test "$ac_cv_found_sasl" != "yes"; then 496 AC_MSG_ERROR([Cannot continue without libsasl2. 497Get it from ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/.]) 498fi]) 499 500 501# CMU_SASL2_REQUIRE_VER 502# --------------------- 503AC_DEFUN([CMU_SASL2_REQUIRE_VER], 504[AC_REQUIRE([CMU_SASL2_REQUIRED]) 505 506cmu_saved_CPPFLAGS=$CPPFLAGS 507CPPFLAGS="$CPPFLAGS $SASLFLAGS" 508 509AC_TRY_CPP([ 510#include <sasl/sasl.h> 511 512#ifndef SASL_VERSION_MAJOR 513#error SASL_VERSION_MAJOR not defined 514#endif 515#ifndef SASL_VERSION_MINOR 516#error SASL_VERSION_MINOR not defined 517#endif 518#ifndef SASL_VERSION_STEP 519#error SASL_VERSION_STEP not defined 520#endif 521 522#if SASL_VERSION_MAJOR < $1 || SASL_VERSION_MINOR < $2 || SASL_VERSION_STEP < $3 523#error SASL version is less than $1.$2.$3 524#endif 525],, 526 [AC_MSG_ERROR([Incorrect SASL headers found. This package requires SASL $1.$2.$3 or newer.])]) 527 528CPPFLAGS=$cmu_saved_CPPFLAGS 529])# CMU_SASL2_REQUIRE_VER 530 531 532# CMU_SASL2_CHECKAPOP_REQUIRED 533# ---------------------------- 534AC_DEFUN([CMU_SASL2_CHECKAPOP_REQUIRED], 535[AC_REQUIRE([CMU_SASL2_REQUIRED]) 536 537cmu_saved_LDFLAGS=$LDFLAGS 538 539LDFLAGS="$LDFLAGS $LIB_SASL" 540 541AC_CHECK_LIB(sasl2, sasl_checkapop, 542 [AC_DEFINE(HAVE_APOP,[],[Does SASL support APOP?])], 543 [AC_MSG_ERROR([libsasl2 without working sasl_checkapop. Cannot continue.])]) 544 545LDFLAGS=$cmu_saved_LDFLAGS 546])# CMU_SASL2_CHECKAPOP_REQUIRED 547 548 549# SASL2_CRYPT_CHK 550# --------------- 551AC_DEFUN([SASL2_CRYPT_CHK], 552[AC_CHECK_FUNC(crypt, cmu_have_crypt=yes, 553 [AC_CHECK_LIB(crypt, crypt, 554 LIB_CRYPT="-lcrypt"; cmu_have_crypt=yes, 555 cmu_have_crypt=no)]) 556AC_SUBST(LIB_CRYPT) 557])# SASL2_CRYPT_CHK 558