OLD | NEW |
| (Empty) |
1 #!/bin/sh | |
2 | |
3 # Run this script to regenerate descriptor.pb.{h,cc} after the protocol | |
4 # compiler changes. Since these files are compiled into the protocol compiler | |
5 # itself, they cannot be generated automatically by a make rule. "make check" | |
6 # will fail if these files do not match what the protocol compiler would | |
7 # generate. | |
8 # | |
9 # HINT: Flags passed to generate_descriptor_proto.sh will be passed directly | |
10 # to make when building protoc. This is particularly useful for passing | |
11 # -j4 to run 4 jobs simultaneously. | |
12 | |
13 if test ! -e src/google/protobuf/stubs/common.h; then | |
14 cat >&2 << __EOF__ | |
15 Could not find source code. Make sure you are running this script from the | |
16 root of the distribution tree. | |
17 __EOF__ | |
18 exit 1 | |
19 fi | |
20 | |
21 if test ! -e src/Makefile; then | |
22 cat >&2 << __EOF__ | |
23 Could not find src/Makefile. You must run ./configure (and perhaps | |
24 ./autogen.sh) first. | |
25 __EOF__ | |
26 exit 1 | |
27 fi | |
28 | |
29 cd src | |
30 | |
31 declare -a RUNTIME_PROTO_FILES=(\ | |
32 google/protobuf/any.proto \ | |
33 google/protobuf/api.proto \ | |
34 google/protobuf/descriptor.proto \ | |
35 google/protobuf/duration.proto \ | |
36 google/protobuf/empty.proto \ | |
37 google/protobuf/field_mask.proto \ | |
38 google/protobuf/source_context.proto \ | |
39 google/protobuf/struct.proto \ | |
40 google/protobuf/timestamp.proto \ | |
41 google/protobuf/type.proto \ | |
42 google/protobuf/wrappers.proto) | |
43 | |
44 CORE_PROTO_IS_CORRECT=0 | |
45 PROCESS_ROUND=1 | |
46 echo "Updating descriptor protos..." | |
47 while [ $CORE_PROTO_IS_CORRECT -ne 1 ] | |
48 do | |
49 echo "Round $PROCESS_ROUND" | |
50 CORE_PROTO_IS_CORRECT=1 | |
51 for PROTO_FILE in ${RUNTIME_PROTO_FILES[@]}; do | |
52 BASE_NAME=${PROTO_FILE%.*} | |
53 cp ${BASE_NAME}.pb.h ${BASE_NAME}.pb.h.tmp | |
54 cp ${BASE_NAME}.pb.cc ${BASE_NAME}.pb.cc.tmp | |
55 done | |
56 cp google/protobuf/compiler/plugin.pb.h google/protobuf/compiler/plugin.pb.h.t
mp | |
57 cp google/protobuf/compiler/plugin.pb.cc google/protobuf/compiler/plugin.pb.cc
.tmp | |
58 | |
59 make $@ protoc && | |
60 ./protoc --cpp_out=dllexport_decl=LIBPROTOBUF_EXPORT:. ${RUNTIME_PROTO_FILES
[@]} && \ | |
61 ./protoc --cpp_out=dllexport_decl=LIBPROTOC_EXPORT:. google/protobuf/compile
r/plugin.proto | |
62 | |
63 for PROTO_FILE in ${RUNTIME_PROTO_FILES[@]}; do | |
64 BASE_NAME=${PROTO_FILE%.*} | |
65 diff ${BASE_NAME}.pb.h ${BASE_NAME}.pb.h.tmp > /dev/null | |
66 if test $? -ne 0; then | |
67 CORE_PROTO_IS_CORRECT=0 | |
68 fi | |
69 diff ${BASE_NAME}.pb.cc ${BASE_NAME}.pb.cc.tmp > /dev/null | |
70 if test $? -ne 0; then | |
71 CORE_PROTO_IS_CORRECT=0 | |
72 fi | |
73 done | |
74 | |
75 diff google/protobuf/compiler/plugin.pb.h google/protobuf/compiler/plugin.pb.h
.tmp > /dev/null | |
76 if test $? -ne 0; then | |
77 CORE_PROTO_IS_CORRECT=0 | |
78 fi | |
79 diff google/protobuf/compiler/plugin.pb.cc google/protobuf/compiler/plugin.pb.
cc.tmp > /dev/null | |
80 if test $? -ne 0; then | |
81 CORE_PROTO_IS_CORRECT=0 | |
82 fi | |
83 | |
84 for PROTO_FILE in ${RUNTIME_PROTO_FILES[@]}; do | |
85 BASE_NAME=${PROTO_FILE%.*} | |
86 rm ${BASE_NAME}.pb.h.tmp | |
87 rm ${BASE_NAME}.pb.cc.tmp | |
88 done | |
89 rm google/protobuf/compiler/plugin.pb.h.tmp | |
90 rm google/protobuf/compiler/plugin.pb.cc.tmp | |
91 | |
92 PROCESS_ROUND=$((PROCESS_ROUND + 1)) | |
93 done | |
94 cd .. | |
OLD | NEW |