# Copyright 2022 Google LLC. All Rights Reserved. This file and proprietary # source code may only be used and distributed under the Widevine License # Agreement. { # Here you can override global gyp variables with platform-specific values. # See cdm/platform_properties.gyp for a complete list of settings you can # override. 'variables': { 'oemcrypto_lib': 'target', 'oemcrypto_gyp_path': '../example/oemcrypto.gyp:oemcrypto', 'client_info_source': 'runtime', 'read_client_info_path': 'read_client_info.gyp:read_client_info', 'asm_target_arch': 'x86-64', }, # end variables # Here you can set platform-specific compiler settings. 'target_defaults': { # These are flags passed to the compiler for all C & C++ files. 'cflags': [ '-fPIC', '-fvisibility=hidden', '-fno-common', '-Wno-error', # This flag is not supported on GCC, but Widevine strongly encourages # using it if you are building with Clang. # '-ftrivial-auto-var-init=pattern', ], # These are flags passed to the compiler for plain C only. 'cflags_c': [ # Compile using the C11 standard with POSIX extensions '-std=c11', '-D_POSIX_C_SOURCE=200809L', ], # These are flags passed to the compiler for C++ only. 'cflags_cc': [ # Compile using the C++17 standard. '-std=c++17', # CE CDM does not use exceptions or RTTI. '-fno-exceptions', '-fno-rtti', ], # These are flags passed to the linker. 'ldflags': [ #'-static-libstdc++', ], # These are macros set by the compiler. 'defines': [ #'EXAMPLE_MACRO_WITH_NO_VALUE', #'EXAMPLE_KEY=EXAMPLE_VALUE', ], # These are additional include paths to search for headers. 'include_dirs': [ #'/toolchain/include', ], 'target_conditions': [ # Most of the build output is compiled for the target device, but the # build may also sometimes compile files for the host device. For # instance, if you compile Protobuf from source, the "protoc" compiler # will be compiled for your host machine and used as part of the build # process. # # These conditional blocks let you set compiler flags and other settings # that should only apply on the target or host platforms. ['_toolset == "target"', { # These are additional settings specifically for the target toolchain. 'cflags': [], 'cflags_c': [], 'cflags_cc': [], 'ldflags': [], 'defines': [], 'include_dirs': [], }], # end _toolset == "target" ['_toolset == "host"', { # These are additional settings specifically for the host toolchain. 'cflags': [], 'cflags_c': [], 'cflags_cc': [], 'ldflags': [], 'defines': [], 'include_dirs': [], }], # end _toolset == "host" ], # end target_conditions 'configurations': { # These are additional settings per build configuration. # You may specify any of the keys above in this section # (cflags, cflags_c, cflags_cc, ldflags, defines, include_dirs). # # You are also not limited to the names "debug" and "release". You may use # any names you like. The configuration will be used if you pass its name # to build.py's "--config" or "-c" flag. However, "debug" and "release" # have convenient shorthand flags. ("--debug"/"-d" and "--release"/"-r") 'debug': { 'cflags': [ '-g3', '-Og', ], 'defines': [ # Widevine strongly recommends defining _DEBUG on debug builds '_DEBUG', '_GLIBCXX_DEBUG', ], }, 'release': { 'cflags': [ '-O2', '-g0', ], 'defines': [ # Widevine strongly recommends defining NDEBUG on release builds 'NDEBUG', ], 'ldflags': [ '-flto', '-s', ], }, }, # end configurations }, # end target_defaults }