# 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', }, ], }