|
| 1 | +PHP_ARG_WITH([mongodb-sasl], |
| 2 | + [whether to enable SASL for Kerberos authentication], |
| 3 | + [AS_HELP_STRING([--with-mongodb-sasl=@<:@auto/no/cyrus/gssapi@:>@], |
| 4 | + [MongoDB: Enable SASL for Kerberos authentication [default=auto]])], |
| 5 | + [auto], |
| 6 | + [no]) |
| 7 | + |
| 8 | +AS_IF([test "$os_darwin" = "yes" -a \( "$PHP_MONGODB_SASL" = "gssapi" -o "$PHP_MONGODB_SASL" = "auto" \)],[ |
| 9 | + dnl PHP_FRAMEWORKS is only used for SAPI builds, so use MONGODB_SHARED_LIBADD for shared builds |
| 10 | + if test "$ext_shared" = "yes"; then |
| 11 | + MONGODB_SHARED_LIBADD="-framework GSS $MONGODB_SHARED_LIBADD" |
| 12 | + else |
| 13 | + PHP_ADD_FRAMEWORK([GSS]) |
| 14 | + fi |
| 15 | + PHP_MONGODB_SASL="gssapi" |
| 16 | +]) |
| 17 | + |
| 18 | +AS_IF([test "$PHP_MONGODB_SASL" = "cyrus" -o "$PHP_MONGODB_SASL" = "auto"],[ |
| 19 | + found_cyrus="no" |
| 20 | +
|
| 21 | + PKG_CHECK_MODULES([PHP_MONGODB_SASL],[libsasl2],[ |
| 22 | + PHP_EVAL_INCLINE([$PHP_MONGODB_SASL_CFLAGS]) |
| 23 | + PHP_EVAL_LIBLINE([$PHP_MONGODB_SASL_LIBS],[MONGODB_SHARED_LIBADD]) |
| 24 | + PHP_MONGODB_SASL="cyrus" |
| 25 | + found_cyrus="yes" |
| 26 | + ],[ |
| 27 | + PHP_CHECK_LIBRARY([sasl2], |
| 28 | + [sasl_client_init], |
| 29 | + [have_sasl2_lib="yes"], |
| 30 | + [have_sasl2_lib="no"]) |
| 31 | +
|
| 32 | + AC_CHECK_HEADER([sasl/sasl.h], |
| 33 | + [have_sasl_headers=yes], |
| 34 | + [have_sasl_headers=no]) |
| 35 | +
|
| 36 | + if test "$have_sasl2_lib" = "yes" -a "$have_sasl_headers" = "yes"; then |
| 37 | + PHP_ADD_LIBRARY([sasl2],,[MONGODB_SHARED_LIBADD]) |
| 38 | + PHP_MONGODB_SASL="cyrus" |
| 39 | + found_cyrus="yes" |
| 40 | + fi |
| 41 | + ]) |
| 42 | +
|
| 43 | + if test "$PHP_MONGODB_SASL" = "cyrus" -a "$found_cyrus" != "yes"; then |
| 44 | + AC_MSG_ERROR([Cyrus SASL libraries and development headers could not be found]) |
| 45 | + fi |
| 46 | +]) |
| 47 | + |
| 48 | +AS_IF([test "$PHP_MONGODB_SASL" = "gssapi" -o "$PHP_MONGODB_SASL" = "auto"],[ |
| 49 | + found_gssapi="no" |
| 50 | +
|
| 51 | + PKG_CHECK_MODULES([PHP_MONGODB_SASL],[krb5-gssapi],[ |
| 52 | + PHP_EVAL_INCLINE([$PHP_MONGODB_SASL_CFLAGS]) |
| 53 | + PHP_EVAL_LIBLINE([$PHP_MONGODB_SASL_LIBS],[MONGODB_SHARED_LIBADD]) |
| 54 | + PHP_MONGODB_SASL="gssapi" |
| 55 | + found_gssapi="yes" |
| 56 | + ]) |
| 57 | +
|
| 58 | + if test "$PHP_MONGODB_SASL" = "gssapi" -a "$found_gssapi" != "yes"; then |
| 59 | + AC_MSG_ERROR([GSSAPI libraries and development headers could not be found]) |
| 60 | + fi |
| 61 | +]) |
| 62 | + |
| 63 | +AS_IF([test "$PHP_MONGODB_SASL" = "auto"],[ |
| 64 | + PHP_MONGODB_SASL="no" |
| 65 | +]) |
| 66 | + |
| 67 | +AC_MSG_CHECKING([which SASL library to use]) |
| 68 | +AC_MSG_RESULT([$PHP_MONGODB_SASL]) |
| 69 | + |
| 70 | +dnl Disable Windows SSPI |
| 71 | +AC_SUBST(MONGOC_ENABLE_SASL_SSPI, 0) |
| 72 | + |
| 73 | +if test "$PHP_MONGODB_SASL" = "cyrus" -o "$PHP_MONGODB_SASL" = "gssapi"; then |
| 74 | + AC_SUBST(MONGOC_ENABLE_SASL, 1) |
| 75 | + if test "$PHP_MONGODB_SASL" = "cyrus" ; then |
| 76 | + AC_SUBST(MONGOC_ENABLE_SASL_CYRUS, 1) |
| 77 | + AC_SUBST(MONGOC_ENABLE_SASL_GSSAPI, 0) |
| 78 | + if test "x$have_sasl_client_done" = "xyes"; then |
| 79 | + AC_SUBST(MONGOC_HAVE_SASL_CLIENT_DONE, 1) |
| 80 | + else |
| 81 | + AC_SUBST(MONGOC_HAVE_SASL_CLIENT_DONE, 0) |
| 82 | + fi |
| 83 | + elif test "$PHP_MONGODB_SASL" = "gssapi"; then |
| 84 | + AC_SUBST(MONGOC_ENABLE_SASL_CYRUS, 0) |
| 85 | + AC_SUBST(MONGOC_ENABLE_SASL_GSSAPI, 1) |
| 86 | + AC_SUBST(MONGOC_HAVE_SASL_CLIENT_DONE, 0) |
| 87 | + fi |
| 88 | +else |
| 89 | + AC_SUBST(MONGOC_ENABLE_SASL, 0) |
| 90 | + AC_SUBST(MONGOC_ENABLE_SASL_CYRUS, 0) |
| 91 | + AC_SUBST(MONGOC_ENABLE_SASL_GSSAPI, 0) |
| 92 | + AC_SUBST(MONGOC_HAVE_SASL_CLIENT_DONE, 0) |
| 93 | +fi |
0 commit comments