Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Side by Side Diff: third_party/protobuf/protobuf.gyp

Issue 11231046: Linux: add an option to build with system protobuf. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « build/protoc.gypi ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 { 5 {
6 'conditions': [ 6 'conditions': [
7 ['OS!="win"', { 7 ['use_system_protobuf==0', {
8 'variables': { 8 'conditions': [
9 'config_h_dir': 9 ['OS!="win"', {
10 '.', # crafted for gcc/linux. 10 'variables': {
11 }, 11 'config_h_dir':
12 }, { # else, OS=="win" 12 '.', # crafted for gcc/linux.
13 'variables': { 13 },
14 'config_h_dir': 14 }, { # else, OS=="win"
15 'vsprojects', # crafted for msvc. 15 'variables': {
16 }, 16 'config_h_dir':
17 'target_defaults': { 17 'vsprojects', # crafted for msvc.
18 'msvs_disabled_warnings': [ 18 },
19 4018, # signed/unsigned mismatch in comparison 19 'target_defaults': {
20 4244, # implicit conversion, possible loss of data 20 'msvs_disabled_warnings': [
21 4355, # 'this' used in base member initializer list 21 4018, # signed/unsigned mismatch in comparison
22 ], 22 4244, # implicit conversion, possible loss of data
23 'defines!': [ 23 4355, # 'this' used in base member initializer list
24 'WIN32_LEAN_AND_MEAN', # Protobuf defines this itself. 24 ],
25 ], 25 'defines!': [
26 }, 26 'WIN32_LEAN_AND_MEAN', # Protobuf defines this itself.
27 }], 27 ],
28 ['OS=="ios"', { 28 },
29 'variables': { 29 }],
30 'ninja_output_dir': 'ninja-protoc', 30 ['OS=="ios"', {
31 'ninja_product_dir': 31 'variables': {
32 '<(DEPTH)/xcodebuild/<(ninja_output_dir)/<(CONFIGURATION_NAME)', 32 'ninja_output_dir': 'ninja-protoc',
33 # Gyp to rerun 33 'ninja_product_dir':
34 're_run_targets': [ 34 '<(DEPTH)/xcodebuild/<(ninja_output_dir)/<(CONFIGURATION_NAME)',
35 'third_party/protobuf/protobuf.gyp', 35 # Gyp to rerun
36 ], 36 're_run_targets': [
37 }, 37 'third_party/protobuf/protobuf.gyp',
38 ],
39 },
40 'targets': [
41 {
42 # On iOS, generating protoc is done via two actions: (1) compiling
43 # the executable with ninja, and (2) copying the executable into a
44 # location that is shared with other projects. These actions are
45 # separated into two targets in order to be able to specify that t he
46 # second action should not run until the first action finishes (si nce
47 # the ordering of multiple actions in one target is defined only b y
48 # inputs and outputs, and it's impossible to set correct inputs fo r
49 # the ninja build, so setting all the inputs and outputs isn't an
50 # option). The first target is given here; the second target is th e
51 # normal protoc target under the condition that "OS==iOS".
52 'target_name': 'compile_protoc',
53 'type': 'none',
54 'includes': ['../../build/ios/mac_build.gypi'],
55 'actions': [
56 {
57 'action_name': 'compile protoc',
58 'inputs': [],
59 'outputs': [],
60 'action': [
61 '<@(ninja_cmd)',
62 'protoc',
63 ],
64 'message': 'Generating the C++ protocol buffers compiler',
65 },
66 ],
67 },
68 ],
69 }],
70 ],
38 'targets': [ 71 'targets': [
39 { 72 # The "lite" lib is about 1/7th the size of the heavy lib,
40 # On iOS, generating protoc is done via two actions: (1) compiling 73 # but it doesn't support some of the more exotic features of
41 # the executable with ninja, and (2) copying the executable into a 74 # protobufs, like reflection. To generate C++ code that can link
42 # location that is shared with other projects. These actions are 75 # against the lite version of the library, add the option line:
43 # separated into two targets in order to be able to specify that the 76 #
44 # second action should not run until the first action finishes (since 77 # option optimize_for = LITE_RUNTIME;
45 # the ordering of multiple actions in one target is defined only by 78 #
46 # inputs and outputs, and it's impossible to set correct inputs for 79 # to your .proto file.
47 # the ninja build, so setting all the inputs and outputs isn't an 80 {
48 # option). The first target is given here; the second target is the 81 'target_name': 'protobuf_lite',
49 # normal protoc target under the condition that "OS==iOS". 82 'type': 'static_library',
50 'target_name': 'compile_protoc', 83 'toolsets': ['host', 'target'],
84 'sources': [
85 'src/google/protobuf/stubs/atomicops.h',
86 'src/google/protobuf/stubs/atomicops_internals_arm_gcc.h',
87 'src/google/protobuf/stubs/atomicops_internals_atomicword_compat.h',
88 'src/google/protobuf/stubs/atomicops_internals_macosx.h',
89 'src/google/protobuf/stubs/atomicops_internals_mips_gcc.h',
90 'src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc',
91 'src/google/protobuf/stubs/atomicops_internals_x86_gcc.h',
92 'src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc',
93 'src/google/protobuf/stubs/atomicops_internals_x86_msvc.h',
94 'src/google/protobuf/stubs/common.h',
95 'src/google/protobuf/stubs/once.h',
96 'src/google/protobuf/stubs/platform_macros.h',
97 'src/google/protobuf/extension_set.h',
98 'src/google/protobuf/generated_message_util.h',
99 'src/google/protobuf/message_lite.h',
100 'src/google/protobuf/repeated_field.h',
101 'src/google/protobuf/unknown_field_set.cc',
102 'src/google/protobuf/unknown_field_set.h',
103 'src/google/protobuf/wire_format_lite.h',
104 'src/google/protobuf/wire_format_lite_inl.h',
105 'src/google/protobuf/io/coded_stream.h',
106 'src/google/protobuf/io/zero_copy_stream.h',
107 'src/google/protobuf/io/zero_copy_stream_impl_lite.h',
108
109 'src/google/protobuf/stubs/common.cc',
110 'src/google/protobuf/stubs/once.cc',
111 'src/google/protobuf/stubs/hash.h',
112 'src/google/protobuf/stubs/map-util.h',
113 'src/google/protobuf/stubs/stl_util-inl.h',
114 'src/google/protobuf/extension_set.cc',
115 'src/google/protobuf/generated_message_util.cc',
116 'src/google/protobuf/message_lite.cc',
117 'src/google/protobuf/repeated_field.cc',
118 'src/google/protobuf/wire_format_lite.cc',
119 'src/google/protobuf/io/coded_stream.cc',
120 'src/google/protobuf/io/coded_stream_inl.h',
121 'src/google/protobuf/io/zero_copy_stream.cc',
122 'src/google/protobuf/io/zero_copy_stream_impl_lite.cc',
123 '<(config_h_dir)/config.h',
124 ],
125 'include_dirs': [
126 '<(config_h_dir)',
127 'src',
128 ],
129 # This macro must be defined to suppress the use of dynamic_cast<>,
130 # which requires RTTI.
131 'defines': [
132 'GOOGLE_PROTOBUF_NO_RTTI',
133 'GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER',
134 ],
135
136 'direct_dependent_settings': {
137 'include_dirs': [
138 '<(config_h_dir)',
139 'src',
140 ],
141 'defines': [
142 'GOOGLE_PROTOBUF_NO_RTTI',
143 'GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER',
144 ],
145 },
146 },
147 # This is the full, heavy protobuf lib that's needed for c++ .proto's
148 # that don't specify the LITE_RUNTIME option. The protocol
149 # compiler itself (protoc) falls into that category.
150 #
151 # DO NOT LINK AGAINST THIS TARGET IN CHROME CODE --agl
152 {
153 'target_name': 'protobuf_full_do_not_use',
154 'type': 'static_library',
155 'toolsets': ['host','target'],
156 'sources': [
157 'src/google/protobuf/descriptor.h',
158 'src/google/protobuf/descriptor.pb.h',
159 'src/google/protobuf/descriptor_database.h',
160 'src/google/protobuf/dynamic_message.h',
161 'src/google/protobuf/generated_message_reflection.h',
162 'src/google/protobuf/message.h',
163 'src/google/protobuf/reflection_ops.h',
164 'src/google/protobuf/service.h',
165 'src/google/protobuf/text_format.h',
166 'src/google/protobuf/wire_format.h',
167 'src/google/protobuf/io/gzip_stream.h',
168 'src/google/protobuf/io/printer.h',
169 'src/google/protobuf/io/tokenizer.h',
170 'src/google/protobuf/io/zero_copy_stream_impl.h',
171 'src/google/protobuf/compiler/code_generator.h',
172 'src/google/protobuf/compiler/command_line_interface.h',
173 'src/google/protobuf/compiler/importer.h',
174 'src/google/protobuf/compiler/parser.h',
175
176 'src/google/protobuf/stubs/strutil.cc',
177 'src/google/protobuf/stubs/strutil.h',
178 'src/google/protobuf/stubs/substitute.cc',
179 'src/google/protobuf/stubs/substitute.h',
180 'src/google/protobuf/stubs/structurally_valid.cc',
181 'src/google/protobuf/descriptor.cc',
182 'src/google/protobuf/descriptor.pb.cc',
183 'src/google/protobuf/descriptor_database.cc',
184 'src/google/protobuf/dynamic_message.cc',
185 'src/google/protobuf/extension_set_heavy.cc',
186 'src/google/protobuf/generated_message_reflection.cc',
187 'src/google/protobuf/message.cc',
188 'src/google/protobuf/reflection_ops.cc',
189 'src/google/protobuf/service.cc',
190 'src/google/protobuf/text_format.cc',
191 'src/google/protobuf/wire_format.cc',
192 # This file pulls in zlib, but it's not actually used by protoc, so
193 # instead of compiling zlib for the host, let's just exclude this.
194 # 'src/src/google/protobuf/io/gzip_stream.cc',
195 'src/google/protobuf/io/printer.cc',
196 'src/google/protobuf/io/tokenizer.cc',
197 'src/google/protobuf/io/zero_copy_stream_impl.cc',
198 'src/google/protobuf/compiler/importer.cc',
199 'src/google/protobuf/compiler/parser.cc',
200 ],
201 'dependencies': [
202 'protobuf_lite',
203 ],
204 'export_dependent_settings': [
205 'protobuf_lite',
206 ],
207 },
208 {
209 'target_name': 'protoc',
210 'conditions': [
211 ['OS!="ios"', {
212 'type': 'executable',
213 'toolsets': ['host'],
214 'sources': [
215 'src/google/protobuf/compiler/code_generator.cc',
216 'src/google/protobuf/compiler/command_line_interface.cc',
217 'src/google/protobuf/compiler/plugin.cc',
218 'src/google/protobuf/compiler/plugin.pb.cc',
219 'src/google/protobuf/compiler/subprocess.cc',
220 'src/google/protobuf/compiler/subprocess.h',
221 'src/google/protobuf/compiler/zip_writer.cc',
222 'src/google/protobuf/compiler/zip_writer.h',
223 'src/google/protobuf/compiler/cpp/cpp_enum.cc',
224 'src/google/protobuf/compiler/cpp/cpp_enum.h',
225 'src/google/protobuf/compiler/cpp/cpp_enum_field.cc',
226 'src/google/protobuf/compiler/cpp/cpp_enum_field.h',
227 'src/google/protobuf/compiler/cpp/cpp_extension.cc',
228 'src/google/protobuf/compiler/cpp/cpp_extension.h',
229 'src/google/protobuf/compiler/cpp/cpp_field.cc',
230 'src/google/protobuf/compiler/cpp/cpp_field.h',
231 'src/google/protobuf/compiler/cpp/cpp_file.cc',
232 'src/google/protobuf/compiler/cpp/cpp_file.h',
233 'src/google/protobuf/compiler/cpp/cpp_generator.cc',
234 'src/google/protobuf/compiler/cpp/cpp_helpers.cc',
235 'src/google/protobuf/compiler/cpp/cpp_helpers.h',
236 'src/google/protobuf/compiler/cpp/cpp_message.cc',
237 'src/google/protobuf/compiler/cpp/cpp_message.h',
238 'src/google/protobuf/compiler/cpp/cpp_message_field.cc',
239 'src/google/protobuf/compiler/cpp/cpp_message_field.h',
240 'src/google/protobuf/compiler/cpp/cpp_primitive_field.cc',
241 'src/google/protobuf/compiler/cpp/cpp_primitive_field.h',
242 'src/google/protobuf/compiler/cpp/cpp_service.cc',
243 'src/google/protobuf/compiler/cpp/cpp_service.h',
244 'src/google/protobuf/compiler/cpp/cpp_string_field.cc',
245 'src/google/protobuf/compiler/cpp/cpp_string_field.h',
246 'src/google/protobuf/compiler/java/java_enum.cc',
247 'src/google/protobuf/compiler/java/java_enum.h',
248 'src/google/protobuf/compiler/java/java_enum_field.cc',
249 'src/google/protobuf/compiler/java/java_enum_field.h',
250 'src/google/protobuf/compiler/java/java_extension.cc',
251 'src/google/protobuf/compiler/java/java_extension.h',
252 'src/google/protobuf/compiler/java/java_field.cc',
253 'src/google/protobuf/compiler/java/java_field.h',
254 'src/google/protobuf/compiler/java/java_file.cc',
255 'src/google/protobuf/compiler/java/java_file.h',
256 'src/google/protobuf/compiler/java/java_generator.cc',
257 'src/google/protobuf/compiler/java/java_helpers.cc',
258 'src/google/protobuf/compiler/java/java_helpers.h',
259 'src/google/protobuf/compiler/java/java_message.cc',
260 'src/google/protobuf/compiler/java/java_message.h',
261 'src/google/protobuf/compiler/java/java_message_field.cc',
262 'src/google/protobuf/compiler/java/java_message_field.h',
263 'src/google/protobuf/compiler/java/java_primitive_field.cc',
264 'src/google/protobuf/compiler/java/java_primitive_field.h',
265 'src/google/protobuf/compiler/java/java_service.cc',
266 'src/google/protobuf/compiler/java/java_service.h',
267 'src/google/protobuf/compiler/java/java_string_field.cc',
268 'src/google/protobuf/compiler/java/java_string_field.h',
269 'src/google/protobuf/compiler/python/python_generator.cc',
270 'src/google/protobuf/compiler/main.cc',
271 ],
272 'dependencies': [
273 'protobuf_full_do_not_use',
274 ],
275 'include_dirs': [
276 '<(config_h_dir)',
277 'src/src',
278 ],
279 }, { # else, OS=="ios"
280 'type': 'none',
281 'dependencies': [
282 'compile_protoc',
283 ],
284 'actions': [
285 {
286 'action_name': 'copy protoc',
287 'inputs': [
288 '<(ninja_product_dir)/protoc',
289 ],
290 'outputs': [
291 '<(PRODUCT_DIR)/protoc',
292 ],
293 'action': [
294 'cp',
295 '<(ninja_product_dir)/protoc',
296 '<(PRODUCT_DIR)/protoc',
297 ],
298 },
299 ],
300 }],
301 ],
302 },
303 {
304 # Generate the python module needed by all protoc-generated Python cod e.
305 'target_name': 'py_proto',
51 'type': 'none', 306 'type': 'none',
52 'includes': ['../../build/ios/mac_build.gypi'], 307 'copies': [
53 'actions': [
54 { 308 {
55 'action_name': 'compile protoc', 309 'destination': '<(PRODUCT_DIR)/pyproto/google/',
56 'inputs': [], 310 'files': [
57 'outputs': [], 311 # google/ module gets an empty __init__.py.
58 'action': [ 312 '__init__.py',
59 '<@(ninja_cmd)', 313 ],
60 'protoc',
61 ],
62 'message': 'Generating the C++ protocol buffers compiler',
63 }, 314 },
64 ], 315 {
316 'destination': '<(PRODUCT_DIR)/pyproto/google/protobuf',
317 'files': [
318 'python/google/protobuf/__init__.py',
319 'python/google/protobuf/descriptor.py',
320 'python/google/protobuf/message.py',
321 'python/google/protobuf/reflection.py',
322 'python/google/protobuf/service.py',
323 'python/google/protobuf/service_reflection.py',
324 'python/google/protobuf/text_format.py',
325
326 # TODO(ncarter): protoc's python generator treats
327 # descriptor.proto specially, but it's not possible to trigger
328 # the special treatment unless you run protoc from ./src/src
329 # (the treatment is based on the path to the .proto file
330 # matching a constant exactly). I'm not sure how to convince
331 # gyp to execute a rule from a different directory. Until this
332 # is resolved, use a copy of descriptor_pb2.py that I manually
333 # generated.
334 'descriptor_pb2.py',
335 ],
336 },
337 {
338 'destination': '<(PRODUCT_DIR)/pyproto/google/protobuf/internal',
339 'files': [
340 'python/google/protobuf/internal/__init__.py',
341 'python/google/protobuf/internal/api_implementation.py',
342 'python/google/protobuf/internal/containers.py',
343 'python/google/protobuf/internal/cpp_message.py',
344 'python/google/protobuf/internal/decoder.py',
345 'python/google/protobuf/internal/encoder.py',
346 'python/google/protobuf/internal/generator_test.py',
347 'python/google/protobuf/internal/message_listener.py',
348 'python/google/protobuf/internal/python_message.py',
349 'python/google/protobuf/internal/type_checkers.py',
350 'python/google/protobuf/internal/wire_format.py',
351 ],
352 },
353 ],
354 # # We can't generate a proper descriptor_pb2.py -- see earlier comment.
355 # 'rules': [
356 # {
357 # 'rule_name': 'genproto',
358 # 'extension': 'proto',
359 # 'inputs': [
360 # '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)',
361 # ],
362 # 'variables': {
363 # # The protoc compiler requires a proto_path argument with the
364 # # directory containing the .proto file.
365 # 'rule_input_relpath': 'src/google/protobuf',
366 # },
367 # 'outputs': [
368 # '<(PRODUCT_DIR)/pyproto/google/protobuf/<(RULE_INPUT_ROOT)_pb2 .py',
369 # ],
370 # 'action': [
371 # '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX) ',
372 # '-I./src',
373 # '-I.',
374 # '--python_out=<(PRODUCT_DIR)/pyproto/google/protobuf',
375 # 'google/protobuf/descriptor.proto',
376 # ],
377 # 'message': 'Generating Python code from <(RULE_INPUT_PATH)',
378 # },
379 # ],
380 # 'dependencies': [
381 # 'protoc#host',
382 # ],
383 # 'sources': [
384 # 'src/google/protobuf/descriptor.proto',
385 # ],
386 },
387 ],
388 }, { # use_system_protobuf==1
389 'targets': [
390 {
391 'target_name': 'protobuf_lite',
392 'type': 'none',
393 'direct_dependent_settings': {
394 'cflags': [
395 '<!@(pkg-config --cflags protobuf-lite)',
396 ],
397 'defines': [
398 # This macro must be defined to suppress the use
399 # of dynamic_cast<>, which requires RTTI.
400 'GOOGLE_PROTOBUF_NO_RTTI',
401 'GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER',
402 ],
403 },
404 'link_settings': {
405 'ldflags': [
406 '<!@(pkg-config --libs-only-L --libs-only-other protobuf-lite)',
407 ],
408 'libraries': [
409 '<!@(pkg-config --libs-only-l protobuf-lite)',
410 ],
411 },
412 },
413 {
414 'target_name': 'protoc',
415 'type': 'none',
416 'toolsets': ['host', 'target'],
417 },
418 {
419 'target_name': 'py_proto',
420 'type': 'none',
65 }, 421 },
66 ], 422 ],
67 }], 423 }],
68 ], 424 ],
69 'targets': [
70 # The "lite" lib is about 1/7th the size of the heavy lib,
71 # but it doesn't support some of the more exotic features of
72 # protobufs, like reflection. To generate C++ code that can link
73 # against the lite version of the library, add the option line:
74 #
75 # option optimize_for = LITE_RUNTIME;
76 #
77 # to your .proto file.
78 {
79 'target_name': 'protobuf_lite',
80 'type': 'static_library',
81 'toolsets': ['host', 'target'],
82 'sources': [
83 'src/google/protobuf/stubs/atomicops.h',
84 'src/google/protobuf/stubs/atomicops_internals_arm_gcc.h',
85 'src/google/protobuf/stubs/atomicops_internals_atomicword_compat.h',
86 'src/google/protobuf/stubs/atomicops_internals_macosx.h',
87 'src/google/protobuf/stubs/atomicops_internals_mips_gcc.h',
88 'src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc',
89 'src/google/protobuf/stubs/atomicops_internals_x86_gcc.h',
90 'src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc',
91 'src/google/protobuf/stubs/atomicops_internals_x86_msvc.h',
92 'src/google/protobuf/stubs/common.h',
93 'src/google/protobuf/stubs/once.h',
94 'src/google/protobuf/stubs/platform_macros.h',
95 'src/google/protobuf/extension_set.h',
96 'src/google/protobuf/generated_message_util.h',
97 'src/google/protobuf/message_lite.h',
98 'src/google/protobuf/repeated_field.h',
99 'src/google/protobuf/unknown_field_set.cc',
100 'src/google/protobuf/unknown_field_set.h',
101 'src/google/protobuf/wire_format_lite.h',
102 'src/google/protobuf/wire_format_lite_inl.h',
103 'src/google/protobuf/io/coded_stream.h',
104 'src/google/protobuf/io/zero_copy_stream.h',
105 'src/google/protobuf/io/zero_copy_stream_impl_lite.h',
106
107 'src/google/protobuf/stubs/common.cc',
108 'src/google/protobuf/stubs/once.cc',
109 'src/google/protobuf/stubs/hash.h',
110 'src/google/protobuf/stubs/map-util.h',
111 'src/google/protobuf/stubs/stl_util-inl.h',
112 'src/google/protobuf/extension_set.cc',
113 'src/google/protobuf/generated_message_util.cc',
114 'src/google/protobuf/message_lite.cc',
115 'src/google/protobuf/repeated_field.cc',
116 'src/google/protobuf/wire_format_lite.cc',
117 'src/google/protobuf/io/coded_stream.cc',
118 'src/google/protobuf/io/coded_stream_inl.h',
119 'src/google/protobuf/io/zero_copy_stream.cc',
120 'src/google/protobuf/io/zero_copy_stream_impl_lite.cc',
121 '<(config_h_dir)/config.h',
122 ],
123 'include_dirs': [
124 '<(config_h_dir)',
125 'src',
126 ],
127 # This macro must be defined to suppress the use of dynamic_cast<>,
128 # which requires RTTI.
129 'defines': [
130 'GOOGLE_PROTOBUF_NO_RTTI',
131 'GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER',
132 ],
133
134 'direct_dependent_settings': {
135 'include_dirs': [
136 '<(config_h_dir)',
137 'src',
138 ],
139 'defines': [
140 'GOOGLE_PROTOBUF_NO_RTTI',
141 'GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER',
142 ],
143 },
144 },
145 # This is the full, heavy protobuf lib that's needed for c++ .proto's
146 # that don't specify the LITE_RUNTIME option. The protocol
147 # compiler itself (protoc) falls into that category.
148 #
149 # DO NOT LINK AGAINST THIS TARGET IN CHROME CODE --agl
150 {
151 'target_name': 'protobuf_full_do_not_use',
152 'type': 'static_library',
153 'toolsets': ['host','target'],
154 'sources': [
155 'src/google/protobuf/descriptor.h',
156 'src/google/protobuf/descriptor.pb.h',
157 'src/google/protobuf/descriptor_database.h',
158 'src/google/protobuf/dynamic_message.h',
159 'src/google/protobuf/generated_message_reflection.h',
160 'src/google/protobuf/message.h',
161 'src/google/protobuf/reflection_ops.h',
162 'src/google/protobuf/service.h',
163 'src/google/protobuf/text_format.h',
164 'src/google/protobuf/wire_format.h',
165 'src/google/protobuf/io/gzip_stream.h',
166 'src/google/protobuf/io/printer.h',
167 'src/google/protobuf/io/tokenizer.h',
168 'src/google/protobuf/io/zero_copy_stream_impl.h',
169 'src/google/protobuf/compiler/code_generator.h',
170 'src/google/protobuf/compiler/command_line_interface.h',
171 'src/google/protobuf/compiler/importer.h',
172 'src/google/protobuf/compiler/parser.h',
173
174 'src/google/protobuf/stubs/strutil.cc',
175 'src/google/protobuf/stubs/strutil.h',
176 'src/google/protobuf/stubs/substitute.cc',
177 'src/google/protobuf/stubs/substitute.h',
178 'src/google/protobuf/stubs/structurally_valid.cc',
179 'src/google/protobuf/descriptor.cc',
180 'src/google/protobuf/descriptor.pb.cc',
181 'src/google/protobuf/descriptor_database.cc',
182 'src/google/protobuf/dynamic_message.cc',
183 'src/google/protobuf/extension_set_heavy.cc',
184 'src/google/protobuf/generated_message_reflection.cc',
185 'src/google/protobuf/message.cc',
186 'src/google/protobuf/reflection_ops.cc',
187 'src/google/protobuf/service.cc',
188 'src/google/protobuf/text_format.cc',
189 'src/google/protobuf/wire_format.cc',
190 # This file pulls in zlib, but it's not actually used by protoc, so
191 # instead of compiling zlib for the host, let's just exclude this.
192 # 'src/src/google/protobuf/io/gzip_stream.cc',
193 'src/google/protobuf/io/printer.cc',
194 'src/google/protobuf/io/tokenizer.cc',
195 'src/google/protobuf/io/zero_copy_stream_impl.cc',
196 'src/google/protobuf/compiler/importer.cc',
197 'src/google/protobuf/compiler/parser.cc',
198 ],
199 'dependencies': [
200 'protobuf_lite',
201 ],
202 'export_dependent_settings': [
203 'protobuf_lite',
204 ],
205 },
206 {
207 'target_name': 'protoc',
208 'conditions': [
209 ['OS!="ios"', {
210 'type': 'executable',
211 'toolsets': ['host'],
212 'sources': [
213 'src/google/protobuf/compiler/code_generator.cc',
214 'src/google/protobuf/compiler/command_line_interface.cc',
215 'src/google/protobuf/compiler/plugin.cc',
216 'src/google/protobuf/compiler/plugin.pb.cc',
217 'src/google/protobuf/compiler/subprocess.cc',
218 'src/google/protobuf/compiler/subprocess.h',
219 'src/google/protobuf/compiler/zip_writer.cc',
220 'src/google/protobuf/compiler/zip_writer.h',
221 'src/google/protobuf/compiler/cpp/cpp_enum.cc',
222 'src/google/protobuf/compiler/cpp/cpp_enum.h',
223 'src/google/protobuf/compiler/cpp/cpp_enum_field.cc',
224 'src/google/protobuf/compiler/cpp/cpp_enum_field.h',
225 'src/google/protobuf/compiler/cpp/cpp_extension.cc',
226 'src/google/protobuf/compiler/cpp/cpp_extension.h',
227 'src/google/protobuf/compiler/cpp/cpp_field.cc',
228 'src/google/protobuf/compiler/cpp/cpp_field.h',
229 'src/google/protobuf/compiler/cpp/cpp_file.cc',
230 'src/google/protobuf/compiler/cpp/cpp_file.h',
231 'src/google/protobuf/compiler/cpp/cpp_generator.cc',
232 'src/google/protobuf/compiler/cpp/cpp_helpers.cc',
233 'src/google/protobuf/compiler/cpp/cpp_helpers.h',
234 'src/google/protobuf/compiler/cpp/cpp_message.cc',
235 'src/google/protobuf/compiler/cpp/cpp_message.h',
236 'src/google/protobuf/compiler/cpp/cpp_message_field.cc',
237 'src/google/protobuf/compiler/cpp/cpp_message_field.h',
238 'src/google/protobuf/compiler/cpp/cpp_primitive_field.cc',
239 'src/google/protobuf/compiler/cpp/cpp_primitive_field.h',
240 'src/google/protobuf/compiler/cpp/cpp_service.cc',
241 'src/google/protobuf/compiler/cpp/cpp_service.h',
242 'src/google/protobuf/compiler/cpp/cpp_string_field.cc',
243 'src/google/protobuf/compiler/cpp/cpp_string_field.h',
244 'src/google/protobuf/compiler/java/java_enum.cc',
245 'src/google/protobuf/compiler/java/java_enum.h',
246 'src/google/protobuf/compiler/java/java_enum_field.cc',
247 'src/google/protobuf/compiler/java/java_enum_field.h',
248 'src/google/protobuf/compiler/java/java_extension.cc',
249 'src/google/protobuf/compiler/java/java_extension.h',
250 'src/google/protobuf/compiler/java/java_field.cc',
251 'src/google/protobuf/compiler/java/java_field.h',
252 'src/google/protobuf/compiler/java/java_file.cc',
253 'src/google/protobuf/compiler/java/java_file.h',
254 'src/google/protobuf/compiler/java/java_generator.cc',
255 'src/google/protobuf/compiler/java/java_helpers.cc',
256 'src/google/protobuf/compiler/java/java_helpers.h',
257 'src/google/protobuf/compiler/java/java_message.cc',
258 'src/google/protobuf/compiler/java/java_message.h',
259 'src/google/protobuf/compiler/java/java_message_field.cc',
260 'src/google/protobuf/compiler/java/java_message_field.h',
261 'src/google/protobuf/compiler/java/java_primitive_field.cc',
262 'src/google/protobuf/compiler/java/java_primitive_field.h',
263 'src/google/protobuf/compiler/java/java_service.cc',
264 'src/google/protobuf/compiler/java/java_service.h',
265 'src/google/protobuf/compiler/java/java_string_field.cc',
266 'src/google/protobuf/compiler/java/java_string_field.h',
267 'src/google/protobuf/compiler/python/python_generator.cc',
268 'src/google/protobuf/compiler/main.cc',
269 ],
270 'dependencies': [
271 'protobuf_full_do_not_use',
272 ],
273 'include_dirs': [
274 '<(config_h_dir)',
275 'src/src',
276 ],
277 }, { # else, OS=="ios"
278 'type': 'none',
279 'dependencies': [
280 'compile_protoc',
281 ],
282 'actions': [
283 {
284 'action_name': 'copy protoc',
285 'inputs': [
286 '<(ninja_product_dir)/protoc',
287 ],
288 'outputs': [
289 '<(PRODUCT_DIR)/protoc',
290 ],
291 'action': [
292 'cp',
293 '<(ninja_product_dir)/protoc',
294 '<(PRODUCT_DIR)/protoc',
295 ],
296 },
297 ],
298 }],
299 ],
300 },
301 {
302 # Generate the python module needed by all protoc-generated Python code.
303 'target_name': 'py_proto',
304 'type': 'none',
305 'copies': [
306 {
307 'destination': '<(PRODUCT_DIR)/pyproto/google/',
308 'files': [
309 # google/ module gets an empty __init__.py.
310 '__init__.py',
311 ],
312 },
313 {
314 'destination': '<(PRODUCT_DIR)/pyproto/google/protobuf',
315 'files': [
316 'python/google/protobuf/__init__.py',
317 'python/google/protobuf/descriptor.py',
318 'python/google/protobuf/message.py',
319 'python/google/protobuf/reflection.py',
320 'python/google/protobuf/service.py',
321 'python/google/protobuf/service_reflection.py',
322 'python/google/protobuf/text_format.py',
323
324 # TODO(ncarter): protoc's python generator treats descriptor.proto
325 # specially, but it's not possible to trigger the special treatment
326 # unless you run protoc from ./src/src (the treatment is based
327 # on the path to the .proto file matching a constant exactly).
328 # I'm not sure how to convince gyp to execute a rule from a
329 # different directory. Until this is resolved, use a copy of
330 # descriptor_pb2.py that I manually generated.
331 'descriptor_pb2.py',
332 ],
333 },
334 {
335 'destination': '<(PRODUCT_DIR)/pyproto/google/protobuf/internal',
336 'files': [
337 'python/google/protobuf/internal/__init__.py',
338 'python/google/protobuf/internal/api_implementation.py',
339 'python/google/protobuf/internal/containers.py',
340 'python/google/protobuf/internal/cpp_message.py',
341 'python/google/protobuf/internal/decoder.py',
342 'python/google/protobuf/internal/encoder.py',
343 'python/google/protobuf/internal/generator_test.py',
344 'python/google/protobuf/internal/message_listener.py',
345 'python/google/protobuf/internal/python_message.py',
346 'python/google/protobuf/internal/type_checkers.py',
347 'python/google/protobuf/internal/wire_format.py',
348 ],
349 },
350 ],
351 # # We can't generate a proper descriptor_pb2.py -- see earlier comment.
352 # 'rules': [
353 # {
354 # 'rule_name': 'genproto',
355 # 'extension': 'proto',
356 # 'inputs': [
357 # '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)',
358 # ],
359 # 'variables': {
360 # # The protoc compiler requires a proto_path argument with the
361 # # directory containing the .proto file.
362 # 'rule_input_relpath': 'src/google/protobuf',
363 # },
364 # 'outputs': [
365 # '<(PRODUCT_DIR)/pyproto/google/protobuf/<(RULE_INPUT_ROOT)_pb2.py' ,
366 # ],
367 # 'action': [
368 # '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)',
369 # '-I./src',
370 # '-I.',
371 # '--python_out=<(PRODUCT_DIR)/pyproto/google/protobuf',
372 # 'google/protobuf/descriptor.proto',
373 # ],
374 # 'message': 'Generating Python code from <(RULE_INPUT_PATH)',
375 # },
376 # ],
377 # 'dependencies': [
378 # 'protoc#host',
379 # ],
380 # 'sources': [
381 # 'src/google/protobuf/descriptor.proto',
382 # ],
383 },
384 ],
385 } 425 }
OLDNEW
« no previous file with comments | « build/protoc.gypi ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698