--- skywalking-4.2.0/config.m4 2021-11-03 02:32:29.000000000 +0100 +++ skywalking-4.1.2/config.m4 2021-04-30 06:50:56.000000000 +0200 @@ -1,17 +1,8 @@ PHP_REQUIRE_CXX() CXXFLAGS="$CXXFLAGS -Wall -std=c++11 -Wno-deprecated-register" -PHP_ARG_ENABLE([skywalking], - [whether to enable skywalking support], - [AS_HELP_STRING([--enable-skywalking], - [Enable skywalking support])], - [yes]) - -PHP_ARG_WITH([grpc],, - [AS_HELP_STRING([[--with-grpc[=DIR]]], - [gRPC: gPRC support])], - [no], - [no]) +PHP_ARG_ENABLE(skywalking, whether to enable skywalking support, +[ --enable-skywalking Enable skywalking support]) if test "$PHP_THREAD_SAFETY" == "yes"; then AC_MSG_ERROR([skywalking does not support ZTS]) @@ -46,80 +37,35 @@ if test "$PHP_SKYWALKING" != "no"; then - dnl grpc - if test "$PHP_GRPC" == "no"; then - AC_MSG_ERROR([skywalking extension requires gRPC extension, add --with-grpc=[DIR]]) - fi + SEARCH_PATH="/usr/local /usr" + SEARCH_GRPC_FOR="/include/grpc/grpc.h" + SEARCH_PROTOBUF_FOR="/include/google/protobuf/message.h" + + AC_MSG_CHECKING([for grpc and protobuf files in default path]) + for i in $SEARCH_PATH ; do + if test -r $i/$SEARCH_GRPC_FOR; then + GRPC_DIR=$i + AC_MSG_RESULT(found in $i) + fi - SEARCH_GRPC_FOR="libgrpc.a libgpr.a libgrpc++.a libupb.a libaddress_sorting.a third_party/protobuf/libprotobuf.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/re2/libre2.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/status/libabsl_status.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/strings/libabsl_strings.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/strings/libabsl_strings_internal.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/strings/libabsl_str_format_internal.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/strings/libabsl_cord.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/numeric/libabsl_int128.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/types/libabsl_bad_optional_access.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/synchronization/libabsl_synchronization.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/synchronization/libabsl_graphcycles_internal.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/base/libabsl_base.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/base/libabsl_throw_delegate.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/base/libabsl_raw_logging_internal.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/base/libabsl_malloc_internal.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/base/libabsl_spinlock_wait.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/time/libabsl_time.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/time/libabsl_time_zone.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/debugging/libabsl_symbolize.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/debugging/libabsl_stacktrace.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/abseil-cpp/absl/debugging/libabsl_debugging_internal.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/cares/cares/lib/libcares.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/boringssl-with-bazel/libssl.a" - SEARCH_GRPC_FOR="$SEARCH_GRPC_FOR third_party/boringssl-with-bazel/libcrypto.a" - AC_MSG_CHECKING([for grpc files in $PHP_GRPC path]) - for i in $SEARCH_GRPC_FOR ; do - target=$PHP_GRPC/cmake/build/$i - if test -r $target; then - AC_MSG_RESULT(found in $target) - else - AC_MSG_ERROR([not found $target]) + if test -r $i/$SEARCH_PROTOBUF_FOR; then + PROTOBUF_DIR=$i + AC_MSG_RESULT(found in $i) fi done + if test -z "$GRPC_DIR"; then + AC_MSG_RESULT([not found]) + AC_MSG_ERROR([Please reinstall the grpc distribution]) + fi - PHP_ADD_INCLUDE($PHP_GRPC/include) - PHP_ADD_INCLUDE($PHP_GRPC/third_party/protobuf/src) - - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/libgrpc++.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/libgrpc.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/libgpr.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/libupb.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/libaddress_sorting.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/protobuf/libprotobuf.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/re2/libre2.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/status/libabsl_status.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/strings/libabsl_strings.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/strings/libabsl_strings_internal.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/strings/libabsl_str_format_internal.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/strings/libabsl_cord.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/numeric/libabsl_int128.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/types/libabsl_bad_optional_access.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/synchronization/libabsl_synchronization.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/synchronization/libabsl_graphcycles_internal.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/base/libabsl_base.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/base/libabsl_throw_delegate.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/base/libabsl_raw_logging_internal.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/base/libabsl_malloc_internal.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/base/libabsl_spinlock_wait.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/time/libabsl_time.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/time/libabsl_time_zone.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/debugging/libabsl_symbolize.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/debugging/libabsl_stacktrace.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/abseil-cpp/absl/debugging/libabsl_debugging_internal.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/cares/cares/lib/libcares.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/boringssl-with-bazel/libssl.a" - SKYWALKING_EXTRA_LDFLAGS="$SKYWALKING_EXTRA_LDFLAGS $PHP_GRPC/cmake/build/third_party/boringssl-with-bazel/libcrypto.a" - EXTRA_LDFLAGS="$EXTRA_LDFLAGS $SKYWALKING_EXTRA_LDFLAGS" + if test -z "$PROTOBUF_DIR"; then + AC_MSG_RESULT([not found]) + AC_MSG_ERROR([Please reinstall the protobuf distribution]) + fi + PHP_ADD_INCLUDE($GRPC_DIR/include) + PHP_ADD_INCLUDE($PROTOBUF_DIR/include) LIBS="-lpthread $LIBS" SKYWALKING_SHARED_LIBADD="-lpthread $SKYWALKING_SHARED_LIBADD" @@ -137,11 +83,38 @@ ;; esac - AC_PATH_PROG(PROTOC, protoc, no, $PHP_GRPC/cmake/build/third_party/protobuf) + + + GRPC_LIBDIR=$GRPC_DIR/${GRPC_LIB_SUBDIR-lib} + PHP_ADD_LIBPATH($GRPC_LIBDIR) + + PHP_CHECK_LIBRARY(gpr, gpr_now, + [ + PHP_ADD_LIBRARY(gpr,, SKYWALKING_SHARED_LIBADD) + PHP_ADD_LIBRARY(gpr) + AC_DEFINE(HAVE_GPRLIB,1,[ ]) + ],[ + AC_MSG_ERROR([wrong gpr lib version or lib not found]) + ],[ + -L$GRPC_LIBDIR + ]) + + PHP_CHECK_LIBRARY(grpc, grpc_channel_destroy, + [ + PHP_ADD_LIBRARY(grpc,,SKYWALKING_SHARED_LIBADD) + PHP_ADD_LIBRARY(grpc++,,SKYWALKING_SHARED_LIBADD) + AC_DEFINE(HAVE_GRPCLIB,1,[ ]) + ],[ + AC_MSG_ERROR([wrong grpc lib version or lib not found]) + ],[ + -L$GRPC_LIBDIR + ]) + + AC_PATH_PROG(PROTOC, protoc, no) if ! test -x "$PROTOC"; then AC_MSG_ERROR([protoc command missing, please reinstall the protobuf distribution]) fi - AC_PATH_PROG(GRPC_CPP_PLUGIN, grpc_cpp_plugin, no, $PHP_GRPC/cmake/build) + AC_PATH_PROG(GRPC_CPP_PLUGIN, grpc_cpp_plugin, no) if ! test -x "$GRPC_CPP_PLUGIN"; then AC_MSG_ERROR([grpc_cpp_plugin command missing, please reinstall the grpc distribution]) fi @@ -153,6 +126,10 @@ $PROTOC -I src/protocol/v3 --grpc_out=src/network/v3 --plugin=protoc-gen-grpc=$GRPC_CPP_PLUGIN --cpp_out=src/network/v3 src/protocol/v3/management/*.proto find src -name "*.grpc.pb.cc" | while read id; do mv $id ${id/.grpc/_grpc}; done + PROTOBUF_LIBDIR=$PROTOBUF_DIR/${PROTOBUF_LIB_SUBDIR-lib} + PHP_ADD_LIBPATH($PROTOBUF_LIBDIR) + PHP_ADD_LIBRARY(protobuf,,SKYWALKING_SHARED_LIBADD) + AC_DEFINE(HAVE_PROTOBUFLIB,1,[ ]) PHP_SUBST(SKYWALKING_SHARED_LIBADD)