| { |
| 'target_defaults': { |
| 'variables': { |
| 'deps': [ |
| # system_api depends on protobuf (or protobuf-lite). It must appear |
| # before protobuf here or the linker flags won't be in the right |
| # order. |
| 'system_api', |
| 'protobuf-lite', |
| 'openssl', |
| 'libbrillo-<(libbase_ver)', |
| 'libchrome-<(libbase_ver)', |
| ], |
| }, |
| 'defines': [ |
| 'USE_TPM2=<(USE_tpm2)', |
| ], |
| }, |
| 'targets': [ |
| { |
| 'target_name': 'chaps-protos', |
| 'type': 'static_library', |
| # libchaps-protos.a is used by a shared_libary |
| # object, so we need to build it with '-fPIC' instead of '-fPIE'. |
| 'cflags!': ['-fPIE'], |
| 'cflags': ['-fPIC'], |
| 'variables': { |
| 'proto_in_dir': '.', |
| 'proto_out_dir': 'include/chaps/proto_bindings', |
| }, |
| 'sources': [ |
| '<(proto_in_dir)/attributes.proto', |
| ], |
| 'includes': ['../common-mk/protoc.gypi'], |
| }, |
| { |
| # This is meant only for internal binaries like unittests. All |
| # client programs should be using the shared libchaps library. |
| 'target_name': 'libchaps_static', |
| 'type': 'static_library', |
| 'dependencies': [ |
| 'chaps-protos', |
| ], |
| 'sources': [ |
| 'attributes.cc', |
| 'chaps.cc', |
| 'chaps_proxy.cc', |
| 'chaps_utility.cc', |
| 'dbus/dbus_proxy_wrapper.cc', |
| 'dbus/scoped_bus.cc', |
| 'isolate_chromeos.cc', |
| 'proto_conversion.cc', |
| 'token_manager_client.cc', |
| ], |
| }, |
| { |
| 'target_name': 'libchaps', |
| 'type': 'shared_library', |
| 'dependencies': [ |
| 'chaps-protos', |
| ], |
| 'sources': [ |
| 'attributes.cc', |
| 'chaps.cc', |
| 'chaps_proxy.cc', |
| 'chaps_utility.cc', |
| 'dbus/dbus_proxy_wrapper.cc', |
| 'dbus/scoped_bus.cc', |
| 'isolate_chromeos.cc', |
| 'proto_conversion.cc', |
| 'token_manager_client.cc', |
| ], |
| }, |
| { |
| 'target_name': 'chapsd', |
| 'type': 'executable', |
| 'dependencies': [ |
| 'chaps-protos', |
| 'libchaps_static', |
| ], |
| 'variables': { |
| 'deps': [ |
| 'libmetrics-<(libbase_ver)', |
| 'libminijail', |
| ], |
| }, |
| 'libraries': [ |
| '-ldl', |
| '-lleveldb', |
| '-lmemenv', |
| ], |
| 'sources': [ |
| 'chaps_adaptor.cc', |
| 'chaps_factory_impl.cc', |
| 'chaps_service.cc', |
| 'chapsd.cc', |
| 'object_impl.cc', |
| 'object_policy_cert.cc', |
| 'object_policy_common.cc', |
| 'object_policy_data.cc', |
| 'object_policy_key.cc', |
| 'object_policy_private_key.cc', |
| 'object_policy_public_key.cc', |
| 'object_policy_secret_key.cc', |
| 'object_pool_impl.cc', |
| 'object_store_impl.cc', |
| 'opencryptoki_importer.cc', |
| 'platform_globals_chromeos.cc', |
| 'proto_conversion.cc', |
| 'session_impl.cc', |
| 'slot_manager_impl.cc', |
| ], |
| 'conditions': [ |
| ['USE_tpm2 == 1', { |
| 'libraries': [ |
| '-ltrunks', |
| ], |
| 'sources': [ |
| 'tpm2_utility_impl.cc', |
| ], |
| }], |
| ['USE_tpm2 == 0', { |
| 'libraries': [ |
| '-ltspi', |
| ], |
| 'sources': [ |
| 'tpm_utility_impl.cc', |
| ], |
| }], |
| ], |
| }, |
| { |
| 'target_name': 'chaps_client', |
| 'type': 'executable', |
| 'dependencies': ['libchaps_static'], |
| 'sources': [ |
| 'chaps_client.cc', |
| ], |
| }, |
| { |
| 'target_name': 'p11_replay', |
| 'type': 'executable', |
| 'dependencies': ['libchaps'], |
| 'sources': [ |
| 'p11_replay.cc', |
| ], |
| }, |
| ], |
| 'conditions': [ |
| ['USE_test == 1', { |
| 'targets': [ |
| { |
| 'target_name': 'libchaps_test', |
| 'type': 'static_library', |
| 'dependencies': [ |
| 'chaps-protos', |
| 'libchaps_static', |
| ], |
| 'variables': { |
| 'exported_deps': [ |
| 'libchrome-test-<(libbase_ver)', |
| ], |
| 'deps': ['<@(exported_deps)'], |
| }, |
| 'all_dependent_settings': { |
| 'variables': { |
| 'deps': [ |
| '<@(exported_deps)', |
| ], |
| }, |
| }, |
| 'sources': [ |
| 'chaps_factory_mock.cc', |
| 'object_importer_mock.cc', |
| 'object_mock.cc', |
| 'object_policy_mock.cc', |
| 'object_pool_mock.cc', |
| 'object_store_mock.cc', |
| 'session_mock.cc', |
| 'slot_manager_mock.cc', |
| 'tpm_utility_mock.cc', |
| ], |
| }, |
| { |
| 'target_name': 'chaps_test', |
| 'type': 'executable', |
| 'dependencies': ['libchaps_static'], |
| 'includes': ['../common-mk/common_test.gypi'], |
| 'sources': [ |
| 'chaps_test.cc', |
| ], |
| }, |
| { |
| 'target_name': 'chaps_service_test', |
| 'type': 'executable', |
| 'dependencies': [ |
| 'libchaps_static', |
| 'libchaps_test', |
| ], |
| 'includes': ['../common-mk/common_test.gypi'], |
| 'sources': [ |
| 'chaps_service.cc', |
| 'chaps_service_test.cc', |
| ], |
| }, |
| { |
| 'target_name': 'dbus_test', |
| 'type': 'executable', |
| 'includes': ['../common-mk/common_test.gypi'], |
| 'dependencies': [ |
| 'libchaps_static', |
| '../common-mk/testrunner.gyp:testrunner', |
| ], |
| 'sources': [ |
| 'dbus/dbus_proxy_wrapper_test.cc', |
| 'dbus/scoped_bus_test.cc', |
| ], |
| }, |
| { |
| 'target_name': 'slot_manager_test', |
| 'type': 'executable', |
| 'dependencies': [ |
| 'libchaps_static', |
| 'libchaps_test', |
| ], |
| 'includes': ['../common-mk/common_test.gypi'], |
| 'sources': [ |
| 'slot_manager_impl.cc', |
| 'slot_manager_test.cc', |
| ], |
| }, |
| { |
| 'target_name': 'session_test', |
| 'type': 'executable', |
| 'dependencies': [ |
| 'libchaps_static', |
| 'libchaps_test', |
| ], |
| 'includes': ['../common-mk/common_test.gypi'], |
| 'sources': [ |
| 'session_impl.cc', |
| 'session_test.cc', |
| ], |
| }, |
| { |
| 'target_name': 'object_test', |
| 'type': 'executable', |
| 'dependencies': [ |
| 'libchaps_static', |
| 'libchaps_test', |
| ], |
| 'includes': ['../common-mk/common_test.gypi'], |
| 'sources': [ |
| 'object_impl.cc', |
| 'object_test.cc', |
| ], |
| }, |
| { |
| 'target_name': 'object_policy_test', |
| 'type': 'executable', |
| 'dependencies': [ |
| 'libchaps_static', |
| 'libchaps_test', |
| ], |
| 'includes': ['../common-mk/common_test.gypi'], |
| 'sources': [ |
| 'object_policy_cert.cc', |
| 'object_policy_common.cc', |
| 'object_policy_data.cc', |
| 'object_policy_key.cc', |
| 'object_policy_private_key.cc', |
| 'object_policy_public_key.cc', |
| 'object_policy_secret_key.cc', |
| 'object_policy_test.cc', |
| ], |
| }, |
| { |
| 'target_name': 'object_pool_test', |
| 'type': 'executable', |
| 'dependencies': [ |
| 'libchaps_static', |
| 'libchaps_test', |
| ], |
| 'includes': ['../common-mk/common_test.gypi'], |
| 'sources': [ |
| 'object_pool_impl.cc', |
| 'object_pool_test.cc', |
| ], |
| }, |
| { |
| 'target_name': 'object_store_test', |
| 'type': 'executable', |
| 'dependencies': [ |
| 'libchaps_static', |
| ], |
| 'variables': { |
| 'deps': [ |
| 'libmetrics-<(libbase_ver)', |
| ], |
| }, |
| 'libraries': [ |
| '-lleveldb', |
| '-lmemenv', |
| ], |
| 'includes': ['../common-mk/common_test.gypi'], |
| 'sources': [ |
| 'object_store_impl.cc', |
| 'object_store_test.cc', |
| ], |
| }, |
| { |
| 'target_name': 'opencryptoki_importer_test', |
| 'type': 'executable', |
| 'dependencies': [ |
| 'libchaps_static', |
| 'libchaps_test', |
| ], |
| 'variables': { |
| 'deps': [ |
| 'libmetrics-<(libbase_ver)', |
| ], |
| }, |
| 'includes': ['../common-mk/common_test.gypi'], |
| 'sources': [ |
| 'opencryptoki_importer.cc', |
| 'opencryptoki_importer_test.cc', |
| ], |
| }, |
| { |
| 'target_name': 'isolate_login_client_test', |
| 'type': 'executable', |
| 'dependencies': [ |
| 'libchaps_static', |
| 'libchaps_test', |
| ], |
| 'variables': { |
| 'deps': [ |
| 'libmetrics-<(libbase_ver)', |
| ], |
| }, |
| 'includes': ['../common-mk/common_test.gypi'], |
| 'sources': [ |
| 'isolate_login_client.cc', |
| 'isolate_login_client_test.cc', |
| 'token_file_manager_chromeos.cc', |
| ], |
| }, |
| # Live Tests |
| # Note: These tests require a live system with gtest and gmock |
| # installed. These cannot be run without a real TPM and cannot be |
| # run with autotest. These tests do not need to be run regularly |
| # but may be useful in the future and so have been kept around. |
| { |
| 'target_name': 'chapsd_test', |
| 'type': 'executable', |
| 'dependencies': [ |
| 'libchaps_static', |
| ], |
| 'libraries': [ |
| '-ldl', |
| ], |
| 'includes': ['../common-mk/common_test.gypi'], |
| 'sources': [ |
| 'chapsd_test.cc', |
| 'platform_globals_chromeos.cc', |
| ], |
| }, |
| { |
| 'target_name': 'tpm_utility_test', |
| 'type': 'executable', |
| 'dependencies': [ |
| 'libchaps_static', |
| 'libchaps_test', |
| ], |
| 'includes' : ['../common-mk/common_test.gypi'], |
| 'sources': ['tpm_utility_test.cc',], |
| 'conditions': [ |
| ['USE_tpm2 == 1', { |
| 'libraries': [ |
| '-ltrunks', |
| ], |
| 'sources': [ |
| 'tpm2_utility_impl.cc', |
| ], |
| }], |
| ['USE_tpm2 == 0', { |
| 'libraries': [ |
| '-ltspi', |
| ], |
| 'sources': [ |
| 'tpm_utility_impl.cc', |
| ], |
| }], |
| ], |
| }, |
| ], |
| # Conditional Unit Tests |
| # Unit tests here are gated by conditionals. Since we cannot add |
| # conditionals in the middle of a target list, we added it at the end. |
| 'conditions': [ |
| ['USE_tpm2 == 1', { |
| 'targets': [ |
| { |
| 'target_name': 'tpm2_utility_test', |
| 'type': 'executable', |
| 'dependencies': [ |
| 'libchaps_static', |
| 'libchaps_test', |
| ], |
| 'libraries': [ |
| '-ltrunks', |
| '-ltrunks_test', |
| ], |
| 'includes': ['../common-mk/common_test.gypi'], |
| 'sources': [ |
| 'tpm2_utility_impl.cc', |
| 'tpm2_utility_test.cc', |
| ], |
| }, |
| ], |
| }], |
| ], |
| }], |
| ], |
| } |