245 lines
7.7 KiB
Python
245 lines
7.7 KiB
Python
# Copyright 2015 Google Inc. All Rights Reserved.
|
|
#
|
|
# Refer to the distribution package's integration guide
|
|
# (Widevine_CE_CDM_IntegrationGuide_v3.2.x.pdf) for information about
|
|
# setting up your system, performing the build, and using/testing
|
|
# the build targets.
|
|
|
|
{
|
|
'variables': {
|
|
# Override if you intend to link against a different OEMCrypto API version.
|
|
'oemcrypto_version%': 12,
|
|
|
|
# Override if you can't depend on OpenSSL for privacy features.
|
|
# If set to 'dummy', privacy mode in the CDM will fail.
|
|
'privacy_crypto_impl%': 'openssl',
|
|
|
|
# There are two openssl configurations:
|
|
#
|
|
# 1) openssl_config == 'system'
|
|
# Use the openssl headers found in the sysroot and link the system library.
|
|
#
|
|
# 2) openssl_config == 'target'
|
|
# Use the openssl implementation in an existing GYP target.
|
|
# Specify the openssl target in openssl_target. This target should forward
|
|
# the include path to its headers to its dependents.
|
|
'openssl_config%': 'system',
|
|
'openssl_target%': '',
|
|
|
|
# There are three protobuf configurations:
|
|
#
|
|
# 1) protobuf_config == 'system'
|
|
# Use a system-wide installation of protobuf.
|
|
# Specify the protobuf library in protobuf_lib.
|
|
# Specify the path to protoc in protoc_bin.
|
|
#
|
|
# 2) protobuf_config == 'target'
|
|
# Use an existing protobuf gyp target from your project.
|
|
# Specify the protobuf gyp file and target in protobuf_lib_target.
|
|
# Specify the protoc gyp file and target in protoc_host_target.
|
|
# Specify the path to protoc in protoc_bin.
|
|
#
|
|
# 3) protobuf_config == 'source' (default)
|
|
# Build protobuf and protoc from source.
|
|
# Specify the path to the protobuf source in protobuf_source.
|
|
# Make sure that a valid config.h for your target is in the source tree.
|
|
'protobuf_config%': 'source',
|
|
'protobuf_source%': '../third_party/protobuf',
|
|
'protoc_host_target%': 'dummy',
|
|
}, # variables
|
|
'conditions': [
|
|
['protobuf_config=="source"', {
|
|
# Include protobuf targets used by protobuf_config=='source'
|
|
'includes': ['../third_party/protobuf.gypi'],
|
|
}],
|
|
], # conditions
|
|
'targets': [
|
|
{
|
|
'target_name': 'license_protocol',
|
|
'type': 'static_library',
|
|
'standalone_static_library': 1,
|
|
'sources': [
|
|
'../core/src/license_protocol.proto',
|
|
],
|
|
'variables': {
|
|
'proto_in_dir': '../core/src',
|
|
},
|
|
'includes': ['../third_party/protoc.gypi'],
|
|
},
|
|
{
|
|
'target_name': 'device_files',
|
|
'type': 'static_library',
|
|
'standalone_static_library': 1,
|
|
'sources': ['../core/src/device_files.proto',],
|
|
'variables': {
|
|
'proto_in_dir': '../core/src',
|
|
},
|
|
'includes': ['../third_party/protoc.gypi'],
|
|
},
|
|
{
|
|
'target_name': 'widevine_cdm_core',
|
|
'type': 'static_library',
|
|
'standalone_static_library': 1,
|
|
'dependencies': [
|
|
'device_files',
|
|
'license_protocol',
|
|
],
|
|
'include_dirs': [
|
|
'../core/include',
|
|
'../oemcrypto/include',
|
|
'../third_party/jsmn',
|
|
],
|
|
'direct_dependent_settings': {
|
|
'include_dirs': [
|
|
'../core/include',
|
|
'../oemcrypto/include',
|
|
],
|
|
},
|
|
'sources': [
|
|
'../core/include/buffer_reader.h',
|
|
'../core/include/cdm_client_property_set.h',
|
|
'../core/include/cdm_engine.h',
|
|
'../core/include/cdm_session.h',
|
|
'../core/include/cdm_session_map.h',
|
|
'../core/include/certificate_provisioning.h',
|
|
'../core/include/clock.h',
|
|
'../core/include/crypto_key.h',
|
|
'../core/include/crypto_session.h',
|
|
'../core/include/device_files.h',
|
|
'../core/include/file_store.h',
|
|
'../core/include/initialization_data.h',
|
|
'../core/include/license_key_status.h',
|
|
'../core/include/license.h',
|
|
'../core/include/lock.h',
|
|
'../core/include/log.h',
|
|
'../core/include/oemcrypto_adapter.h',
|
|
'../core/include/policy_engine.h',
|
|
'../core/include/privacy_crypto.h',
|
|
'../core/include/properties.h',
|
|
'../core/include/scoped_ptr.h',
|
|
'../core/include/service_certificate.h',
|
|
'../core/include/string_conversions.h',
|
|
'../core/include/wv_cdm_constants.h',
|
|
'../core/include/wv_cdm_event_listener.h',
|
|
'../core/include/wv_cdm_types.h',
|
|
'../core/src/buffer_reader.cpp',
|
|
'../core/src/cdm_engine.cpp',
|
|
'../core/src/cdm_session.cpp',
|
|
'../core/src/cdm_session_map.cpp',
|
|
'../core/src/certificate_provisioning.cpp',
|
|
'../core/src/crypto_session.cpp',
|
|
'../core/src/device_files.cpp',
|
|
'../core/src/initialization_data.cpp',
|
|
'../core/src/license_key_status.cpp',
|
|
'../core/src/license.cpp',
|
|
'../core/src/oemcrypto_adapter_static.cpp',
|
|
'../core/src/policy_engine.cpp',
|
|
'../core/src/privacy_crypto_<(privacy_crypto_impl).cpp',
|
|
'../core/src/properties.cpp',
|
|
'../core/src/service_certificate.cpp',
|
|
'../core/src/string_conversions.cpp',
|
|
'../third_party/jsmn/jsmn.h',
|
|
'../third_party/jsmn/jsmn.c',
|
|
],
|
|
'conditions': [
|
|
['oemcrypto_version < 9', {
|
|
'sources': [
|
|
# Include APIs introduced in v9.
|
|
'../core/src/oemcrypto_adapter_static_v9.cpp',
|
|
],
|
|
}],
|
|
['oemcrypto_version < 10', {
|
|
'sources': [
|
|
# Include APIs introduced in v10.
|
|
'../core/src/oemcrypto_adapter_static_v10.cpp',
|
|
],
|
|
}],
|
|
['oemcrypto_version < 11', {
|
|
'sources': [
|
|
# Include APIs introduced in v11.
|
|
'../core/src/oemcrypto_adapter_static_v11.cpp',
|
|
],
|
|
}],
|
|
['oemcrypto_version < 12', {
|
|
'sources': [
|
|
# Include APIs introduced in v12.
|
|
'../core/src/oemcrypto_adapter_static_v12.cpp',
|
|
],
|
|
}],
|
|
['privacy_crypto_impl=="openssl"', {
|
|
'conditions': [
|
|
['openssl_config == "target"', {
|
|
'dependencies': [
|
|
'<(openssl_target)',
|
|
],
|
|
}, {
|
|
# openssl_config == "system"
|
|
'link_settings': {
|
|
'libraries': [
|
|
'-lcrypto',
|
|
],
|
|
},
|
|
}],
|
|
], # conditions
|
|
}], # privacy_crypto_impl=="openssl"
|
|
], # conditions
|
|
}, # widevine_cdm_core target
|
|
{
|
|
'target_name': 'widevine_ce_cdm_static',
|
|
'type': 'static_library',
|
|
'standalone_static_library': 1,
|
|
'dependencies': [
|
|
'widevine_cdm_core',
|
|
'device_files',
|
|
'license_protocol',
|
|
],
|
|
# Without this, library deps do not propagate from the protocol targets
|
|
# up to the shared lib or executable above.
|
|
'export_dependent_settings': [
|
|
'device_files',
|
|
'license_protocol',
|
|
],
|
|
'defines': ['CDM_IMPLEMENTATION'],
|
|
'include_dirs': [
|
|
'include',
|
|
],
|
|
'direct_dependent_settings': {
|
|
'include_dirs': [
|
|
'include',
|
|
],
|
|
},
|
|
'link_settings': {
|
|
'libraries': [
|
|
'-lpthread',
|
|
],
|
|
},
|
|
'sources': [
|
|
'include/cdm.h',
|
|
'include/cdm_version.h',
|
|
'include/override.h',
|
|
'include/properties_ce.h',
|
|
'src/cdm.cpp',
|
|
'src/lock.cpp',
|
|
'src/log.cpp',
|
|
'src/properties_ce.cpp',
|
|
],
|
|
}, # widevine_cdm_static target
|
|
{
|
|
'target_name': 'widevine_ce_cdm_shared',
|
|
'type': 'shared_library',
|
|
'dependencies': [
|
|
'widevine_ce_cdm_static',
|
|
],
|
|
'direct_dependent_settings': {
|
|
'include_dirs': [
|
|
'include',
|
|
],
|
|
},
|
|
},
|
|
{
|
|
'target_name': 'dummy',
|
|
'type': 'none',
|
|
},
|
|
],
|
|
}
|