1*cc02d7e2SAndroid Build Coastguard WorkerPHP_ARG_ENABLE(grpc, whether to enable grpc support, 2*cc02d7e2SAndroid Build Coastguard Worker[ --enable-grpc Enable grpc support]) 3*cc02d7e2SAndroid Build Coastguard Worker 4*cc02d7e2SAndroid Build Coastguard WorkerPHP_ARG_ENABLE(coverage, whether to include code coverage symbols, 5*cc02d7e2SAndroid Build Coastguard Worker[ --enable-coverage Enable coverage support], no, no) 6*cc02d7e2SAndroid Build Coastguard Worker 7*cc02d7e2SAndroid Build Coastguard WorkerPHP_ARG_ENABLE(tests, whether to compile helper methods for tests, 8*cc02d7e2SAndroid Build Coastguard Worker[ --enable-tests Enable tests methods], no, no) 9*cc02d7e2SAndroid Build Coastguard Worker 10*cc02d7e2SAndroid Build Coastguard Workerdnl Check whether to enable tests 11*cc02d7e2SAndroid Build Coastguard Workerif test "$PHP_TESTS" != "no"; then 12*cc02d7e2SAndroid Build Coastguard Worker CPPFLAGS="$CPPFLAGS -DGRPC_PHP_DEBUG" 13*cc02d7e2SAndroid Build Coastguard Workerfi 14*cc02d7e2SAndroid Build Coastguard Worker 15*cc02d7e2SAndroid Build Coastguard Workerif test "$PHP_GRPC" != "no"; then 16*cc02d7e2SAndroid Build Coastguard Worker dnl Write more examples of tests here... 17*cc02d7e2SAndroid Build Coastguard Worker 18*cc02d7e2SAndroid Build Coastguard Worker dnl # --with-grpc -> check with-path 19*cc02d7e2SAndroid Build Coastguard Worker SEARCH_PATH="/usr/local /usr" # you might want to change this 20*cc02d7e2SAndroid Build Coastguard Worker SEARCH_FOR="include/grpc/grpc.h" # you most likely want to change this 21*cc02d7e2SAndroid Build Coastguard Worker if test -r $PHP_GRPC/$SEARCH_FOR; then # path given as parameter 22*cc02d7e2SAndroid Build Coastguard Worker GRPC_DIR=$PHP_GRPC 23*cc02d7e2SAndroid Build Coastguard Worker else # search default path list 24*cc02d7e2SAndroid Build Coastguard Worker AC_MSG_CHECKING([for grpc files in default path]) 25*cc02d7e2SAndroid Build Coastguard Worker for i in $SEARCH_PATH ; do 26*cc02d7e2SAndroid Build Coastguard Worker if test -r $i/$SEARCH_FOR; then 27*cc02d7e2SAndroid Build Coastguard Worker GRPC_DIR=$i 28*cc02d7e2SAndroid Build Coastguard Worker AC_MSG_RESULT(found in $i) 29*cc02d7e2SAndroid Build Coastguard Worker fi 30*cc02d7e2SAndroid Build Coastguard Worker done 31*cc02d7e2SAndroid Build Coastguard Worker fi 32*cc02d7e2SAndroid Build Coastguard Worker if test -z "$GRPC_DIR"; then 33*cc02d7e2SAndroid Build Coastguard Worker AC_MSG_RESULT([not found]) 34*cc02d7e2SAndroid Build Coastguard Worker AC_MSG_ERROR([Please reinstall the grpc distribution]) 35*cc02d7e2SAndroid Build Coastguard Worker fi 36*cc02d7e2SAndroid Build Coastguard Worker 37*cc02d7e2SAndroid Build Coastguard Worker dnl # --with-grpc -> add include path 38*cc02d7e2SAndroid Build Coastguard Worker PHP_ADD_INCLUDE($GRPC_DIR/include) 39*cc02d7e2SAndroid Build Coastguard Worker 40*cc02d7e2SAndroid Build Coastguard Worker LIBS="-lpthread $LIBS" 41*cc02d7e2SAndroid Build Coastguard Worker 42*cc02d7e2SAndroid Build Coastguard Worker dnl PHP_ADD_LIBRARY(pthread,,GRPC_SHARED_LIBADD) 43*cc02d7e2SAndroid Build Coastguard Worker GRPC_SHARED_LIBADD="-lpthread $GRPC_SHARED_LIBADD" 44*cc02d7e2SAndroid Build Coastguard Worker PHP_ADD_LIBRARY(pthread) 45*cc02d7e2SAndroid Build Coastguard Worker PHP_ADD_LIBRARY(dl,,GRPC_SHARED_LIBADD) 46*cc02d7e2SAndroid Build Coastguard Worker PHP_ADD_LIBRARY(dl) 47*cc02d7e2SAndroid Build Coastguard Worker 48*cc02d7e2SAndroid Build Coastguard Worker case $host in 49*cc02d7e2SAndroid Build Coastguard Worker *darwin*) 50*cc02d7e2SAndroid Build Coastguard Worker PHP_ADD_LIBRARY(c++,1,GRPC_SHARED_LIBADD) 51*cc02d7e2SAndroid Build Coastguard Worker ;; 52*cc02d7e2SAndroid Build Coastguard Worker *) 53*cc02d7e2SAndroid Build Coastguard Worker PHP_ADD_LIBRARY(stdc++,1,GRPC_SHARED_LIBADD) 54*cc02d7e2SAndroid Build Coastguard Worker PHP_ADD_LIBRARY(rt,,GRPC_SHARED_LIBADD) 55*cc02d7e2SAndroid Build Coastguard Worker PHP_ADD_LIBRARY(rt) 56*cc02d7e2SAndroid Build Coastguard Worker ;; 57*cc02d7e2SAndroid Build Coastguard Worker esac 58*cc02d7e2SAndroid Build Coastguard Worker 59*cc02d7e2SAndroid Build Coastguard Worker GRPC_LIBDIR=$GRPC_DIR/${GRPC_LIB_SUBDIR-lib} 60*cc02d7e2SAndroid Build Coastguard Worker 61*cc02d7e2SAndroid Build Coastguard Worker PHP_ADD_LIBPATH($GRPC_LIBDIR) 62*cc02d7e2SAndroid Build Coastguard Worker 63*cc02d7e2SAndroid Build Coastguard Worker PHP_CHECK_LIBRARY(grpc,grpc_channel_destroy, 64*cc02d7e2SAndroid Build Coastguard Worker [ 65*cc02d7e2SAndroid Build Coastguard Worker PHP_ADD_LIBRARY(grpc,,GRPC_SHARED_LIBADD) 66*cc02d7e2SAndroid Build Coastguard Worker dnl PHP_ADD_LIBRARY_WITH_PATH(grpc, $GRPC_DIR/lib, GRPC_SHARED_LIBADD) 67*cc02d7e2SAndroid Build Coastguard Worker AC_DEFINE(HAVE_GRPCLIB,1,[ ]) 68*cc02d7e2SAndroid Build Coastguard Worker ],[ 69*cc02d7e2SAndroid Build Coastguard Worker AC_MSG_ERROR([wrong grpc lib version or lib not found]) 70*cc02d7e2SAndroid Build Coastguard Worker ],[ 71*cc02d7e2SAndroid Build Coastguard Worker -L$GRPC_LIBDIR 72*cc02d7e2SAndroid Build Coastguard Worker ]) 73*cc02d7e2SAndroid Build Coastguard Worker 74*cc02d7e2SAndroid Build Coastguard Worker PHP_SUBST(GRPC_SHARED_LIBADD) 75*cc02d7e2SAndroid Build Coastguard Worker 76*cc02d7e2SAndroid Build Coastguard Worker PHP_NEW_EXTENSION(grpc, byte_buffer.c call.c call_credentials.c channel.c \ 77*cc02d7e2SAndroid Build Coastguard Worker channel_credentials.c completion_queue.c timeval.c server.c \ 78*cc02d7e2SAndroid Build Coastguard Worker server_credentials.c php_grpc.c, $ext_shared, , -Wall -Werror -std=c11 -DGRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK=1) 79*cc02d7e2SAndroid Build Coastguard Workerfi 80*cc02d7e2SAndroid Build Coastguard Worker 81*cc02d7e2SAndroid Build Coastguard Workerif test "$PHP_COVERAGE" = "yes"; then 82*cc02d7e2SAndroid Build Coastguard Worker 83*cc02d7e2SAndroid Build Coastguard Worker if test "$GCC" != "yes"; then 84*cc02d7e2SAndroid Build Coastguard Worker AC_MSG_ERROR([GCC is required for --enable-coverage]) 85*cc02d7e2SAndroid Build Coastguard Worker fi 86*cc02d7e2SAndroid Build Coastguard Worker 87*cc02d7e2SAndroid Build Coastguard Worker dnl Check if ccache is being used 88*cc02d7e2SAndroid Build Coastguard Worker case `$php_shtool path $CC` in 89*cc02d7e2SAndroid Build Coastguard Worker *ccache*[)] gcc_ccache=yes;; 90*cc02d7e2SAndroid Build Coastguard Worker *[)] gcc_ccache=no;; 91*cc02d7e2SAndroid Build Coastguard Worker esac 92*cc02d7e2SAndroid Build Coastguard Worker 93*cc02d7e2SAndroid Build Coastguard Worker if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then 94*cc02d7e2SAndroid Build Coastguard Worker AC_MSG_ERROR([ccache must be disabled when --enable-coverage option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.]) 95*cc02d7e2SAndroid Build Coastguard Worker fi 96*cc02d7e2SAndroid Build Coastguard Worker 97*cc02d7e2SAndroid Build Coastguard Worker lcov_version_list="1.5 1.6 1.7 1.9 1.10 1.11 1.12 1.13" 98*cc02d7e2SAndroid Build Coastguard Worker 99*cc02d7e2SAndroid Build Coastguard Worker AC_CHECK_PROG(LCOV, lcov, lcov) 100*cc02d7e2SAndroid Build Coastguard Worker AC_CHECK_PROG(GENHTML, genhtml, genhtml) 101*cc02d7e2SAndroid Build Coastguard Worker PHP_SUBST(LCOV) 102*cc02d7e2SAndroid Build Coastguard Worker PHP_SUBST(GENHTML) 103*cc02d7e2SAndroid Build Coastguard Worker 104*cc02d7e2SAndroid Build Coastguard Worker if test "$LCOV"; then 105*cc02d7e2SAndroid Build Coastguard Worker AC_CACHE_CHECK([for lcov version], php_cv_lcov_version, [ 106*cc02d7e2SAndroid Build Coastguard Worker php_cv_lcov_version=invalid 107*cc02d7e2SAndroid Build Coastguard Worker lcov_version=`$LCOV -v 2>/dev/null | $SED -e 's/^.* //'` #' 108*cc02d7e2SAndroid Build Coastguard Worker for lcov_check_version in $lcov_version_list; do 109*cc02d7e2SAndroid Build Coastguard Worker if test "$lcov_version" = "$lcov_check_version"; then 110*cc02d7e2SAndroid Build Coastguard Worker php_cv_lcov_version="$lcov_check_version (ok)" 111*cc02d7e2SAndroid Build Coastguard Worker fi 112*cc02d7e2SAndroid Build Coastguard Worker done 113*cc02d7e2SAndroid Build Coastguard Worker ]) 114*cc02d7e2SAndroid Build Coastguard Worker else 115*cc02d7e2SAndroid Build Coastguard Worker lcov_msg="To enable code coverage reporting you must have one of the following LCOV versions installed: $lcov_version_list" 116*cc02d7e2SAndroid Build Coastguard Worker AC_MSG_ERROR([$lcov_msg]) 117*cc02d7e2SAndroid Build Coastguard Worker fi 118*cc02d7e2SAndroid Build Coastguard Worker 119*cc02d7e2SAndroid Build Coastguard Worker case $php_cv_lcov_version in 120*cc02d7e2SAndroid Build Coastguard Worker ""|invalid[)] 121*cc02d7e2SAndroid Build Coastguard Worker lcov_msg="You must have one of the following versions of LCOV: $lcov_version_list (found: $lcov_version)." 122*cc02d7e2SAndroid Build Coastguard Worker AC_MSG_ERROR([$lcov_msg]) 123*cc02d7e2SAndroid Build Coastguard Worker LCOV="exit 0;" 124*cc02d7e2SAndroid Build Coastguard Worker ;; 125*cc02d7e2SAndroid Build Coastguard Worker esac 126*cc02d7e2SAndroid Build Coastguard Worker 127*cc02d7e2SAndroid Build Coastguard Worker if test -z "$GENHTML"; then 128*cc02d7e2SAndroid Build Coastguard Worker AC_MSG_ERROR([Could not find genhtml from the LCOV package]) 129*cc02d7e2SAndroid Build Coastguard Worker fi 130*cc02d7e2SAndroid Build Coastguard Worker 131*cc02d7e2SAndroid Build Coastguard Worker PHP_ADD_MAKEFILE_FRAGMENT 132*cc02d7e2SAndroid Build Coastguard Worker 133*cc02d7e2SAndroid Build Coastguard Worker dnl Remove all optimization flags from CFLAGS 134*cc02d7e2SAndroid Build Coastguard Worker changequote({,}) 135*cc02d7e2SAndroid Build Coastguard Worker CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9s]*//g'` 136*cc02d7e2SAndroid Build Coastguard Worker CXXFLAGS=`echo "$CXXFLAGS" | $SED -e 's/-O[0-9s]*//g'` 137*cc02d7e2SAndroid Build Coastguard Worker changequote([,]) 138*cc02d7e2SAndroid Build Coastguard Worker 139*cc02d7e2SAndroid Build Coastguard Worker dnl Add the special gcc flags 140*cc02d7e2SAndroid Build Coastguard Worker CFLAGS="$CFLAGS -O0 -ggdb -fprofile-arcs -ftest-coverage" 141*cc02d7e2SAndroid Build Coastguard Worker CXXFLAGS="$CXXFLAGS -ggdb -O0 -fprofile-arcs -ftest-coverage" 142*cc02d7e2SAndroid Build Coastguard Workerfi 143