299 lines
9.6 KiB
Python
299 lines
9.6 KiB
Python
# Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary
|
|
# source code may only be used and distributed under the Widevine License
|
|
# Agreement.
|
|
#
|
|
# Refer to the distribution package's integration guide for information about
|
|
# setting up your system, performing the build, and using/testing the build
|
|
# targets.
|
|
|
|
{
|
|
'includes': [
|
|
'platform_properties.gypi',
|
|
'core.gypi',
|
|
'util.gypi',
|
|
], # Get list of core source files.
|
|
'variables': {
|
|
'has_dual_key%': 'false',
|
|
'embedded_cert%': '',
|
|
},
|
|
'targets': [
|
|
{
|
|
'toolsets' : [ 'target' ],
|
|
'target_name': 'license_protocol',
|
|
'type': 'static_library',
|
|
'standalone_static_library': 1,
|
|
'hard_dependency': 1,
|
|
'includes': ['../third_party/protoc.gypi'],
|
|
'sources': [
|
|
'../core/src/license_protocol.proto',
|
|
],
|
|
'variables': {
|
|
'proto_in_dir': '../core/src',
|
|
},
|
|
},
|
|
{
|
|
'toolsets' : [ 'target' ],
|
|
'target_name': 'device_files',
|
|
'type': 'static_library',
|
|
'standalone_static_library': 1,
|
|
'hard_dependency': 1,
|
|
'includes': ['../third_party/protoc.gypi'],
|
|
'sources': ['../core/src/device_files.proto',],
|
|
'variables': {
|
|
'proto_in_dir': '../core/src',
|
|
},
|
|
},
|
|
{
|
|
'toolsets' : [ 'target' ],
|
|
'target_name': 'metrics_proto',
|
|
'type': 'static_library',
|
|
'standalone_static_library': 1,
|
|
'hard_dependency': 1,
|
|
'includes': ['../third_party/protoc.gypi'],
|
|
'sources': ['../metrics/src/wv_metrics.proto',],
|
|
'variables': {
|
|
'proto_in_dir': '../metrics/src',
|
|
},
|
|
},
|
|
{
|
|
'toolsets' : [ 'target' ],
|
|
'target_name': 'widevine_utils',
|
|
'type': 'static_library',
|
|
'standalone_static_library': 1,
|
|
'hard_dependency': 1,
|
|
'include_dirs': [
|
|
'../util/include',
|
|
],
|
|
'sources': [ '<@(wvutil_sources)'],
|
|
},
|
|
{
|
|
'toolsets' : [ 'target' ],
|
|
'target_name': 'widevine_cdm_core',
|
|
'type': 'static_library',
|
|
'standalone_static_library': 1,
|
|
'hard_dependency': 1,
|
|
'dependencies': [
|
|
'device_files',
|
|
'license_protocol',
|
|
'metrics_proto',
|
|
'widevine_utils',
|
|
],
|
|
'include_dirs': [
|
|
'../core/include',
|
|
'../metrics/include',
|
|
'../oemcrypto/include',
|
|
'../oemcrypto/odk/include',
|
|
'../third_party/jsmn',
|
|
'../util/include',
|
|
],
|
|
'direct_dependent_settings': {
|
|
'include_dirs': [
|
|
'../core/include',
|
|
'../metrics/include',
|
|
'../oemcrypto/include',
|
|
'../util/include',
|
|
],
|
|
},
|
|
'sources': [
|
|
'<@(wvcdm_sources)',
|
|
'../third_party/jsmn/jsmn.h',
|
|
'../third_party/jsmn/jsmn.c',
|
|
],
|
|
'includes': [ '../util/libcrypto_dependency.gypi' ],
|
|
'conditions': [
|
|
['client_info_source=="compiled"', {
|
|
'conditions': [
|
|
['client_company_name=="" or " | " in client_company_name or "%" in client_company_name', {
|
|
'sources': [ 'invalid_client_company_name.c' ],
|
|
}],
|
|
['client_model_name=="" or " | " in client_model_name or "%" in client_model_name', {
|
|
'sources': [ 'invalid_client_model_name.c' ],
|
|
}],
|
|
# year may be a number, so use __str__ to convert to string. Can't use
|
|
# str() since we can't use global functions.
|
|
['client_model_year=="" or " | " in client_model_year.__str__() or "%" in client_model_year.__str__()', {
|
|
'sources': [ 'invalid_client_model_year.c' ],
|
|
}],
|
|
['client_product_name=="" or " | " in client_product_name or "%" in client_product_name', {
|
|
'sources': [ 'invalid_client_product_name.c' ],
|
|
}],
|
|
['client_device_name=="" or " | " in client_device_name or "%" in client_device_name', {
|
|
'sources': [ 'invalid_client_device_name.c' ],
|
|
}],
|
|
['client_arch_name=="" or " | " in client_arch_name or "%" in client_arch_name', {
|
|
'sources': [ 'invalid_client_arch_name.c' ],
|
|
}],
|
|
['client_platform=="" or " | " in client_platform or "%" in client_platform', {
|
|
'sources': [ 'invalid_client_platform.c' ],
|
|
}],
|
|
['client_form_factor=="" or " | " in client_form_factor or "%" in client_form_factor', {
|
|
'sources': [ 'invalid_client_form_factor.c' ],
|
|
}],
|
|
['client_version=="" or " | " in client_version or "%" in client_version', {
|
|
'sources': [ 'invalid_client_version.c' ],
|
|
}],
|
|
],
|
|
}],
|
|
|
|
['privacy_crypto_impl=="boringssl" or privacy_crypto_impl=="openssl"', {
|
|
'sources': [
|
|
'../core/src/privacy_crypto_boringssl.cpp',
|
|
],
|
|
}, { # else
|
|
'sources': [
|
|
'../core/src/privacy_crypto_<(privacy_crypto_impl).cpp',
|
|
],
|
|
'conditions': [
|
|
['privacy_crypto_impl=="apple"', {
|
|
'link_settings': {
|
|
'libraries': [
|
|
'$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
|
|
'$(SDKROOT)/System/Library/Frameworks/Security.framework',
|
|
],
|
|
},
|
|
}],
|
|
],
|
|
}], # end else
|
|
['oemcrypto_adapter_type=="dynamic"', {
|
|
'sources': [
|
|
'../core/src/oemcrypto_adapter_dynamic.cpp',
|
|
],
|
|
}],
|
|
['oemcrypto_adapter_type=="static"', {
|
|
'sources': [
|
|
'../core/src/oemcrypto_adapter_static.cpp',
|
|
],
|
|
}],
|
|
['oemcrypto_adapter_type=="static_v16"', {
|
|
'sources': [
|
|
'../core/src/oemcrypto_adapter_static.cpp',
|
|
'../core/src/oemcrypto_adapter_static_v17.cpp',
|
|
],
|
|
}],
|
|
['has_dual_key=="true"', {
|
|
'defines': ['HAS_DUAL_KEY'],
|
|
}],
|
|
['support_ota_keybox_functions=="false"', {
|
|
'sources': [
|
|
'../core/src/oemcrypto_ota_stubs.cpp',
|
|
],
|
|
}],
|
|
],
|
|
}, # widevine_cdm_core target
|
|
{
|
|
# This is the widevine_ce_cdm built as a static library. This name does
|
|
# not mean that it uses oemcrypto's static adapter. Control over which
|
|
# adapter is used comes from the settings file for the platform.
|
|
'toolsets' : [ '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',
|
|
],
|
|
'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',
|
|
],
|
|
'conditions': [
|
|
['embedded_cert!=""', {
|
|
'actions': [{
|
|
'action_name': 'generate_cert',
|
|
'msvs_cygwin_shell': 0,
|
|
'message': 'Generating cert.cc',
|
|
'inputs': [
|
|
'create_cert_cc.py',
|
|
'<(embedded_cert)',
|
|
],
|
|
'outputs': [
|
|
'<(INTERMEDIATE_DIR)/cert.cc',
|
|
],
|
|
'action': [
|
|
'python3',
|
|
'>@(_inputs)',
|
|
'>@(_outputs)',
|
|
],
|
|
}],
|
|
'sources': [
|
|
'<(INTERMEDIATE_DIR)/cert.cc',
|
|
],
|
|
'defines': ['HAS_EMBEDDED_CERT'],
|
|
}], # embedded_cert!=""
|
|
|
|
# This block defines preprocessor values that match the client
|
|
# information variables in platform properties.gypi. If you are writing
|
|
# your own build files to build CE CDM insted of using these GYP files
|
|
# and you are using compile-time client info, make sure to define these
|
|
# values, following the rules in the client info section in
|
|
# platform_properties.gypi.
|
|
['client_info_source=="compiled"', {
|
|
'defines': [
|
|
'CLIENT_COMPANY_NAME="<(client_company_name)"',
|
|
'CLIENT_MODEL_NAME="<(client_model_name)"',
|
|
'CLIENT_MODEL_YEAR="<(client_model_year)"',
|
|
'CLIENT_PRODUCT_NAME="<(client_product_name)"',
|
|
'CLIENT_DEVICE_NAME="<(client_device_name)"',
|
|
'CLIENT_ARCH_NAME="<(client_arch_name)"',
|
|
'CLIENT_PLATFORM="<(client_platform)"',
|
|
'CLIENT_FORM_FACTOR="<(client_form_factor)"',
|
|
'CLIENT_VERSION="<(client_version)"',
|
|
],
|
|
}], # client_info_source=="compiled"
|
|
|
|
['client_info_source=="runtime"', {
|
|
'defines': [
|
|
'RUNTIME_CLIENT_INFO',
|
|
],
|
|
'dependencies': [
|
|
'<(read_client_info_path)',
|
|
],
|
|
}], # client_info_source=="runtime"
|
|
], # conditions
|
|
}, # widevine_cdm_static target
|
|
{
|
|
'toolsets' : [ 'target' ],
|
|
'target_name': 'widevine_ce_cdm_shared',
|
|
'type': 'shared_library',
|
|
'dependencies': [
|
|
'widevine_ce_cdm_static',
|
|
],
|
|
'direct_dependent_settings': {
|
|
'include_dirs': [
|
|
'include',
|
|
],
|
|
},
|
|
},
|
|
{
|
|
'toolsets' : [ 'target' ],
|
|
'target_name': 'dummy',
|
|
'type': 'none',
|
|
},
|
|
],
|
|
}
|