Files
ce_cdm/cdm/platform_properties.gypi
2024-03-28 19:15:22 -07:00

219 lines
9.7 KiB
Python

# Copyright 2020 Google LLC. All Rights Reserved. This file and proprietary
# source code may only be used and distributed under the Widevine License
# Agreement.
# This file contains all the variables that Widevine exposes for integration
# partners to customize in their platforms' settings.gypi files. Partners will
# usually need to override some or all of these variables in the 'variables'
# section of their platform's settings.gypi file.
#
# This file is included into multiple GYP files throughout the project. Those
# files may also define their own variables. However, variables defined outside
# this file are *not* intended to be overridden by integration partners. If
# your device requires overriding a variable from outside this file, please let
# Widevine know so that we can evaluate whether it should be included in this
# file or whether there is a better way to achieve what you are trying to
# achieve.
{
'variables': {
# Choose whether the client information is compiled into the binary at
# compile-time or whether it is gathered by the CDM at runtime. The client
# information ends up as client identification in license requests. All
# values may be used by a license server proxy to drive business logic.
# Valid values are:
#
# 'compiled' - The client information is read from the platform properties
# and compiled into the CE CDM binary. The platform properties
# that define client info must be defined.
#
# 'runtime' - The client information is read at runtime using
# read_client_info.h. The property 'read_client_info_path' must
# also be defined, pointing to a GYP target that provides an
# implementation of read_client_info.h.
'client_info_source%': 'compiled',
# The following variables define the client info that is baked into the CDM
# binary at build-time. If 'client_info_source' is 'compiled'. You *must*
# set meaningful values for all of these variables as part of defining your
# platform. Values may not contain double quotes, percent signs, or the
# substring " | ". (a vertical pipe surrounded by spaces) If
# 'client_info_source' is 'runtime', these variables are ignored.
# The name of the company who makes the client, e.g. "KubrickTech".
# This should match the "Make" field in the Widevine Integration Console.
#'client_company_name%': '',
# The client's model name, e.g. "HAL 9000".
# This should match the "Model" field in the Widevine Integration Console.
#'client_model_name%': '',
# The client's model year, e.g. "2001".
# Can be used to distinguish different devices with the same model name.
# This should match the "Year" field in the Widevine Integration Console.
#'client_model_year%': '',
# The name or codename of the product or application, e.g. "clarke".
# This may be the same as "client_model_name".
#'client_product_name%': '',
# The name or codename of the client, e.g. "HAL".
# This may be the same as "client_model_name" or "client_product_name".
#'client_device_name%': '',
# The CPU architecture of the client, e.g. "ARMv7".
#'client_arch_name%': '',
# The OS platform of the client, e.g. "Linux".
# This should match the "Platform" field in the Widevine Integration
# Console.
#'client_platform%': '',
# The form factor of the client, e.g. "TV".
# This should match the "Type" field in the Widevine Integration Console.
#'client_form_factor%': '',
# The version number of the client that the CE CDM is integrated into. This
# is the operating system or app version, not the CDM version.
#'client_version%': '',
# If 'client_info_source' is 'runtime', this variable must be set to the
# path to a GYP target that provides an implementation of
# read_client_info.h. This implementation will be compiled into the CDM and
# used at runtime to get the client info. If 'client_info_source' is
# 'compiled', this variable is ignored.
'read_client_info_path%': '',
# Choose type of OEMCrypto library to compile in. Valid values are:
#
# 'vendor' - Production Level 1 systems should use 'vendor' to indicate that
# they are providing their own OEMCrypto library and the Widevine
# CE CDM build system is not responsible for building anything.
#
# 'level3' - Partners who have received a Widevine-generated Level 3 library
# should use 'level3' to indicate that the Widevine CE CDM build
# system should include it in the build.
#
# 'target' - If your vendor OEMCrypto is built using GYP and you would like
# the Widevine CE CDM build system to build it as part of the CE
# CDM build process, you can use 'target' and also set the
# variable 'oemcrypto_gyp_path' below. Most vendors will want to
# use 'vendor', above, instead. This setting exists primarily for
# Google's internal testing.
#'oemcrypto_lib%': '',
# You only need to set this value if you set 'oemcrypto_lib' to 'target'
# above.
#'oemcrypto_gyp_path%': '',
# Choose the oemcrypto adapter type. Valid values are:
#
# 'static' - (default). Statically link oemcrypto into the tests.
# other values - for internal testing.
'oemcrypto_adapter_type%': 'static',
# Whether to include OTA Keybox functionality or not. This is an optional
# feature that is only used a few platforms. Generally, to qualify as an L1
# device, a keybox must be installed on the device in the factory.
# Valid values are 'true' or 'false'.
'support_ota_keybox_functions%': 'false',
# Compile with clang source based code coverage tool when run a code coverage
# build by set this to true.
'generate_code_coverage_report%': 'false',
# 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
# * x64 or 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',
# Although OEMCrypto is used to perform secure crypto operations, the
# Widevine CE CDM also needs a crypto library to perform non-secure crypto
# operations for Privacy Mode and Provisioning 3.0. By default, the copy
# of BoringSSL in third_party/boringssl/ is compiled statically into the CE
# CDM with hidden linkage. However, by overriding these values, partners can
# choose to use other crypto libraries.
#
# Valid values are:
# * boringssl
# * openssl
# * dummy
#
# If this option is set to 'dummy', the CDM will compile, but Privacy Mode
# and Provisioning 3.0 will always fail.
#
# Some of these libraries can be further configured with the options that
# follow this one.
'privacy_crypto_impl%': 'boringssl',
# BoringSSL Configuration
# These options are only relevant if privacy_crypto_impl is 'boringssl'.
#
# When using BoringSSL, the Widevine CE CDM defaults to the copy of
# BoringSSL in third_party/boringssl/. If you have an alternative BoringSSL
# GYP build, you can override these variables to point to it instead.
'boringssl_libcrypto_path%': '<(DEPTH)/third_party/boringssl/boringssl.gyp:crypto',
'boringssl_libssl_path%': '<(DEPTH)/third_party/boringssl/boringssl.gyp:ssl',
# 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_path.
# Specify the protoc gyp file and target in protoc_host_path.
# Specify the path to protoc in protoc_bin.
#
# 3) protobuf_config == 'source' (default)
# Build protobuf and protoc from the copy in third_party/protobuf.
'protobuf_config%': 'source',
'protobuf_lib%': '',
'protoc_bin%': '',
'protobuf_lib_path%': '',
'protoc_host_path%': '',
# Protobuf Generation and Build configurations:
#
# These options allow for different build steps to be specified for proto
# cc file generation than the default step. This can be used to customize
# cc file generation or add additional cc file processing steps before
# proto cc files are built.
#
# The directory where proto cc files that will be compiled are located.
'proto_cc_dir%': '<(SHARED_INTERMEDIATE_DIR)/protoc_out',
# The directory where proto cc files generated from proto files will be
# located.
'proto_gen_dir%': '<(SHARED_INTERMEDIATE_DIR)/protoc_out',
# Path to the GYP file that contains the proto cc file generation targets.
# This file must provide the following targets:
# - generate_license_protocol
# - generate_device_files
# - generate_metrics_proto
'proto_gen_gyp_path%': '<(DEPTH)/third_party/generate_proto_cc.gyp',
}, # variables
}