# 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', }, ], }