diff options
Diffstat (limited to 'generate_descriptor_proto.sh')
-rwxr-xr-x | generate_descriptor_proto.sh | 67 |
1 files changed, 64 insertions, 3 deletions
diff --git a/generate_descriptor_proto.sh b/generate_descriptor_proto.sh index 07219dc1..b6e6e07b 100755 --- a/generate_descriptor_proto.sh +++ b/generate_descriptor_proto.sh @@ -27,7 +27,68 @@ __EOF__ fi cd src -make $@ protoc && - ./protoc --cpp_out=dllexport_decl=LIBPROTOBUF_EXPORT:. google/protobuf/descriptor.proto && \ - ./protoc --cpp_out=dllexport_decl=LIBPROTOC_EXPORT:. google/protobuf/compiler/plugin.proto + +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 +echo "Updating descriptor protos..." +while [ $CORE_PROTO_IS_CORRECT -ne 1 ] +do + echo "Round $PROCESS_ROUND" + CORE_PROTO_IS_CORRECT=1 + for PROTO_FILE in ${RUNTIME_PROTO_FILES[@]}; do + BASE_NAME=${PROTO_FILE%.*} + cp ${BASE_NAME}.pb.h ${BASE_NAME}.pb.h.tmp + cp ${BASE_NAME}.pb.cc ${BASE_NAME}.pb.cc.tmp + done + cp google/protobuf/compiler/plugin.pb.h google/protobuf/compiler/plugin.pb.h.tmp + cp google/protobuf/compiler/plugin.pb.cc google/protobuf/compiler/plugin.pb.cc.tmp + + make $@ protoc && + ./protoc --cpp_out=dllexport_decl=LIBPROTOBUF_EXPORT:. ${RUNTIME_PROTO_FILES[@]} && \ + ./protoc --cpp_out=dllexport_decl=LIBPROTOC_EXPORT:. google/protobuf/compiler/plugin.proto + + for PROTO_FILE in ${RUNTIME_PROTO_FILES[@]}; do + BASE_NAME=${PROTO_FILE%.*} + diff ${BASE_NAME}.pb.h ${BASE_NAME}.pb.h.tmp > /dev/null + if test $? -ne 0; then + CORE_PROTO_IS_CORRECT=0 + fi + diff ${BASE_NAME}.pb.cc ${BASE_NAME}.pb.cc.tmp > /dev/null + if test $? -ne 0; then + CORE_PROTO_IS_CORRECT=0 + fi + done + + diff google/protobuf/compiler/plugin.pb.h google/protobuf/compiler/plugin.pb.h.tmp > /dev/null + if test $? -ne 0; then + CORE_PROTO_IS_CORRECT=0 + fi + diff google/protobuf/compiler/plugin.pb.cc google/protobuf/compiler/plugin.pb.cc.tmp > /dev/null + if test $? -ne 0; then + CORE_PROTO_IS_CORRECT=0 + fi + + for PROTO_FILE in ${RUNTIME_PROTO_FILES[@]}; do + BASE_NAME=${PROTO_FILE%.*} + rm ${BASE_NAME}.pb.h.tmp + rm ${BASE_NAME}.pb.cc.tmp + done + rm google/protobuf/compiler/plugin.pb.h.tmp + rm google/protobuf/compiler/plugin.pb.cc.tmp + + PROCESS_ROUND=$((PROCESS_ROUND + 1)) +done cd .. |