# 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 }