1%YAML 1.2 2--- | 3 PHP_ARG_ENABLE(grpc, whether to enable grpc support, 4 [ --enable-grpc Enable grpc support]) 5 6 if test "$PHP_GRPC" != "no"; then 7 dnl Write more examples of tests here... 8 9 dnl # --with-grpc -> add include path 10 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/include) 11 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/src/core/ext/upb-gen) 12 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/src/core/ext/upbdefs-gen) 13 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/src/php/ext/grpc) 14 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/third_party/abseil-cpp) 15 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/third_party/address_sorting/include) 16 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/third_party/boringssl-with-bazel/src/include) 17 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/third_party/re2) 18 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/third_party/upb) 19 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/third_party/utf8_range) 20 PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/third_party/xxhash) 21 22 LIBS="-lpthread $LIBS" 23 24 CFLAGS="-std=c11 -g -O2" 25 CXXFLAGS="-std=c++14 -fno-exceptions -fno-rtti -g -O2" 26 GRPC_SHARED_LIBADD="-lpthread $GRPC_SHARED_LIBADD" 27 PHP_REQUIRE_CXX() 28 PHP_ADD_LIBRARY(pthread) 29 PHP_ADD_LIBRARY(dl,,GRPC_SHARED_LIBADD) 30 PHP_ADD_LIBRARY(dl) 31 32 case $host in 33 *darwin*) 34 PHP_ADD_LIBRARY(c++,1,GRPC_SHARED_LIBADD) 35 ;; 36 *) 37 PHP_ADD_LIBRARY(stdc++,1,GRPC_SHARED_LIBADD) 38 PHP_ADD_LIBRARY(rt,,GRPC_SHARED_LIBADD) 39 PHP_ADD_LIBRARY(rt) 40 ;; 41 esac 42 43 PHP_SUBST(GRPC_SHARED_LIBADD) 44 <% 45 srcs = [] 46 srcs.extend(php_config_m4.src) 47 lib_maps = {lib.name: lib for lib in libs} 48 php_deps = php_config_m4.get('deps', []) 49 php_full_deps = [] 50 for dep in php_deps: 51 php_full_deps.append(dep) 52 lib = lib_maps.get(dep, None) 53 if lib: 54 php_full_deps.extend(lib.transitive_deps) 55 # construct list of all source files, but explicitly exclude zlib and cares 56 for dep in set(php_full_deps) - set({'z', 'cares'}): 57 lib = lib_maps.get(dep, None) 58 if lib: 59 srcs.extend(lib.src) 60 srcs = sorted(set(srcs)) 61 %> 62 PHP_NEW_EXTENSION(grpc, 63 % for src in srcs: 64 ${src} ${"\\"} 65 % endfor 66 , $ext_shared, , -fvisibility=hidden ${"\\"} 67 -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN ${"\\"} 68 -D_HAS_EXCEPTIONS=0 -DNOMINMAX -DGRPC_ARES=0 ${"\\"} 69 -DGRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK=1 ${"\\"} 70 -DGRPC_XDS_USER_AGENT_NAME_SUFFIX='"\"PHP\""' ${"\\"} 71 -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX='"\"${settings.php_version.php()}\""') 72 <% 73 dirs = sorted(set(src[:src.rfind('/')] for src in srcs)) 74 %> 75 % for dir in dirs: 76 PHP_ADD_BUILD_DIR($ext_builddir/${dir}) 77 % endfor 78 fi 79