blob: 4e0ae0234c86e24aacf72ec6d734dbecb5d163af [file] [log] [blame]
# 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',
],
},
],
}