OLD | NEW |
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 # This file is meant to be included into a target to provide a rule | 5 # This file is meant to be included into a target to provide a rule |
6 # to invoke protoc in a consistent manner. This is only to be included | 6 # to invoke protoc in a consistent manner. This is only to be included |
7 # for Java targets. When including this file, a .jar-file will be generated. | 7 # for Java targets. When including this file, a .jar-file will be generated. |
8 # For other targets, see protoc.gypi. | 8 # For other targets, see protoc.gypi. |
9 # | 9 # |
10 # To use this, create a gyp target with the following form: | 10 # To use this, create a gyp target with the following form: |
11 # { | 11 # { |
12 # 'target_name': 'my_proto_lib', | 12 # 'target_name': 'my_proto_lib', |
13 # 'sources': [ | 13 # 'sources': [ |
14 # 'foo.proto', | 14 # 'foo.proto', |
15 # 'bar.proto', | 15 # 'bar.proto', |
16 # ], | 16 # ], |
17 # 'variables': { | 17 # 'variables': { |
18 # 'proto_in_dir': '.' | 18 # 'proto_in_dir': '.' |
19 # }, | 19 # }, |
20 # 'includes': ['path/to/this/gypi/file'], | 20 # 'includes': ['path/to/this/gypi/file'], |
21 # } | 21 # } |
22 # | 22 # |
23 # The 'proto_in_dir' variable must be the relative path to the | 23 # The 'proto_in_dir' variable must be the relative path to the |
24 # directory containing the .proto files. If left out, it defaults to '.'. | 24 # directory containing the .proto files. If left out, it defaults to '.'. |
25 # | 25 # |
26 # You can optionally set a variable 'proto_runtime' to either 'lite' or 'nano'. | |
27 # The default runtime is 'lite'. | |
28 # | |
29 # The 'output_java_files' variable specifies a list of output files that will | 26 # The 'output_java_files' variable specifies a list of output files that will |
30 # be generated. It is based on the package and java_outer_classname fields in | 27 # be generated. It is based on the package and java_outer_classname fields in |
31 # the proto. All the values must be prefixed with >(java_out_dir), since that | 28 # the proto. All the values must be prefixed with >(java_out_dir), since that |
32 # is the root directory of all the output. | 29 # is the root directory of all the output. |
33 # | 30 # |
34 # Implementation notes: | 31 # Implementation notes: |
35 # A target_name of foo and proto-specified 'package' java.package.path produces: | 32 # A target_name of foo and proto-specified 'package' java.package.path produces: |
36 # <(PRODUCT_DIR)/java_proto/foo/{java/package/path/}{Foo,Bar}.java | 33 # <(PRODUCT_DIR)/java_proto/foo/{java/package/path/}{Foo,Bar}.java |
37 # where Foo and Bar are taken from 'java_outer_classname' of the protos. | 34 # where Foo and Bar are taken from 'java_outer_classname' of the protos. |
38 # | 35 # |
39 # How the .jar-file is created is different than how protoc is used for other | 36 # How the .jar-file is created is different than how protoc is used for other |
40 # targets, and as such, this lives in its own file. | 37 # targets, and as such, this lives in its own file. |
41 | 38 |
42 { | 39 { |
43 'variables': { | 40 'variables': { |
44 'proto_runtime%': 'lite', | 41 'protoc': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)', |
45 'java_out_dir': '<(PRODUCT_DIR)/java_proto/<(_target_name)/src', | 42 'java_out_dir': '<(PRODUCT_DIR)/java_proto/<(_target_name)/src', |
46 'proto_in_dir%': '.', | 43 'proto_in_dir%': '.', |
47 'stamp_file': '<(java_out_dir).stamp', | 44 'stamp_file': '<(java_out_dir).stamp', |
48 'script': '<(DEPTH)/build/protoc_java.py', | 45 'script': '<(DEPTH)/build/protoc_java.py', |
49 | 46 |
50 # The rest of the variables here are for the java.gypi include. | 47 # The rest of the variables here are for the java.gypi include. |
51 'java_in_dir': '<(DEPTH)/build/android/empty', | 48 'java_in_dir': '<(DEPTH)/build/android/empty', |
52 'generated_src_dirs': ['<(java_out_dir)'], | 49 'generated_src_dirs': ['<(java_out_dir)'], |
53 # Adding the |stamp_file| to |additional_input_paths| makes the actions in | 50 # Adding the |stamp_file| to |additional_input_paths| makes the actions in |
54 # the include of java.gypi depend on the genproto_java action. | 51 # the include of java.gypi depend on the genproto_java action. |
55 'additional_input_paths': ['<(stamp_file)'], | 52 'additional_input_paths': ['<(stamp_file)'], |
56 }, | 53 }, |
57 'actions': [ | 54 'actions': [ |
58 { | 55 { |
59 'action_name': 'genproto_java', | 56 'action_name': 'genproto_java', |
60 'inputs': [ | 57 'inputs': [ |
61 '<(script)', | 58 '<(script)', |
62 '<(protoc)', | 59 '<(protoc)', |
63 '<@(_sources)', | 60 '<@(_sources)', |
64 ], | 61 ], |
65 # We do not know the names of the generated files, so we use a stamp. | 62 # We do not know the names of the generated files, so we use a stamp. |
66 'outputs': [ | 63 'outputs': [ |
67 '<(stamp_file)', | 64 '<(stamp_file)', |
68 ], | 65 ], |
69 'action': [ | 66 'action': [ |
70 '<(script)', | 67 '<(script)', |
71 '<(protoc)', | 68 '<(protoc)', |
72 '<(proto_in_dir)', | 69 '<(proto_in_dir)', |
73 '<(java_out_dir)', | 70 '<(java_out_dir)', |
74 '<(proto_runtime)', | |
75 '<(stamp_file)', | 71 '<(stamp_file)', |
76 '<@(_sources)', | 72 '<@(_sources)', |
77 ], | 73 ], |
78 'message': 'Generating <(proto_runtime) Java code from protobuf files in <
(proto_in_dir)', | 74 'message': 'Generating Java code from <(proto_in_dir)', |
79 }, | 75 }, |
80 ], | 76 ], |
81 'conditions': [ | 77 'dependencies': [ |
82 ['proto_runtime=="lite"', { | 78 '<(DEPTH)/third_party/protobuf/protobuf.gyp:protoc#host', |
83 'variables': { | 79 '<(DEPTH)/third_party/protobuf/protobuf.gyp:protobuf_lite_javalib', |
84 'protoc': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)
', | |
85 }, | |
86 'dependencies': [ | |
87 '<(DEPTH)/third_party/protobuf/protobuf.gyp:protoc#host', | |
88 '<(DEPTH)/third_party/protobuf/protobuf.gyp:protobuf_lite_javalib', | |
89 ], | |
90 }], | |
91 ['proto_runtime=="nano"', { | |
92 'variables': { | |
93 'protoc': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)android_protoc<(EXECUTABLE
_SUFFIX)', | |
94 }, | |
95 'dependencies': [ | |
96 '<(DEPTH)/third_party/android_protobuf/android_protobuf.gyp:android_prot
oc#host', | |
97 '<(DEPTH)/third_party/android_protobuf/android_protobuf.gyp:protobuf_nan
o_javalib', | |
98 ], | |
99 }], | |
100 ], | 80 ], |
101 'includes': [ 'java.gypi' ], | 81 'includes': [ 'java.gypi' ], |
102 } | 82 } |
OLD | NEW |