xref: /aosp_15_r20/external/grpc-grpc/src/php/ext/grpc/config.m4 (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
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