# Copyright 2020 Google LLC. All Rights Reserved. This file and proprietary # source code may only be used and distributed under the Widevine Master # 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 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. # # 'ref' - The default value of 'ref' builds the OEMCrypto reference code, in # order to allow the CE CDM to build without a vendor integration. # This setting should *NEVER* be used in production systems and is # for testing purposes only. # # '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_target' below. Most vendors will want # to use 'vendor', above, instead. This setting exists primarily # for Google's internal testing. 'oemcrypto_lib%': 'ref', # You only need to set this value if you set 'oemcrypto_lib' to 'target' # above. 'oemcrypto_gyp_target%': '', # 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', # 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', # 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%': '../third_party/boringssl/boringssl.gyp:crypto', 'boringssl_libssl_path%': '../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_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 }