diff options
author | 2017-04-26 15:37:42 +0200 | |
---|---|---|
committer | 2017-05-02 09:51:34 +0200 | |
commit | 2b49f678a7dfaf27afc0e44ed7a65b00ec06d413 (patch) | |
tree | c1c46d0f1f66859ff42fd41f0aefb6436c9f4507 /third_party/protobuf/3.2.0/generate_descriptor_proto.sh | |
parent | b712f335a945c81a6b77fd48e96103ff09c8967b (diff) |
Update third_party/protobuf to pre-release 3.2.0
Update protobuf to @laszlocsomor's fork of protobuf. This is essentially
the development version of protobuf 3.2.0 and windows specific fixes
from laszlo. Those fixes will be merged into protobuf soon:
https://github.com/google/protobuf/pull/2969.
Change-Id: Id88cd7e5b2c27ab74f3ecfa1e127e5a863f2deb3
Diffstat (limited to 'third_party/protobuf/3.2.0/generate_descriptor_proto.sh')
-rwxr-xr-x | third_party/protobuf/3.2.0/generate_descriptor_proto.sh | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/third_party/protobuf/3.2.0/generate_descriptor_proto.sh b/third_party/protobuf/3.2.0/generate_descriptor_proto.sh new file mode 100755 index 0000000000..809214cea5 --- /dev/null +++ b/third_party/protobuf/3.2.0/generate_descriptor_proto.sh @@ -0,0 +1,111 @@ +#!/usr/bin/env bash + +# Run this script to regenerate descriptor.pb.{h,cc} after the protocol +# compiler changes. Since these files are compiled into the protocol compiler +# itself, they cannot be generated automatically by a make rule. "make check" +# will fail if these files do not match what the protocol compiler would +# generate. +# +# HINT: Flags passed to generate_descriptor_proto.sh will be passed directly +# to make when building protoc. This is particularly useful for passing +# -j4 to run 4 jobs simultaneously. + +if test ! -e src/google/protobuf/stubs/common.h; then + cat >&2 << __EOF__ +Could not find source code. Make sure you are running this script from the +root of the distribution tree. +__EOF__ + exit 1 +fi + +if test ! -e src/Makefile; then + cat >&2 << __EOF__ +Could not find src/Makefile. You must run ./configure (and perhaps +./autogen.sh) first. +__EOF__ + exit 1 +fi + +cd src + +declare -a RUNTIME_PROTO_FILES=(\ + google/protobuf/any.proto \ + google/protobuf/api.proto \ + google/protobuf/descriptor.proto \ + google/protobuf/duration.proto \ + google/protobuf/empty.proto \ + google/protobuf/field_mask.proto \ + google/protobuf/source_context.proto \ + google/protobuf/struct.proto \ + google/protobuf/timestamp.proto \ + google/protobuf/type.proto \ + google/protobuf/wrappers.proto) + +CORE_PROTO_IS_CORRECT=0 +PROCESS_ROUND=1 +TMP=$(mktemp -d) +echo "Updating descriptor protos..." +while [ $CORE_PROTO_IS_CORRECT -ne 1 ] +do + echo "Round $PROCESS_ROUND" + CORE_PROTO_IS_CORRECT=1 + + make $@ protoc + if test $? -ne 0; then + echo "Failed to build protoc." + exit 1 + fi + + ./protoc --cpp_out=dllexport_decl=LIBPROTOBUF_EXPORT:$TMP ${RUNTIME_PROTO_FILES[@]} && \ + ./protoc --cpp_out=dllexport_decl=LIBPROTOC_EXPORT:$TMP google/protobuf/compiler/plugin.proto + + for PROTO_FILE in ${RUNTIME_PROTO_FILES[@]}; do + BASE_NAME=${PROTO_FILE%.*} + diff ${BASE_NAME}.pb.h $TMP/${BASE_NAME}.pb.h > /dev/null + if test $? -ne 0; then + CORE_PROTO_IS_CORRECT=0 + fi + diff ${BASE_NAME}.pb.cc $TMP/${BASE_NAME}.pb.cc > /dev/null + if test $? -ne 0; then + CORE_PROTO_IS_CORRECT=0 + fi + done + + diff google/protobuf/compiler/plugin.pb.h $TMP/google/protobuf/compiler/plugin.pb.h > /dev/null + if test $? -ne 0; then + CORE_PROTO_IS_CORRECT=0 + fi + diff google/protobuf/compiler/plugin.pb.cc $TMP/google/protobuf/compiler/plugin.pb.cc > /dev/null + if test $? -ne 0; then + CORE_PROTO_IS_CORRECT=0 + fi + + # Only override the output if the files are different to avoid re-compilation + # of the protoc. + if [ $CORE_PROTO_IS_CORRECT -ne 1 ]; then + for PROTO_FILE in ${RUNTIME_PROTO_FILES[@]}; do + BASE_NAME=${PROTO_FILE%.*} + mv $TMP/${BASE_NAME}.pb.h ${BASE_NAME}.pb.h + mv $TMP/${BASE_NAME}.pb.cc ${BASE_NAME}.pb.cc + done + mv $TMP/google/protobuf/compiler/plugin.pb.* google/protobuf/compiler/ + fi + + PROCESS_ROUND=$((PROCESS_ROUND + 1)) +done +cd .. + +if test -x objectivec/generate_well_known_types.sh; then + echo "Generating messages for objc." + objectivec/generate_well_known_types.sh $@ +fi + +if test -x csharp/generate_protos.sh; then + echo "Generating messages for C#." + csharp/generate_protos.sh $@ +fi + +if test -x php/generate_descriptor_protos.sh; then + echo "Generating messages for PHP." + php/generate_descriptor_protos.sh $@ +fi |