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