# Copyright (c) 2011 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. { 'variables': { # This library should build cleanly with the extra warnings turned on # for Chromium. 'chromium_code': 1, # The root directory for the proto files. 'proto_dir_root': 'files/src', # The relative path of the cacheinvalidation proto files from # proto_dir_root. # TODO(akalin): Add a RULE_INPUT_DIR predefined variable to gyp so # 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. { 'target_name': 'cacheinvalidation_proto', 'type': 'none', 'sources': [ '<(proto_dir_root)/<(proto_dir_relpath)/client.proto', '<(proto_dir_root)/<(proto_dir_relpath)/client_protocol.proto', '<(proto_dir_root)/<(proto_dir_relpath)/client_test_internal.proto', '<(proto_dir_root)/<(proto_dir_relpath)/types.proto', ], # 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_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)', ], }, '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. { 'target_name': 'cacheinvalidation', 'type': 'static_library', 'sources': [ 'overrides/google/cacheinvalidation/callback.h', 'overrides/google/cacheinvalidation/compiler-specific.h', 'overrides/google/cacheinvalidation/gmock.h', 'overrides/google/cacheinvalidation/googletest.h', 'overrides/google/cacheinvalidation/v2/logging.h', 'overrides/google/cacheinvalidation/md5.h', 'overrides/google/cacheinvalidation/v2/mutex.h', 'overrides/google/cacheinvalidation/random.h', 'overrides/google/cacheinvalidation/v2/scoped_ptr.h', 'overrides/google/cacheinvalidation/stl-namespace.h', 'overrides/google/cacheinvalidation/v2/string_util.h', 'overrides/google/cacheinvalidation/v2/time.h', 'files/src/google/cacheinvalidation/v2/checking-invalidation-listener.cc', 'files/src/google/cacheinvalidation/v2/checking-invalidation-listener.h', 'files/src/google/cacheinvalidation/v2/client-protocol-namespace-fix.h', 'files/src/google/cacheinvalidation/v2/constants.h', 'files/src/google/cacheinvalidation/v2/constants.cc', 'files/src/google/cacheinvalidation/v2/digest-function.h', 'files/src/google/cacheinvalidation/v2/digest-store.h', 'files/src/google/cacheinvalidation/v2/exponential-backoff-delay-generator.h', 'files/src/google/cacheinvalidation/v2/exponential-backoff-delay-generator.cc', 'files/src/google/cacheinvalidation/v2/invalidation-client-impl.cc', 'files/src/google/cacheinvalidation/v2/invalidation-client-impl.h', 'files/src/google/cacheinvalidation/v2/invalidation-client.h', 'files/src/google/cacheinvalidation/v2/invalidation-client-util.h', 'files/src/google/cacheinvalidation/v2/invalidation-listener.h', 'files/src/google/cacheinvalidation/v2/log-macro.h', 'files/src/google/cacheinvalidation/v2/logging.h', 'files/src/google/cacheinvalidation/v2/mutex.h', 'files/src/google/cacheinvalidation/v2/object-id-digest-utils.cc', 'files/src/google/cacheinvalidation/v2/object-id-digest-utils.h', 'files/src/google/cacheinvalidation/v2/operation-scheduler.cc', 'files/src/google/cacheinvalidation/v2/operation-scheduler.h', 'files/src/google/cacheinvalidation/v2/persistence-utils.cc', 'files/src/google/cacheinvalidation/v2/persistence-utils.h', 'files/src/google/cacheinvalidation/v2/proto-converter.cc', 'files/src/google/cacheinvalidation/v2/proto-converter.h', 'files/src/google/cacheinvalidation/v2/proto-helpers.h', 'files/src/google/cacheinvalidation/v2/proto-helpers.cc', 'files/src/google/cacheinvalidation/v2/protocol-handler.cc', 'files/src/google/cacheinvalidation/v2/protocol-handler.h', 'files/src/google/cacheinvalidation/v2/registration-manager.cc', 'files/src/google/cacheinvalidation/v2/registration-manager.h', 'files/src/google/cacheinvalidation/v2/run-state.h', 'files/src/google/cacheinvalidation/v2/sha1-digest-function.h', 'files/src/google/cacheinvalidation/v2/simple-registration-store.cc', 'files/src/google/cacheinvalidation/v2/simple-registration-store.h', 'files/src/google/cacheinvalidation/v2/smearer.h', 'files/src/google/cacheinvalidation/v2/statistics.cc', 'files/src/google/cacheinvalidation/v2/statistics.h', 'files/src/google/cacheinvalidation/v2/string_util.h', 'files/src/google/cacheinvalidation/v2/system-resources.h', 'files/src/google/cacheinvalidation/v2/throttle.cc', 'files/src/google/cacheinvalidation/v2/throttle.h', 'files/src/google/cacheinvalidation/v2/ticl-message-validator.h', 'files/src/google/cacheinvalidation/v2/ticl-message-validator.cc', 'files/src/google/cacheinvalidation/v2/time.h', 'files/src/google/cacheinvalidation/v2/types.h', ], 'include_dirs': [ './overrides', './files/src', ], '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', './files/src', ], }, 'export_dependent_settings': [ '../../base/base.gyp:base', 'cacheinvalidation_proto_cpp', ], }, # Unittests for the cache invalidation library. # TODO(ghc): Write native tests and include them here. { 'target_name': 'cacheinvalidation_unittests', 'type': 'executable', 'sources': [ '../../base/test/run_all_unittests.cc', 'files/src/google/cacheinvalidation/v2/test/deterministic-scheduler.h', 'files/src/google/cacheinvalidation/v2/test/throttle_test.cc', ], 'dependencies': [ '../../base/base.gyp:base', # Needed by run_all_unittests.cc. '../../base/base.gyp:test_support_base', '../../testing/gmock.gyp:gmock', '../../testing/gtest.gyp:gtest', 'cacheinvalidation', ], }, ], }