207 lines
6.3 KiB
Python
207 lines
6.3 KiB
Python
# Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary
|
|
#source code may only be used and distributed under the Widevine Master License
|
|
#Agreement.
|
|
#
|
|
# Refer to the distribution package's integration guide
|
|
# (Widevine_CE_CDM_IntegrationGuide_x.x.x.pdf) for information about
|
|
# setting up your system, performing the build, and using/testing
|
|
# the build targets.
|
|
|
|
{
|
|
'variables': {
|
|
# Override this to indicate what CPU architecture's assembly-language files
|
|
# should be used when building assembly language files. Or, set it to
|
|
# "none" to turn off the use of assembly language. The default is "none" for
|
|
# compatibility, but we strongly recommend overriding this value to
|
|
# improve performance. Turning it off or leaving it turned off is not
|
|
# recommended unless your CPU architecture is unsupported or you are using
|
|
# a tool that does not play nice with assembly language, like Address
|
|
# Sanitizer.
|
|
#
|
|
# Valid values are:
|
|
# * x86
|
|
# * x86-64
|
|
# * arm
|
|
# * arm64
|
|
# * ppc64
|
|
# * none
|
|
'asm_target_arch%': 'none',
|
|
|
|
# When building on Windows, we have to use the NASM assembler. By default
|
|
# we disable assembly on Windows since this is usually not installed. You
|
|
# can override it with these variables.
|
|
'has_nasm%': 'false',
|
|
'nasm_path%': 'nasm.exe',
|
|
|
|
# Override this only if you have an alternative privacy crypto
|
|
# implementation other than the default. This should nearly always be left
|
|
# alone. If set to 'dummy', the CDM will compile, but privacy mode in the
|
|
# CDM will fail.
|
|
'privacy_crypto_impl%': 'boringssl',
|
|
'boringssl_dependency%': '../third_party/boringssl/boringssl.gyp:crypto',
|
|
|
|
# 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.
|
|
'protobuf_config%': 'source',
|
|
'protobuf_source%': '../third_party/protobuf',
|
|
'protoc_host_target%': 'dummy',
|
|
}, # variables
|
|
'includes': ['core.gypi'], # Get list of core source files.
|
|
'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,
|
|
'includes': ['../third_party/protoc.gypi'],
|
|
'sources': [
|
|
'../core/src/license_protocol.proto',
|
|
],
|
|
'variables': {
|
|
'proto_in_dir': '../core/src',
|
|
},
|
|
},
|
|
{
|
|
'target_name': 'device_files',
|
|
'type': 'static_library',
|
|
'standalone_static_library': 1,
|
|
'includes': ['../third_party/protoc.gypi'],
|
|
'sources': ['../core/src/device_files.proto',],
|
|
'variables': {
|
|
'proto_in_dir': '../core/src',
|
|
},
|
|
},
|
|
{
|
|
'target_name': 'metrics_proto',
|
|
'type': 'static_library',
|
|
'standalone_static_library': 1,
|
|
'includes': ['../third_party/protoc.gypi'],
|
|
'sources': ['../metrics/src/metrics.proto',],
|
|
'variables': {
|
|
'proto_in_dir': '../metrics/src',
|
|
},
|
|
},
|
|
{
|
|
'target_name': 'widevine_cdm_core',
|
|
'type': 'static_library',
|
|
'standalone_static_library': 1,
|
|
'dependencies': [
|
|
'device_files',
|
|
'license_protocol',
|
|
'metrics_proto',
|
|
],
|
|
'include_dirs': [
|
|
'../core/include',
|
|
'../metrics/include',
|
|
'../oemcrypto/include',
|
|
'../third_party/jsmn',
|
|
'../util/include',
|
|
],
|
|
'defines': [
|
|
'CORE_UTIL_IMPLEMENTATION',
|
|
],
|
|
'direct_dependent_settings': {
|
|
'include_dirs': [
|
|
'../core/include',
|
|
'../metrics/include',
|
|
'../oemcrypto/include',
|
|
'../util/include',
|
|
],
|
|
},
|
|
'sources': [
|
|
'<@(wvcdm_sources)',
|
|
'../core/src/oemcrypto_adapter_static.cpp',
|
|
'../core/src/privacy_crypto_<(privacy_crypto_impl).cpp',
|
|
'../third_party/jsmn/jsmn.h',
|
|
'../third_party/jsmn/jsmn.c',
|
|
],
|
|
'conditions': [
|
|
['privacy_crypto_impl=="boringssl"', {
|
|
'dependencies': [
|
|
'<(boringssl_dependency)',
|
|
], # dependencies
|
|
}], # privacy_crypto_impl=="boringssl"
|
|
['privacy_crypto_impl=="apple"', {
|
|
'dependencies': [
|
|
'<(boringssl_dependency)',
|
|
], # dependencies
|
|
}], # privacy_crypto_impl=="apple"
|
|
], # conditions
|
|
}, # widevine_cdm_core target
|
|
{
|
|
'target_name': 'widevine_ce_cdm_static',
|
|
'type': 'static_library',
|
|
'standalone_static_library': 1,
|
|
'hard_dependency': 1,
|
|
'dependencies': [
|
|
'widevine_cdm_core',
|
|
'device_files',
|
|
'license_protocol',
|
|
'metrics_proto',
|
|
],
|
|
# 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',
|
|
'metrics_proto',
|
|
],
|
|
'defines': [
|
|
'CDM_IMPLEMENTATION',
|
|
'CORE_UTIL_IMPLEMENTATION',
|
|
],
|
|
'include_dirs': [
|
|
'include',
|
|
],
|
|
'direct_dependent_settings': {
|
|
'include_dirs': [
|
|
'include',
|
|
],
|
|
},
|
|
'sources': [
|
|
'include/cdm.h',
|
|
'include/cdm_version.h',
|
|
'include/properties_ce.h',
|
|
'src/cdm.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',
|
|
},
|
|
],
|
|
}
|