@@ -20,6 +20,9 @@ PHP_ARG_ENABLE(memcached-json, whether to enable memcached json serializer suppo
20
20
PHP_ARG_ENABLE(memcached-sasl, whether to disable memcached sasl support,
21
21
[ --disable-memcached-sasl Disable memcached sasl support] , yes, no)
22
22
23
+ PHP_ARG_ENABLE(memcached-protocol, whether to enable memcached protocol support,
24
+ [ --enable-memcached-protocol Enable memcached protocoll support] , no, no)
25
+
23
26
if test -z "$PHP_ZLIB_DIR"; then
24
27
PHP_ARG_WITH(zlib-dir, for ZLIB,
25
28
[ --with-zlib-dir[ =DIR] Set the path to ZLIB install prefix.] , no)
@@ -337,15 +340,75 @@ if test "$PHP_MEMCACHED" != "no"; then
337
340
AC_DEFINE ( HAVE_LIBMEMCACHED_TOUCH , [ 1] , [ Whether memcached_touch is defined] )
338
341
fi
339
342
340
- PHP_SUBST(MEMCACHED_SHARED_LIBADD)
341
-
342
343
PHP_MEMCACHED_FILES="php_memcached.c php_libmemcached_compat.c fastlz/fastlz.c g_fmt.c"
343
344
344
345
if test "$PHP_MEMCACHED_SESSION" != "no"; then
345
346
PHP_MEMCACHED_FILES="${PHP_MEMCACHED_FILES} php_memcached_session.c"
346
347
fi
347
348
348
- PHP_NEW_EXTENSION(memcached, $PHP_MEMCACHED_FILES, $ext_shared,,$SESSION_INCLUDES $IGBINARY_INCLUDES)
349
+ LIBEVENT_INCLUDES=""
350
+ AC_MSG_CHECKING ( [ for memcached protocol support] )
351
+ if test "$PHP_MEMCACHED_PROTOCOL" != "no"; then
352
+ AC_MSG_RESULT ( [ enabled] )
353
+
354
+ AC_MSG_CHECKING ( [ for libmemcachedprotocol] )
355
+ if test "$PHP_LIBMEMCACHED_DIR" != "no" && test "$PHP_LIBMEMCACHED_DIR" != "yes"; then
356
+ if ! test -r "$PHP_LIBMEMCACHED_DIR/include/libmemcachedprotocol-0.0/handler.h"; then
357
+ AC_MSG_ERROR ( [ Can't find libmemcachedprotocol headers under "$PHP_LIBMEMCACHED_DIR"] )
358
+ fi
359
+ fi
360
+ AC_MSG_RESULT ( [ found] )
361
+
362
+ ORIG_CFLAGS="$CFLAGS"
363
+ CFLAGS="$CFLAGS -I$PHP_LIBMEMCACHED_INCDIR"
364
+
365
+ AC_CACHE_CHECK ( [ whether libmemcachedprotocol is usable] , ac_cv_have_libmemcachedprotocol , [
366
+ AC_TRY_COMPILE (
367
+ [ #include <libmemcachedprotocol-0.0/handler.h> ] ,
368
+ [ memcached_binary_protocol_callback_st s_test_impl;
369
+ s_test_impl.interface.v1.delete_object = 0;
370
+ ] ,
371
+ [ ac_cv_have_libmemcachedprotocol="yes" ] ,
372
+ [ ac_cv_have_libmemcachedprotocol="no" ]
373
+ )
374
+ ] )
375
+ CFLAGS="$ORIG_CFLAGS"
376
+
377
+ if test "$ac_cv_have_libmemcachedprotocol" != "yes"; then
378
+ AC_MSG_ERROR ( [ Cannot enable libmemcached protocol] )
379
+ fi
380
+
381
+ PHP_ADD_LIBRARY_WITH_PATH(memcachedprotocol, $PHP_LIBMEMCACHED_DIR/$PHP_LIBDIR, MEMCACHED_SHARED_LIBADD)
382
+
383
+ AC_PATH_PROG ( PKG_CONFIG , pkg-config , no )
384
+ if test "x$PKG_CONFIG" = "xno"; then
385
+ AC_MSG_RESULT ( [ pkg-config not found] )
386
+ AC_MSG_ERROR ( [ Please reinstall the pkg-config distribution] )
387
+ fi
388
+
389
+ AC_MSG_CHECKING ( [ for libevent] )
390
+ if $PKG_CONFIG --exists libevent; then
391
+ PHP_MEMCACHED_LIBEVENT_VERSION=`$PKG_CONFIG libevent --modversion`
392
+ PHP_MEMCACHED_LIBEVENT_PREFIX=`$PKG_CONFIG libevent --variable=prefix`
393
+
394
+ AC_MSG_RESULT ( [ found version $PHP_MEMCACHED_LIBEVENT_VERSION, under $PHP_MEMCACHED_LIBEVENT_PREFIX] )
395
+ LIBEVENT_LIBS=`$PKG_CONFIG libevent --libs`
396
+ LIBEVENT_INCLUDES=`$PKG_CONFIG libevent --cflags`
397
+
398
+ PHP_EVAL_LIBLINE($LIBEVENT_LIBS, MEMCACHED_SHARED_LIBADD)
399
+ PHP_EVAL_INCLINE($LIBEVENT_INCLUDES)
400
+ else
401
+ AC_MSG_ERROR ( Unable to find libevent installation )
402
+ fi
403
+ PHP_MEMCACHED_FILES="${PHP_MEMCACHED_FILES} php_memcached_server.c"
404
+ AC_DEFINE ( HAVE_MEMCACHED_PROTOCOL ,1 ,[ Whether memcached protocol is enabled] )
405
+ else
406
+ AC_MSG_RESULT ( [ disabled] )
407
+ fi
408
+
409
+ PHP_SUBST(MEMCACHED_SHARED_LIBADD)
410
+
411
+ PHP_NEW_EXTENSION(memcached, $PHP_MEMCACHED_FILES, $ext_shared,,$SESSION_INCLUDES $IGBINARY_INCLUDES $LIBEVENT_INCLUDES)
349
412
PHP_ADD_BUILD_DIR($ext_builddir/fastlz, 1)
350
413
351
414
ifdef ( [ PHP_ADD_EXTENSION_DEP] ,
0 commit comments