diff options
author | rsleevi@chromium.org <rsleevi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-28 05:25:06 +0000 |
---|---|---|
committer | rsleevi@chromium.org <rsleevi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-28 05:25:06 +0000 |
commit | 3354c312c47227dd6529abae0b755afd3fe0fabb (patch) | |
tree | 24207f9301d9ff3fc97fff397baf3a3a8ff3b885 /third_party/cacheinvalidation/cacheinvalidation.gyp | |
parent | a263b0455b691f913c9d246c20c4970daf465271 (diff) | |
download | chromium_src-3354c312c47227dd6529abae0b755afd3fe0fabb.zip chromium_src-3354c312c47227dd6529abae0b755afd3fe0fabb.tar.gz chromium_src-3354c312c47227dd6529abae0b755afd3fe0fabb.tar.bz2 |
Revert 123894 - Remove hand-rolled protobufs generation; enable rel paths in protoc.gypi
protoc.gypi now accepts a relative path to handle the way that
protoc_out_dir is applied to build the generated path.
Remove the 'cacheinvalidation_proto_cpp' target and instead generate a
static_library to begin with. Simplify all steps by removing the actions
and including the protoc.gypi file.
BUG=113339
Review URL: http://codereview.chromium.org/9378041
TBR=kushi.p@gmail.com
Review URL: https://chromiumcodereview.appspot.com/9480022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@123896 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'third_party/cacheinvalidation/cacheinvalidation.gyp')
-rw-r--r-- | third_party/cacheinvalidation/cacheinvalidation.gyp | 86 |
1 files changed, 72 insertions, 14 deletions
diff --git a/third_party/cacheinvalidation/cacheinvalidation.gyp b/third_party/cacheinvalidation/cacheinvalidation.gyp index 061c4cc..dce6f6e 100644 --- a/third_party/cacheinvalidation/cacheinvalidation.gyp +++ b/third_party/cacheinvalidation/cacheinvalidation.gyp @@ -15,13 +15,17 @@ # we don't need this variable. # TODO(ghc): Remove v2/ dir and move all files up a level. 'proto_dir_relpath': 'google/cacheinvalidation/v2', + # Where files generated from proto files are put. + 'protoc_out_dir': '<(SHARED_INTERMEDIATE_DIR)/protoc_out', + # The path to the protoc executable. + 'protoc': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)', }, 'targets': [ # The rule/action to generate files from the cacheinvalidation proto - # files and package them into a static library. + # files. { 'target_name': 'cacheinvalidation_proto', - 'type': 'static_library', + 'type': 'none', 'sources': [ '<(proto_dir_root)/<(proto_dir_relpath)/client.proto', '<(proto_dir_root)/<(proto_dir_relpath)/client_gateway.proto', @@ -29,18 +33,68 @@ '<(proto_dir_root)/<(proto_dir_relpath)/client_test_internal.proto', '<(proto_dir_root)/<(proto_dir_relpath)/types.proto', ], - 'variables': { - 'proto_in_dir': '<(proto_dir_root)', - 'proto_out_dir': '', - 'proto_relpath': '<(proto_dir_relpath)/', - # This is necessary because these protos import with - # qualified paths, such as: - # #import "google/cacheinvalidation/v2/client_protocol.proto" - # rather than the more common form of: - # #import "client_protocol.proto" - # NOTE: The trailing slash is required, see build/protoc.gypi + # TODO(akalin): This block was copied from the sync_proto target + # from chrome.gyp. Decomp the shared blocks out somehow. + 'rules': [ + { + 'rule_name': 'genproto', + 'extension': 'proto', + 'inputs': [ + '<(protoc)', + ], + 'outputs': [ + '<(protoc_out_dir)/<(proto_dir_relpath)/<(RULE_INPUT_ROOT).pb.h', + '<(protoc_out_dir)/<(proto_dir_relpath)/<(RULE_INPUT_ROOT).pb.cc', + ], + 'action': [ + '<(protoc)', + '--proto_path=<(proto_dir_root)', + # This path needs to be prefixed by proto_path, so we can't + # use RULE_INPUT_PATH (which is an absolute path). + '<(proto_dir_root)/<(proto_dir_relpath)/<(RULE_INPUT_NAME)', + '--cpp_out=<(protoc_out_dir)', + ], + 'message': 'Generating C++ code from <(RULE_INPUT_PATH)', + }, + ], + 'dependencies': [ + '../../third_party/protobuf/protobuf.gyp:protoc#host', + ], + }, + # The C++ files generated from the cache invalidation protocol buffers. + { + 'target_name': 'cacheinvalidation_proto_cpp', + 'type': 'static_library', + 'sources': [ + '<(protoc_out_dir)/<(proto_dir_relpath)/client.pb.h', + '<(protoc_out_dir)/<(proto_dir_relpath)/client.pb.cc', + '<(protoc_out_dir)/<(proto_dir_relpath)/client_gateway.pb.h', + '<(protoc_out_dir)/<(proto_dir_relpath)/client_gateway.pb.cc', + '<(protoc_out_dir)/<(proto_dir_relpath)/client_protocol.pb.h', + '<(protoc_out_dir)/<(proto_dir_relpath)/client_protocol.pb.cc', + '<(protoc_out_dir)/<(proto_dir_relpath)/client_test_internal.pb.h', + '<(protoc_out_dir)/<(proto_dir_relpath)/client_test_internal.pb.cc', + '<(protoc_out_dir)/<(proto_dir_relpath)/types.pb.h', + '<(protoc_out_dir)/<(proto_dir_relpath)/types.pb.cc', + ], + 'dependencies': [ + '../../third_party/protobuf/protobuf.gyp:protobuf_lite', + 'cacheinvalidation_proto', + ], + 'include_dirs': [ + '<(protoc_out_dir)', + ], + 'direct_dependent_settings': { + 'include_dirs': [ + '<(protoc_out_dir)', + ], }, - 'includes': [ '../../build/protoc.gypi' ], + 'export_dependent_settings': [ + '../../third_party/protobuf/protobuf.gyp:protobuf_lite', + ], + # This target exports a hard dependency because it contains generated + # header files. + 'hard_dependency': 1, }, # The main cache invalidation library. External clients should depend # only on this. @@ -116,7 +170,11 @@ 'dependencies': [ '../../base/base.gyp:base', 'cacheinvalidation_proto', + 'cacheinvalidation_proto_cpp', ], + # This target exports a hard dependency because its include files + # include generated header files from cache_invalidation_proto_cpp. + 'hard_dependency': 1, 'direct_dependent_settings': { 'include_dirs': [ './overrides', @@ -125,7 +183,7 @@ }, 'export_dependent_settings': [ '../../base/base.gyp:base', - 'cacheinvalidation_proto', + 'cacheinvalidation_proto_cpp', ], }, # Unittests for the cache invalidation library. |