Index: third_party/cacheinvalidation/cacheinvalidation.gyp |
=================================================================== |
--- third_party/cacheinvalidation/cacheinvalidation.gyp (revision 123895) |
+++ third_party/cacheinvalidation/cacheinvalidation.gyp (working copy) |
@@ -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. |