BUILT_SOURCES += collectd.grpc.pb.cc types.grpc.pb.cc collectd.pb.cc types.pb.cc
collectd.grpc.pb.cc types.grpc.pb.cc: $(srcdir)/proto/collectd.proto $(srcdir)/proto/types.proto
- $(V_PROTOC)$(PROTOC) -I$(srcdir)/proto \
+ $(V_PROTOC)$(PROTOC) $(PROTOC_FLAGS) -I$(srcdir)/proto \
--grpc_out=$(builddir) --plugin=protoc-gen-grpc=$(GRPC_CPP_PLUGIN) \
$(srcdir)/proto/collectd.proto $(srcdir)/proto/types.proto
collectd.pb.cc: $(srcdir)/proto/collectd.proto $(srcdir)/proto/types.proto
- $(V_PROTOC)$(PROTOC) -I$(srcdir)/proto --cpp_out=$(builddir) \
+ $(V_PROTOC)$(PROTOC) $(PROTOC_FLAGS) -I$(srcdir)/proto --cpp_out=$(builddir) \
$(srcdir)/proto/collectd.proto $(srcdir)/proto/types.proto
types.pb.cc: $(srcdir)/proto/types.proto
- $(V_PROTOC)$(PROTOC) -I$(srcdir)/proto --cpp_out=$(builddir) \
+ $(V_PROTOC)$(PROTOC) $(PROTOC_FLAGS) -I$(srcdir)/proto --cpp_out=$(builddir) \
$(srcdir)/proto/types.proto
BUILT_SOURCES += \
opentelemetry/proto/metrics/v1/metrics.pb.cc \
opentelemetry/proto/resource/v1/resource.pb.cc
-
opentelemetry/proto/collector/metrics/v1/metrics_service.grpc.pb.cc: $(srcdir)/opentelemetry-proto/opentelemetry/proto/collector/metrics/v1/metrics_service.proto
- $(V_PROTOC)$(PROTOC) -I$(srcdir)/opentelemetry-proto --grpc_out=$(builddir) \
+ $(V_PROTOC)$(PROTOC) $(PROTOC_FLAGS) -I$(srcdir)/opentelemetry-proto --grpc_out=$(builddir) \
--plugin="protoc-gen-grpc=$(GRPC_CPP_PLUGIN)" $<
opentelemetry/proto/collector/metrics/v1/metrics_service.pb.cc: $(srcdir)/opentelemetry-proto/opentelemetry/proto/collector/metrics/v1/metrics_service.proto
- $(V_PROTOC)$(PROTOC) -I$(srcdir)/opentelemetry-proto --cpp_out=$(builddir) $<
+ $(V_PROTOC)$(PROTOC) $(PROTOC_FLAGS) -I$(srcdir)/opentelemetry-proto --cpp_out=$(builddir) $<
opentelemetry/proto/common/v1/common.pb.cc: $(srcdir)/opentelemetry-proto/opentelemetry/proto/metrics/v1/metrics.proto
- $(V_PROTOC)$(PROTOC) -I$(srcdir)/opentelemetry-proto --cpp_out=$(builddir) $<
+ $(V_PROTOC)$(PROTOC) $(PROTOC_FLAGS) -I$(srcdir)/opentelemetry-proto --cpp_out=$(builddir) $<
opentelemetry/proto/metrics/v1/metrics.pb.cc: $(srcdir)/opentelemetry-proto/opentelemetry/proto/resource/v1/resource.proto
- $(V_PROTOC)$(PROTOC) -I$(srcdir)/opentelemetry-proto --cpp_out=$(builddir) $<
+ $(V_PROTOC)$(PROTOC) $(PROTOC_FLAGS) -I$(srcdir)/opentelemetry-proto --cpp_out=$(builddir) $<
opentelemetry/proto/resource/v1/resource.pb.cc: $(srcdir)/opentelemetry-proto/opentelemetry/proto/common/v1/common.proto
- $(V_PROTOC)$(PROTOC) -I$(srcdir)/opentelemetry-proto --cpp_out=$(builddir) $<
+ $(V_PROTOC)$(PROTOC) $(PROTOC_FLAGS) -I$(srcdir)/opentelemetry-proto --cpp_out=$(builddir) $<
endif
endif
fi
AM_CONDITIONAL([HAVE_PROTOC3], [test "x$have_protoc3" = "xyes"])
+protoc3_optional="no"
+if test "x$have_protoc3" = "xyes"; then
+ AC_MSG_CHECKING([whether protoc supports optional fields])
+ testfile=`mktemp`
+ cat <<EOF >"$testfile"
+syntax = "proto3";
+message Test {
+ optional bool support_optional = 1;
+}
+EOF
+ cpp_out=`mktemp -d`
+
+ protoc3_optional="no"
+ PROTOC_FLAGS=""
+ if $PROTOC -I`dirname $testfile` --cpp_out="$cpp_out" "$testfile"; then
+ protoc3_optional="yes"
+ elif $PROTOC -I`dirname $testfile` --cpp_out="$cpp_out" --experimental_allow_proto3_optional "$testfile"; then
+ protoc3_optional="yes (with --experimental_allow_proto3_optional)"
+ PROTOC_FLAGS="--experimental_allow_proto3_optional"
+ fi
+
+ # Clean up
+ rm "$testfile" "$cpp_out/`basename $testfile`.pb.cc" "$cpp_out/`basename $testfile`.pb.h"
+ rmdir "$cpp_out"
+
+ AC_MSG_RESULT([$protoc3_optional])
+ AC_SUBST(PROTOC_FLAGS)
+fi
+
# --with-libprotobuf-c {{{
AC_ARG_WITH([libprotobuf-c],
[AS_HELP_STRING([--with-libprotobuf-c@<:@=PREFIX@:>@], [Path to libprotobuf-c.])],
plugin_grpc="no (libgrpc++ not found)"
plugin_write_open_telemetry="no (libgrpc++ not found)"
fi
+if test "x$protoc3_optional" = "xno"; then
+ plugin_write_open_telemetry="no (protoc does not support optional fields)"
+fi
if test "x$have_getifaddrs" = "xyes"; then
plugin_interface="yes"